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


26

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

Investigar este tema resultó en un abrumador número de enfoques posibles y me dejó bastante confundido. Lo que estoy buscando 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 muy 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 de OSM se parecen a lo que estoy buscando (¿o hay una mejor solución)? ¿Cuál sería la mejor manera de crear estos mosaicos?


2
¿Tiene que ser una solución basada en ráster (mosaicos web)? ¿Estaría bien para una solución vectorial?
Mapperz

No, en absoluto. Solo pensé que sería la forma más fácil (crear mosaicos, crear index.htm o bloque de código para pegar en la página web existente, copiar al directorio del servidor, listo). Trabajé con GMapCreator una vez antes en un proyecto privado, y fue una forma muy rápida de hacer las cosas.
SAnderka

¿Cuántos polígonos tienes en tu shapefile? Si es inferior a 1000, tal vez el comentario de @ Mapperz sobre una solución vectorial sea el camino a seguir. La solución más simple es utilizar la API de Google Maps para dibujar polígonos y crear ventanas emergentes de información, sin necesidad de crear y almacenar imágenes en mosaico no interactivas. Las imágenes en mosaico de un mapa son las mejores para obtener información muy densa, como mostrar imágenes de satélite, carreteras o límites del tramo censal.
b_dev

Respuestas:


13

Para una forma simple de hacer esto comenzando con QGIS, puede usar QGIS Mapserver, que puede servir mapas que diseñe utilizando la interfaz QGIS normal. Alternativamente, es posible que desee utilizar GeoServer, que está basado en Java y probablemente sea más fácil de instalar. Dado que ambos programas sirven mapas usando estándares abiertos si comienza con uno y necesita cambiar más tarde, no es necesario cambiar el cliente.

Una vez que tenga un sistema configurado para servir mapas WMS, querrá un cliente front-end. Recomiendo OpenLayers, ya que es bastante sencillo comenzar y fácilmente expandible. Maneja 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 recibir más de 50-100 solicitudes por minuto en hardware razonable) y luego querrá considerar colocar un caché de mosaicos frente al servidor de mapas. Si usó GeoServer, puede usar GeoWebCache que está integrado o puede usar TileCache .


Mi problema es que estoy trabajando como asesor independiente dentro de una administración municipal en este momento. El personal local de TI es bastante testarudo e intenta mantener todo tipo de material de fuente abierta "sospechoso" de sus máquinas (luché una batalla larga y larga por QGIS). Por lo tanto, realmente me gustaría evitar cualquier solución que deba instalarse como un "software" en el espacio web del municipio.
SAnderka

La solución de mis sueños sería algo que pueda preparar por mi cuenta y simplemente copiar en su espacio web, insertar en el código html / JS y listo. Si se trata de datos ráster o vectoriales realmente no cuenta al final. Soy el único que comprende la diferencia técnica de todos modos ... Y a todos los demás les importa una presentación agradable y fácil de nuestros datos para nuestros ciudadanos.
SAnderka

1
solo necesita explicarles que el mapeo web no es algo que pueda hacer fácilmente sin software. Claro que puede lanzar algunos mosaicos simples en un servidor web, pero no se verá bien a todas las escalas, es difícil de mantener y es difícil agregar características cuando el alcalde quiere más.
Ian Turton

Entonces, busqué en Geoserver (como parte del paquete Open Geo Suite), y se ve bastante bien. Importé mi shapefile, lo diseñé, incluso obtuve la vista previa ejecutándose en localhost. Pero, ¿cómo consigo estos mapas en línea en mi espacio web? ¿Me estoy perdiendo de algo? Los marcadores, etc., obviamente no funcionarán, ya que se refieren a mi disco duro local. Me abrí paso a través de todos los tutoriales posibles y cómo, pero ese tema nunca parece discutirse. ¿Podría alguien señalarme en la dirección correcta?
SAnderka

coloca GeoServer en su servidor web y copia el directorio de datos de su máquina local a la máquina remota.
Ian Turton

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 muy 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 ogr2layerscomplemento. El flujo de trabajo es simple:

  1. Diseñe sus datos en QGIS. Use la antigua simbología ya que tuve problemas con el New Symbologyuso del ogr2layerscomplemento.

  2. Inicie el ogr2layerscomplemento y defina la configuración de las capas abiertas (como el tamaño del mapa, los controles del mapa, el mapa base, etc.). Esto creará un directorio que contiene las index.htmlcapas de datos y sus convertidas como geojsonarchivos.

  3. Cargue el directorio en el servidor web.

Tenga en cuenta que esto es solo para un mapa web simple. Para crear mapas base personalizados y otras funciones de mapeo web, consulte las respuestas de iant y Peter.


1
Un mapa web simple significa que todavía se puede ampliar y desplazar, ¿sí? Eso suena como algo que debería investigar cuando regrese a mi oficina.
SAnderka


6

Otra opción es TileMill : admite mosaico, interacción y cartografía en una interfaz web fácil de usar, que incluye definiciones de estilo en un lenguaje proto-CSS llamado cascadenik . Con TileMill, puede crear archivos 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 le daría una buena plataforma para generar mosaicos de alta calidad.


Mire su video de demostración en la página principal, ¡es muy impresionante!
joshdoe

6

Decidí proporcionar información sobre la forma en que finalmente elegí mi servicio de mapas en mosaico. JavaScript puro y GeoJSON no eran una solución, porque tengo que manejar aproximadamente 40k polígonos y 33k puntos. Así que fui por el embaldosado. 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 factible para un solo cliente en este momento)

Después de un poco de investigación y lectura, finalmente me decidí por OpenLayers (después de algunas exhibiciones con GMaps). El gran libro de Eric Hazzard "OpenLayers 2.10" (Packt Publishing, 2011) realmente, 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 sobre ArcGIS de la universidad, pero QGIS ha estado ofreciendo todo lo que necesitaba hasta ahora).

Diseñar el mapa y crear los mosaicos fue un desafío mayor. Primero, utilicé " GMapCreator " de CASA, pero poner en capas múltiples archivos de forma resultó tedioso (tengo que proporcionar datos de puntos sobre polígonos, y luego un límite municipal que lo encierra todo). Es absolutamente posible hacer esto en GMapsCreator (y lo hice para la etapa de presentación), pero se necesitan 3 ciclos completos de renderizado (primero se crean mosaicos, luego los mosaicos existentes se "sobregiran" con características posteriores, renderizando 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 similar a CSS, así que lo investigué . Desafortunadamente, es solo Mac o Linux, por lo que eso puede asustar a algunas personas. Realmente me gustó 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 de estilo a veces es 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 cierta comprensión básica de CSS realmente debería llevarlo a donde desea ir.

Al final, TileMill representa un bonito archivo * .mbtiles único. No creo que haya una manera de mostrarlos directamente en OpenLayers (¿al menos no pude encontrar uno?), Así que era hora de usar otra herramienta: mbutil . Esta herramienta "descomprime" el archivo mbtiles en una estructura de carpeta normal que contiene los pngs en mosaico de mis datos en los niveles de zoom seleccionados.

Finalmente, cargué todos estos archivos en mi servidor FTP, leí un poco en OL para poner en marcha mi mapa web (agrega los mosaicos creados como una capa TMS, pero adivinar la URL de origen correcta y el nombre de la capa tomó algo de tiempo y googlear) y luego quemé algunas horas jugando con problemas básicos de html / CSS. Quería un mapa de ancho / alto del 100% con una leyenda flotante siguiendo las pautas de identidad "corporativas" (es un municipio, como se mencionó) de mis clientes.

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

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


Tilemill ahora también está disponible para Windows. También hay un hilo relativamente reciente en la lista de correo de usuarios de Openlayers sobre el uso de mbtiles como fuente de datos (no lo he probado).
Matt Wilkie

Ah, gracias, es bueno saberlo. Definitivamente tengo que probar eso, ha sido un poco molesto cambiar entre win7 y ubuntu todo el tiempo.
SAnderka

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 obtener información muy densa, como mostrar imágenes satelitales, carreteras o 50,000 polígonos censales.

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

Si 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 convirtiendo los polígonos del archivo de forma, usando la biblioteca GDAL, en un archivo geoJSON (una forma Javascript de almacenar información geográfica).

O si fue por la ruta de los mosaicos, podría almacenar los mosaicos en Amazonas o en la nube de Google sin problemas internos.

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

¡Buena suerte!


Descubrí que alrededor de 500 puntos tratados como vectores en una sola vista tienden a ralentizar las cosas. Cubrimos todo con más de 500 puntos.
Michalis Avraam

1

Siento por ti amigo, ya que he estado trabajando lentamente para llegar a la misma conclusión. Habiendo aprendido QGIS, probé quantamnik y mapnik. Pero aunque portará el estilo qgis, es un viaje de ida y los sistemas de estilo no son 1 por 1, por lo tanto, debe aprender el estilo mapnik de todos modos. Supongo que lo mismo se aplica a la función de exportación qgis mapserver. No parece haber una "manera fácil" de mejorar la habilidad en el servidor de mapas, simplemente apóyese y permita mucho tiempo.

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

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


2
QGIS MapServer es diferente de MapServer.
Ian Turton

2
Debido a este potencial de confusión, debería llamarse Servidor QGIS.
oscuro
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.