Tengo más de 3000 polígonos que representan cuencas (18 cuencas principales). En la primera etapa, se mostrarán las 18 cuencas hidrográficas y su lista se colocará en la barra lateral izquierda. Si algún usuario pasa el mouse sobre el mapa, solo la ventana emergente mostrará el nombre de la cuenca. Si algún usuario hace clic en cualquier cuenca hidrográfica importante en el mapa, se abrirá una ventana emergente con detalles. Con un zoom más grande, se mostrarán todas las cuencas hidrográficas.
Le pido su consejo, ¿qué solución de código abierto es la mejor para manejar esa gran cantidad de polígonos?
Estaba pensando en Leaflet o OpenLayers, pero no sé si pueden manejar grandes cantidades de polígonos.
Además, ¿sugiere que los almacene en mysql o?
fuente
Respuestas:
Crearía un servicio de imágenes (capa ráster) y lo entregaría con el Servicio de mapas web (WMS) . De esta manera, puede usar cualquier marco de API con el que se sienta cómodo siempre que sea compatible con WMS ( OpenLayers lo hace ). Puede usar WMS para mostrar una capa de todas las características de polígono y luego usar el clic en GetFeatureInfo de WMS para obtener información sobre ese polígono.
Si por algún motivo necesita los datos vectoriales en el mapa, puede crearlos dinámicamente al hacer clic con los datos de respuesta GetFeatureInfo.
fuente
Vea TileMill , que puede rasterizar la interacción UTFGrid en un archivo MBTiles y alojarlo en MapBox o en una implementación de servidor MBTiles de código abierto como TileStache .
Aquí está con montones y montones de polígonos . Este enfoque requiere que rasterice, también conocido como hornear, mosaicos, pero es esencialmente la única forma de hacer lo que quiere sin tener recursos masivos de servidor, una aplicación personalizada o un conjunto muy restringido de navegadores.
fuente
La dependencia de escala y una base de datos indexada espacialmente serán clave para este problema. Debe poder representar cuencas hidrográficas utilizando al menos dos, posiblemente tres o cuatro niveles. Por ejemplo, podría dividir los datos en Mayor (18), Menor (alguna combinación de todas las cuencas hidrográficas de escala media que caen dentro del mismo Mayor) y Terciario (los 3000 polígonos). Esto le daría tres capas / servicios de vectores diferentes.
Use la dependencia de escala para dibujar solo el servicio apropiado según el nivel de zoom del usuario.
Use una base de datos con indexación espacial para garantizar que los servicios se dibujen rápidamente y dibuje solo la parte necesaria para llenar la ventana de vista actual.
Alternativamente, podría considerar la creación de mosaicos de los mapas de cuencas hidrográficas (nuevamente, creado en base a escalas apropiadas para cada capa) y servirlos de esa manera.
Ya existen muchas preguntas en este sitio que recomiendan soluciones apropiadas de código abierto para emplear estas estrategias.
fuente
Además de TileMill, puede consultar MangoMap , no es de código abierto, pero actualmente es gratuito y es capaz de manejar este tipo de datos.
[Descargo de responsabilidad: trabajo con MangoMap, pero respondo porque es apropiado en este caso]
fuente