Creando un pequeño servicio de mapeo web / mosaico de mapas

26

Estoy buscando una forma sencilla y en pequeña escala para presentar uno o más shapefiles de polígonos en línea (en un sitio web municipal sin ninguna infraestructura de servidor de mapas existente, para ser más precisos). En este momento, estoy haciendo todo el trabajo con QGIS, y preferiría seguir siendo de código abierto (no queda presupuesto para ninguna gran inversión en software).

La investigación de este tema dio como resultado un número abrumador de posibles enfoques y me dejó bastante confundido. Lo que busco es

  • poder mostrar polígonos categorizados en un mapa temático (- si es posible, sería bueno obtener ventanas emergentes o poder recuperar información de atributos, pero eso es altamente opcional)
  • Preferiría hacer la mayoría del trabajo (estilo, etc.) en QGIS
  • OSM como mapa base estaría perfectamente bien

Hasta ahora, los mosaicos de mapas personalizados en un mapa base OSM se parecen a lo que estoy buscando (¿o hay una solución mejor)? ¿Cuál sería la mejor manera de crear estos mosaicos?

    
pregunta SAnderka 18.05.2011 - 15:48

6 respuestas

13

Para una forma sencilla de hacer esto comenzando con QGIS, puede usar QGIS Mapserver que puede servir los mapas que Diseño utilizando la interfaz QGIS normal. Alternativamente, es posible que desee ir con GeoServer , que está basado en Java y probablemente sea más fácil de instalar. Dado que ambos programas sirven mapas que utilizan estándares abiertos, si comienza con uno y necesita cambiar más adelante, no hay necesidad de cambiar el cliente.

Una vez que tenga un sistema configurado para entregar mapas WMS, querrá un front-end de cliente. Recomiendo OpenLayers ya que es bastante simple para comenzar y es fácilmente expandible. Maneja los mosaicos WMS, WMST y OSM sin problemas.

En última instancia, es posible que deba pasar a los mosaicos para sus capas WMS (digamos que comienza a obtener más de 50-100 solicitudes por minuto en hardware razonable), entonces querrá ver poner una caché de mosaicos frente al mapa. servidor. Si usó GeoServer, entonces puede usar GeoWebCache que está integrado o puede usar TileCache .

    
respondido por el Ian Turton 18.05.2011 - 16:13
8
  

poder mostrar polígonos categorizados en un mapa temático (- si es posible, sería bueno obtener ventanas emergentes o poder recuperar información de atributos, pero eso es altamente opcional)

     

Preferiría hacer la mayoría del trabajo (estilo, etc.) en QGIS

     

OSM como mapa base estaría perfectamente bien

Todo esto se puede hacer dentro de QGIS y el complemento ogr2layers . El flujo de trabajo es simple:

  1. Diseñe sus datos en QGIS. Utilice la antigua simbología, ya que tuve problemas con el New Symbology al usar el complemento ogr2layers .

  2. Inicie el complemento ogr2layers y defina la configuración de Openlayers (como el tamaño del mapa, los controles del mapa, el mapa base, etc.). Esto creará un directorio que contiene index.html y sus capas de datos se convertirán como archivos geojson .

  3. Suba el directorio al servidor web.

Tenga en cuenta que esto es solo para mapas web simples. Para crear mapas base personalizados y otras funciones de mapas web, revise las respuestas de Peter y de iant.

    
respondido por el maning 19.05.2011 - 06:39
6

Otra opción es TileMill : admite el mosaico, la interacción y la cartografía en una interfaz basada en web fácil de usar, incluidas las definiciones de estilo en un El lenguaje proto-CSS se llama cascadenik . Usando TileMill, puede desplegar archivos de mbtiles que se pueden consumir con algo como TileStream . Dicho esto, todavía hay algunos trucos con la implementación de las salidas asignadas, pero esto te dará una buena plataforma para generar mosaicos de alta calidad.

    
respondido por el scw 19.05.2011 - 11:10
6

Decidí proporcionar información sobre la forma en que finalmente fui a mi servicio de mapas en mosaico. Pure JavaScript y GeoJSON no eran una solución, porque tengo que manejar aproximadamente 40k polígonos y 33k puntos. Así que me fui para el mosaico. Ah, y todavía no tengo acceso al servidor raíz, por lo que no puedo configurar GeoServer o algo similar (no sería financieramente viable para un solo cliente en este momento)

Después de algunas investigaciones y lecturas, finalmente me conformé con OpenLayers (después de algunas exhibiciones con GMaps). El gran libro de Eric Hazzard "OpenLayers 2.10" (Packt Publishing, 2011) realmente me ayudó mucho porque también cubre algunos conceptos básicos de JavaScript y consejos de depuración.

Hice todo mi trabajo de datos vectoriales en QGIS, por supuesto, ese es definitivamente el camino a seguir para un pequeño profesional independiente como yo (también sé bastante de ArcGIS en la universidad, pero QGIS ha estado ofreciendo todo lo que he necesitado hasta ahora ).

Estilizar el mapa y crear los mosaicos fue un desafío mayor. Primero, acepté " GMapCreator " de CASA, pero la combinación de múltiples shapefiles demostró ser tediosa (Tengo que proporcionar datos de puntos sobre polígonos, y luego un límite municipal que encierra todo). Es absolutamente posible hacer esto en GMapsCreator (y lo hice para el escenario de exhibición), pero toma 3 ciclos completos de renderización (primero se crean mosaicos, luego los mosaicos existentes se "sobregiran" con características posteriores, representándose en el orden correcto es importante!), y los menús de estilo son un poco voluminosos y confusos. Guardar el mapa y editarlo más tarde también es un problema complicado.

TileMill parecía muy prometedor, especialmente su estilo de estilo CSS, así que lo examiné. Desafortunadamente, es solo para Mac o Linux, por lo que puede asustar a algunas personas. Me gustó mucho lo que vi, así que configuré una partición de Ubuntu en mi disco duro, la descargué y diseñé mis mapas. La documentación sobre la sintaxis del estilo es a veces un poco escasa, pero ver su video de demostración (vinculado en el sitio principal) responde a casi todo. Es posible hacer algunas cosas interesantes con estilos anidados y / o condicionales, y un poco de comprensión básica de CSS realmente debería llevarte a donde quieres ir.

Al final, TileMill presenta un archivo agradable * .mbtiles. No creo que haya una forma de mostrarlos directamente en OpenLayers (¿al menos no puedo encontrar una?), Así que era hora de usar otra herramienta: mbutil . Esta herramienta "descomprime" el archivo mbtiles en una estructura de carpetas regular que contiene los paquetes de mis datos en mosaico en los niveles de zoom seleccionados.

Finalmente, cargué todos estos archivos en mi servidor FTP, hice una lectura exhaustiva en OL para hacer que mi mapa web estuviera en marcha (usted agrega los mosaicos creados como una capa TMS, pero adivinando la url de fuente correcta y el nombre de la capa algo de tiempo y google) y luego quemó algunas horas jugando con los problemas básicos de html / CSS. Quería un mapa 100% ancho / alto con una leyenda flotante siguiendo las pautas de identidad "corporativas" (es un municipio, como se mencionó).

Ah, y hasta ahora uso Google Maps como capas base, pero eso podría ser reemplazado pronto por algunas imágenes aéreas personalizadas a través de WMS (no provistas por mí, sino por la encuesta estatal y la administración de geodatos).

Espero no haber olvidado nada importante, pero si lo hice, ¡no dude en preguntar! Revisaré este hilo ocasionalmente.

    
respondido por el SAnderka 25.07.2011 - 15:46
3

Si tiene menos de 1000 polígonos, considere el comentario de @ Mapperz sobre una solución vectorial; no es necesario crear y almacenar imágenes en mosaico no interactivas si solo tiene unos pocos polígonos.

Las imágenes en mosaico son óptimas para información altamente densa, como mostrar imágenes satelitales, carreteras o 50,000 polígonos del censo.

La solución más simple para una pequeña cantidad de polígonos es convertir el shapefile en un KML y subirlo a Google My Maps.

Si usted codifica en Javascript, la solución más interactiva es la API de Google Maps (o OpenLayers) para dibujar polígonos y crear ventanas emergentes de información. Puede comenzar por convertir los polígonos de shapefile, usando la biblioteca GDAL, en un archivo geoJSON (una forma de Javascript de almacenar información geográfica).

O si eligió la ruta de mosaicos, podría almacenar mosaicos en Amazon o en la nube de Google sin problemas internos.

Esta entrada del blog de Mapeo Temático tiene un buen resumen de las ventajas de Enfoque vectorial sobre el enfoque de mosaicos que estás considerando.

¡Buena suerte!

    
respondido por el b_dev 13.06.2011 - 07:27
1

Lo siento por tu compañero, ya que he estado trabajando lentamente en mi camino hacia la misma conclusión. Habiendo aprendido QGIS, probé quantamnik y mapnik. Pero si bien portará el estilo qgis es un viaje de ida y los sistemas de estilo no son 1 por 1, por lo tanto, tiene que aprender el estilo mapnik de todos modos. Supongo que lo mismo se aplica a la función de exportación de qgis mapserver. Parece que no hay una "manera fácil" de mejorar las habilidades en el servidor de mapas, solo hay que abatirlo y permitir mucho tiempo.

Mapnik, geoserver, mapserver, parece que hay devotos de cada uno, pero mapserver parece ser el camino intermedio.

Habiendo dicho que hay un atajo que encontré y que es qgis tiene una opción de línea de comandos para rasterizar un mapa qgis a la resolución y los límites de su elección, y crea un archivo de mundo. Con esto puedes usar maptiler o gdal2tiles para colocar una capa a la vez. Obviamente, no sería bueno para 20 niveles de zoom, ni tampoco sé cuál es el límite de tamaño máximo de png.

    
respondido por el Peter 19.05.2011 - 05:16

Lea otras preguntas en las etiquetas