Opciones para mostrar vectores PostGIS en OpenLayers


22

Soy muy nuevo en el mapeo web, por lo que esta pregunta puede ser un poco equivocada.

Quiero tener una interfaz web muy simple usando OpenLayers (o incluso Google Maps si eso será más fácil) que puede mostrar una serie de tablas de puntos y polígonos que están actualmente en PostGIS.

Quiero que esto sea tan simple (y tan bajo mantenimiento) como sea posible:

  • No quiero tener que crear mosaicos (a menos que haya una muy buena razón), o tener una capa masiva y compleja de middleware.
  • El rendimiento no necesita ser fenomenal, ya que es para uso interno y, por lo tanto, no necesita escalar más allá de un par de usuarios concurrentes.
  • El estilo de las capas vectoriales tiene una importancia mínima.
  • Las herramientas de código abierto son muy preferidas ya que casi no tengo presupuesto para esto.

¿Cuál es el enfoque recomendado para esto?

Respuestas:


14

La forma más fácil de configurar un mapa en línea desde fuentes de PostGIS es utilizando Geoserver. El Manual del usuario de Geoserver contiene una buena introducción para usar PostGIS como fuente de datos . Básicamente, agrega un almacén de datos que contiene la información de conexión y luego puede publicar cualquier tabla que contenga geometrías. Además de PostGIS, también puede usar muchas otras fuentes de datos:

texto alternativo

Desde el interior de la interfaz web de Geoserver, también puede obtener una vista previa de las capas en una página web de OpenLayers. Puede usar la fuente de esta página de vista previa para crear su propia aplicación OpenLayers.

Geoserver ofrece muchas opciones de estilo para datos vectoriales y ráster. Para empezar, es posible que esté lo suficientemente contento con solo personalizar algunos de los estilos prefabricados que vienen con la instalación.

De manera predeterminada, Geoserver no tiene mosaicos y OpenLayers no solicita mosaicos. Si no necesita un alto rendimiento, no necesita molestarse con los mosaicos de todos modos.

Personalmente, creo que OpenLayers es más fácil de usar que la API de Google Maps y será independiente de Google. Si necesita un mapa de fondo, es posible que desee buscar en OpenStreetMap en su lugar.


8

Si realmente no desea una capa de middleware grande, puede usar TinyOWS ( http://tinyows.org/trac ). Nunca lo he probado, pero dice ser pequeño y rápido. Además, utiliza estándares OGC, por lo que si decide publicar a un público más amplio y no puede seguir cambiando a GeoServer o MapServer le permitirá seguir usando el mismo código de cliente sin cambios.


ah sí, se olvidó de tinyOWS, parecía un poco difícil de configurar, y es solo para PostGIS
dodobas

la pregunta solo se hizo sobre postgis
Ian Turton

6

Puede usar cualquier aplicación que pueda servir el protocolo WFS. Con Openlayers puede usar fácilmente los datos de PostGIS a través del protocolo WFS. Hay pocas aplicaciones de FLOSS que pueden hacer esto. Por ejemplo, FeatureServer , Geoserver , MapServer ... Si eres nuevo en el mapeo web, recomendaría Geoserver porque es muy fácil comenzarlo.

Vea este ejemplo de Openlayers con WFS .


El último enlace está roto.
Adam Matan

1
Los probé todos y funcionan. Tal vez el último fue temporal hacia abajo.
Mario Miler

4

Openlayers admite una gran cantidad de formatos de datos vectoriales (GeoJSON, GML, KML ...), que se pueden mostrar y diseñar con la capa vectorial OpenLayers.

Quizás el middleware más simple podría ser FeatureServer, que puede servir datos PostGIS a la mayoría de los formatos compatibles con OL. Es fácil de configurar y tiene soporte para consultas espaciales / de atributos simples.

Pero, si necesita algo más potente, Geoserver podría ser una solución viable.


No love for mapserver :(
dassouki

1
MapServer realidad fue mi primer amor, en algún lugar alrededor de fecha 2001, pero ... sólo comenzaron a luchar mucho, así que tuvimos que frenar hasta :)
dodobas

Entonces, si le doy una url a openlayers a un geojson / gml / kml, ¿solo puede representarlos?
fmark

1
sí, pero si necesita filtrado, incluso mediante un simple cuadro delimitador, entonces necesita usar WFS
dodobas

4

Puede alimentar json, kml amd wkt desde postgis como st_asgeojson (), st_asKML () para el script del servidor PHP o JSP y luego usar la clase ajax de openlayers para conectar la fuente de datos desde su servidor


Creo que se adapta mejor a mi caso de uso actual. Si es demasiado lento, probaré TinyOWS y los otros servidores de mapas más pesados. ¿Puede proporcionar un ejemplo de código para el lado de capas abiertas, suponiendo que tenga un script PHP en algún lugar que devuelva geojson / kml / wkt?
fmark

@chaipat: ¿Tienes un ejemplo a mano (script php y fragmento de código abierto correspondiente)?
oscuro

2

Puede hacer esto fácilmente con Geomajas, que leería sus datos de la base de datos con Hibernate o Geotools. Esto es todo Java, lo que puede ser un problema si prefiere otros idiomas.


1

Bueno, lo que puede hacer es usar la biblioteca OpenLayers y un lenguaje de servidor para insertar todos los tipos de geometría postgis en Openlayers. Vas a necesitar:

  • Openlayers.Layer.Vector para crear una capa de datos vectoriales
  • Openlayers OpenLayers.Protocol.HTTP para leer datos del servidor Postgis
  • OpenLayers.Strategy.Fixed opcional
  • OpenLayers.Feature.Vector todos los vectores son de esta clase en el cliente
  • OpenLayers.Format.GeoJSON u OpenLayers.Format.JSON
  • Un lenguaje del lado del servidor para hacer una solicitud a Postgis y bombear geometrías al cliente
  • Un analizador JSON en el servidor y el cliente para transportar datos a este formato

Con esto, puede visualizarlos fácilmente sin más middleware.

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.