¿Representar imágenes en OpenLayers?


11

Mi organización tiene una aplicación web para mostrar datos climáticos globales y regionales y estamos considerando mejoras. Nuestra idea principal es crear una aplicación basada en OpenLayers para mostrar rásteres climáticos sobre capas base como OSM o Google Maps. El mapa también puede incluir algunas otras capas vectoriales específicas de la aplicación y una barra de colores u otras características de leyenda que describen los datos. Por lo que puedo decir, todo esto parece factible con OpenLayers.

Sin embargo, un requisito para el proyecto es poder exportar ( idealmente desde la aplicación web) mapas de calidad de publicación (más o menos). Un caso de uso típico sería algo como esto:

  1. Un usuario, utilizando la capa base como guía, navega a su área de interés.
  2. El usuario selecciona un parámetro climático (p. Ej., Temperatura media para la década de 2040) o un conjunto de parámetros
  3. El usuario presiona el botón "exportar" y luego descarga un mapa de buena calidad que incluye todos los elementos descritos en el primer párrafo.

No he podido encontrar nada en OpenLayers sobre renderizar a una imagen. ¿Alguien sabe si esto es posible? Y si no, ¿qué otros enfoques para la representación podríamos tomar? Supongo que necesitaríamos pasar todos los parámetros del mapa (bbox, proyección, capas incluidas, etc.) a algún motor de renderizado externo; ¿Qué motores de renderizado de código abierto existen?


He implementado la exportación como png / pdf y la impresión de mapas de capas abiertas aquí en www.mapsdata.co. Puedes registrarte y comprobar.
Rayiez

Respuestas:


12

Las principales formas de mostrar bonitos mapas impresos de capas abiertas que conozco son:

-Geoservidor con Geoext

-Mapfish con Geoext

Ambas soluciones se basan en una parte de Java (por ejemplo, http://geoserver.org/display/GEOS/Printing+in+GeoServer o http://www.mapfish.org/doc/print/ )

-Openlayers independientes (Ver el documento oficial http://trac.openlayers.org/wiki/Printing )

Más recientemente, una técnica parece representar la imagen con PhantomJS (un navegador de simulación de software desde la línea de comandos) http://acuriousanimal.com/blog/2012/09/17/creating-static-maps-in-openlayers-using-phantomjs/

Algunas bibliotecas recientes usan las capacidades de representación de Canvas del navegador para "capturar" imágenes como este ejemplo de OpenLayers 3 o este folleto



2

Para obtener la "calidad de publicación", desea 300 ppp, por lo que el uso de los mapas que pasa para abrir las capas para la representación de la pantalla probablemente no sea un comienzo.

La pestaña de exportación de OpenStreetMap usa OpenLayers para seleccionar lo que desea exportar, pero luego lo procesa con un proceso de servidor de fondo separado (en realidad, una opción de varios). Este es probablemente el enfoque que tendrá que tomar. Es poco probable que pueda utilizar Google Maps para esto.


Bueno, "calidad de publicación" probablemente significaría svg o algún otro formato vectorial. Y cuando lo pongo en esos términos, me hace pensar que, sí, probablemente querremos usar Mapnik o algo para representar un mapa base del archivo planet.osm. Entonces podríamos usar alguna biblioteca de imágenes para superponer los otros elementos (ráster climático, elementos de leyenda, atributos). Tiene razón en que Gmaps probablemente esté fuera del exportador (por una variedad de razones técnicas y no técnicas). De todos modos, gracias por todas las respuestas.
Hiebert
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.