Opciones para mostrar rásteres PostGIS en OpenLayers


12

Esta pregunta es similar a una pregunta anterior sobre la visualización de datos vectoriales en un mapa web. Quiero tener una interfaz web básica que use OpenLayers y pueda mostrar datos ráster que están actualmente en PostGIS, usando un mapa base como google. He instalado PostGIS2.0 con la biblioteca ráster y veo en la documentación que hay varias opciones para generar datos, como JPEG, GeoTIFF y PNG. ¿Es un formato recomendado para usar?

Para mostrar datos vectoriales, actualmente estoy usando JavaScript para enviar coordenadas desde el navegador del usuario a mi servidor, y luego estoy realizando una consulta usando PHP / SQL en PostGIS. Los resultados se devuelven como GeoJSON, que se puede superponer en el mapa base. Me preguntaba si se podría aplicar un enfoque similar utilizando rásteres, pero no sé qué formato de ráster es el mejor, o si hay otras restricciones que debería considerar.

He visto muchas referencias a GeoServer, pero no estoy seguro de si es necesario para este proyecto (no estoy completamente seguro de cuándo se debe usar o no GeoServer).

Respuestas:


13

Las tramas son imágenes , por lo que el mejor formato será un formato de imagen (png / jpg / etc.). Geojson es un buen formato para vectores . Nunca verá, digamos, que su foto de perfil de Facebook será transportada de nuevo como json puro. Por supuesto, devolver una url a una imagen como json es muy, muy diferente :)

En cuanto a la discusión jpeg vs png vs cualquier otro formato de imagen, hay toneladas de opiniones diferentes al respecto . Todo se reduce a que algunos formatos de imagen no tienen pérdidas, mientras que otros tienen pérdidas . Su decisión depende de lo que vaya a hacer con los datos. Para el análisis, es probable que no tolere las pérdidas, pero sí para mostrar cosas en la web.

¿PostGIS 2.0 puede generar imágenes? Por supuesto. Mire la sección de salida Ráster.

¿Es esta una buena idea? Realmente realmente depende de lo que estés haciendo. A veces, generar imágenes puede llevar mucho, mucho, mucho tiempo, y desea almacenarlas en caché para evitar pagar el precio de generarlas cada vez que las solicita a través de un entorno web. El único "almacenamiento en caché" que puede hacer en el lado de PostGIS es guardar los resultados en una tabla diferente y luego consultar la tabla cuando la necesite. Geoserver tiene una infraestructura completa ( GeoWebCache ) para hacer esto.

¿Es usted necesita GeoServer, probablemente no - pero hace la vida mucho más fácil cuando se tiene este middleware que expone todos sus datos utilizando servicios web OGC , lo hace el almacenamiento en caché , el estil de vectores y rasters un montón más cosas .


Entiendo cómo generar una imagen usando PostGIS; lo que estoy tratando de entender es la mejor manera de cargarla en Openlayers. Por ejemplo, si uso ST_AsPNG (), aún tendré que identificar las coordenadas superior e inferior donde se coloca esta imagen. Pensé que podría haber una forma ordenada de devolver una imagen independiente que pudiera cargar directamente en capas abiertas (aparte de usar un geoservidor).
DJ

Sí, puede cargarlo directamente en capas abiertas desde st_aspng, pero requerirá un trabajo adicional. Luego debe realizar un seguimiento del bbox y especificarlo cuando lo carga dev.openlayers.org/apidocs/files/OpenLayers/Layer/Image-js.html Confía en mí, es la ruta larga. Es mejor dejar que geoserver o mapserver hagan esto. Le devuelven WMS / WMTS y usted usa dos líneas de código para agregarlo a las capas abiertas.
Ragi Yaser Burhum

4

Mapserver tiene soporte para rásteres postgis y aquí se dan instrucciones para una configuración básica (elemento 9.9).

En su caso, configuraría Mapserver para que funcione como un servidor WMS para que devuelva los rásteres de Postgis como capas WMS normales. Es casi trivial agregar las capas a su mapa OpenLayers utilizando un objeto de capa WMS .

Este tipo de solución es probablemente su mejor opción porque está todo basado en el software OpenSource, es una pila probada y no requiere un middleware extenso. Todo lo que necesita el servidor de mapas es un servidor web (el apache que probablemente ya esté utilizando para php está bien) que puede ejecutar scripts cgi. Si el rendimiento no es un problema crítico, puede evitar el uso de un caché (mosaico) y simplemente hacer que el servidor de mapas represente las capas sobre la marcha cada vez.

Si desea almacenar en caché los mosaicos para minimizar la carga del servidor y mejorar los tiempos de respuesta, considere usar mapcache o tilecache . Mapcache es un proyecto hermano más joven de Mapserver, pero debería superar a todas las demás memorias caché, ya que se ejecuta como un módulo apache.

Para los usuarios de Ubuntu, la forma más fácil de instalar las dependencias de Mapserver es agregar el PPA Ubuntu GIS a su sistema.


Mapserver es definitivamente una gran alternativa de GeoServer (lo uso para otros proyectos). En general, elijo geoservidor para mis clientes porque tiene una interfaz fácil de usar. Sin embargo, quería señalar que servir cachés de teselas es servir contenido estático, y cualquier solución basada en nginx (o cualquier otro servidor sin bloqueo) sería mucho más rápido que cualquier solución de apache, ya sea en modo de aislamiento o en modo roscado.
Ragi Yaser Burhum

Gracias @unicoletti. ¿Puedo usar Mapserver si quiero generar rásteres basados ​​en la consulta de los usuarios? Por ejemplo, si permito que los usuarios especifiquen cualquier área (dentro de un cierto límite), ¿me permitirá hacer una consulta espacial de esa área?
DJ

@celenius Mapserver y GeoServer le permitirán hacerlo.
Ragi Yaser Burhum

1
@RagiYaserBurhum Comparo mapcache con otros cachés. Los mosaicos estáticos no son estrictamente hablando un caché.
unicoletti

0

Todo depende. Tamaño de imagen, almacenamiento en caché, bibliotecas disponibles (algunos controladores propietarios de jp2k, por ejemplo).

Aquí hay un enlace a un impresionante pdf , Geoserver con esteroides. Esto lo llevará a través de los diversos formatos, sus ventajas y desventajas y algunas configuraciones básicas.

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.