Al usar Leaflet para visualizar un gran conjunto de datos (GeoJSON con características de 10,000 puntos), no sorprende que el navegador se bloquee o se cuelgue. Una submuestra de 1000 características del mismo conjunto de datos funciona a la perfección. Lamentablemente, no puedo compartir el conjunto de datos para que otros lo prueben.
¿Alguien tiene mejores soluciones para visualizar conjuntos de datos tan grandes? (el objetivo final es escalar esto a 2 millones de funciones) Incluso estoy dispuesto a considerar los marcos de visualización fuera de línea en caso de que las alternativas basadas en navegador como Polymaps o d3.js, etc. se consideren incapaces.
Editar: Olvidé mencionar que el usuario debe poder filtrar el conjunto de datos por atributos. Entonces, de las N funciones, solo las funciones n <= N coincidentes pueden necesitar ser renderizadas dinámicamente.
Respuestas:
Soy el autor del folleto. Hay un plugin de agrupación impresionante para esto, Leaflet.markercluster . Es muy rápido y eficiente (eche un vistazo al ejemplo de los marcadores de 50k), se ve y funciona muy bien con animaciones agradables, y tiene muchas opciones para satisfacer sus necesidades.
fuente
PruneCluster
ve prometedor.Puede usar TileMill y renderizar puntos como imágenes ráster, con una interactividad rápida desde UTFGrid . Se escala a millones de puntos y polígonos, como este mapa censal , ya que envía de manera inteligente solo los datos necesarios para áreas específicas, exactamente cuando es necesario.
Hasta donde sé, no hay otros métodos rápidos para hacer esto que no sea tener un servidor WFS muy rápido, que es bastante difícil de mantener / escalar para muchos espectadores.
Divulgación: trabajo para MapBox , escribió un poco del código. Pero TileMill es gratuito / de código abierto, etc.
fuente
¿Has mirado en el grupo de folletos? Una publicación de blog del autor lo describe aquí.
Otra opción que vale la pena echarle un vistazo puede ser usar un folleto en combinación con GIS Cloud . Eche un vistazo a esta demostración para ver cómo maneja muchas geometrías muy rápidamente. Muy impresionante. De ninguna manera estoy afiliado a GISCloud.
fuente
Nunca debe mostrar millones de puntos en un mapa. No solo por los principales problemas de rendimiento, sino también desde la perspectiva del usuario, porque para ellos será muy difícil interpretar estos datos. Utilice algunos medios para agregar los datos (agrupamiento, agregación a áreas de polígonos, etc.) combinados con diferentes tipos de visualización en diferentes niveles de zoom (por ejemplo, muestre los datos de puntos "en bruto" solo en niveles de zoom muy altos y use datos agregados en cualquier otro lugar). Un ejemplo sería un sitio inmobiliario como zillow.com .
fuente
Le sugiero que reduzca la cantidad representada de características de puntos: el ojo humano no podrá ver 10,000 puntos, por no hablar de 2,000,000.
Lo que podría intentar es solicitar dinámicamente el conjunto de datos de un servidor personalizado (que tendría que configurar), por ejemplo
Su servidor luego calcularía qué puntos devolver, dependiendo de lo que el usuario quiera ver en este momento. Según el factor de zoom y el recorte, solo tendrá que devolver un porcentaje muy pequeño de puntos sin empeorar la experiencia del usuario.
Desventajas: configurar un servidor (debe encontrar bibliotecas para filtrar los puntos geográficos) y una representación más lenta (después de cada zoom o arrastre, se debe realizar una solicitud del servidor)
fuente
Tenía soluciones para mapear 50 a 100 millones de registros, necesita usar soluciones del lado del servidor para hacer la cuadrícula y la dinámica. No puede responder en las API de mapas web (Google u otros) para hacer la representación del lado del cliente ...
[http://96.231.36.9:8080/rbgis/google_map.htmlfont>[1] pruebe los enlaces anteriores y vea cómo
fuente