Opzioni per la visualizzazione dei vettori PostGIS in OpenLayers


22

Sono molto nuovo nel web mapping, quindi questa domanda potrebbe essere un po 'fuorviante.

Voglio avere un'interfaccia web molto semplice usando OpenLayers (o anche Google Maps se sarà più facile) che può visualizzare una serie di tabelle di punti e poligoni che sono attualmente in PostGIS.

Voglio che questo sia il più semplice (e il più basso livello di manutenzione) possibile:

  • Non voglio creare tessere (a meno che non ci sia una buona ragione) o avere un livello enorme e complesso di middleware.
  • Le prestazioni non devono essere fenomenali, poiché questo è per uso interno e quindi non deve scalare oltre un paio di utenti simultanei.
  • Lo stile dei livelli vettoriali è di importanza minima.
  • Gli strumenti open source sono molto preferiti poiché non ho quasi budget per questo.

Qual è l'approccio raccomandato per questo?

Risposte:


14

Il modo più semplice per impostare una mappa online da fonti PostGIS è usare Geoserver. Il Manuale dell'utente di Geoserver contiene una buona introduzione all'uso di PostGIS come fonte di dati . Fondamentalmente si aggiunge un archivio dati contenente le informazioni di connessione e successivamente è possibile pubblicare qualsiasi tabella contenente geometrie. Oltre a PostGIS, puoi utilizzare anche molte altre fonti di dati:

testo alternativo

Dall'interfaccia Web di Geoserver, è anche possibile visualizzare l'anteprima dei livelli su una pagina Web OpenLayers. È possibile utilizzare l'origine di questa pagina di anteprima per creare la propria applicazione OpenLayers.

Geoserver offre molte opzioni di stile sia per i dati vettoriali che per quelli raster. Per cominciare, potresti essere abbastanza felice con la personalizzazione di alcuni degli stili predefiniti forniti con l'installazione.

Per impostazione predefinita, Geoserver non esegue il tile e OpenLayers non richiede i tile. Se non hai bisogno di prestazioni elevate, non devi comunque preoccuparti delle tessere.

Personalmente, penso che OpenLayers sia più facile da usare rispetto all'API di Google Maps e sarai indipendente da Google. Se hai bisogno di una mappa di sfondo, ti consigliamo di dare un'occhiata a OpenStreetMap.


8

Se davvero non si desidera un livello middleware di grandi dimensioni, è possibile utilizzare TinyOWS ( http://tinyows.org/trac ) - non l'ho mai provato ma afferma di essere piccolo e veloce. Inoltre utilizza gli standard OGC, quindi se decidi di pubblicare su un pubblico più ampio e non puoi continuare a passare a GeoServer o MapServer ti consentirà di continuare a utilizzare lo stesso codice client senza modifiche.


ah sì, dimenticato di tinyOWS, sembrava un po 'difficile da configurare, ed è solo per PostGIS
dodobas

la domanda si poneva solo sui postumi
Ian Turton

6

È possibile utilizzare qualsiasi applicazione in grado di server protocollo WFS. Con Openlayers puoi facilmente utilizzare i dati PostGIS tramite il protocollo WFS. Esistono poche applicazioni FLOSS che possono farlo. Ad esempio, FeatureServer , Geoserver , MapServer ... Se non hai familiarità con il web mapping, consiglierei Geoserver perché è molto molto semplice avviarlo.

Vedi questo esempio di Openlayers con WFS .


L'ultimo collegamento è interrotto.
Adam Matan,

1
Li ho provati tutti e funzionano. Forse l'ultimo era temporaneamente inattivo.
Mario Miler,

4

Openlayers supporta un gran numero di formati di dati vettoriali (GeoJSON, GML, KML ..), che possono essere visualizzati e disegnati usando il livello OpenLayers Vector.

Forse il middleware più semplice potrebbe essere FeatureServer che può servire i dati PostGIS alla maggior parte dei formati OL supportati. È facile da configurare e ha il supporto per semplici query spaziali / di attributi.

Ma, se hai bisogno di qualcosa di più potente, Geoserver potrebbe essere una soluzione praticabile.


Nessun amore per mapserver :(
dassouki il

1
in realtà mapserver è stato il mio primo amore, datato da qualche parte intorno al 2001, ma ... abbiamo appena iniziato a combattere molto, quindi abbiamo dovuto frenare :)
dodobas

Quindi, se do a openlayer un URL a un geojson / gml / kml, può semplicemente renderli?
fmark

1
sì, ma se hai bisogno di filtrare, anche per semplice bounding box, devi usare WFS
dodobas

4

Puoi alimentare json, kml amd wkt da postgis come st_asgeojson (), st_asKML () per lo script del server PHP o JSP e quindi utilizzare la classe ajax di openlayers per connettere l'origine dati dal tuo server


Penso che si adatti meglio al mio caso d'uso attuale. Se è troppo lento, proverò TinyOWS e gli altri server di mappe più pesanti. Puoi fornire un esempio di codice per il lato openlayers, supponendo che io abbia uno script PHP da qualche parte che restituisce il geojson / kml / wkt?
fmark

@chaipat: hai un esempio a portata di mano (script php e snippet di openlayer corrispondenti)?
underdark

2

Puoi farlo facilmente usando Geomajas che legge i tuoi dati dal database usando Hibernate o Geotools. Questo è tutto Java, che potrebbe essere un problema se preferisci altre lingue.


1

Bene, quello che puoi fare è usare la libreria OpenLayers e una lingua del server per inserire tutti i tipi di geometria postgis in Openlayer. Hai bisogno di:

  • Openlayers.Layer.Vector per creare un livello per dati vettoriali
  • Openlayers OpenLayers.Protocol.HTTP per leggere i dati dal server Postgis
  • OpenLayers.Strategy.Fixed opzionale
  • OpenLayers.Feature.Vector tutti i vettori sono per questa classe al client
  • OpenLayers.Format.GeoJSON o OpenLayers.Format.JSON
  • Un linguaggio lato server per fare una richiesta a Postgis e pompare le geometrie al client
  • Un parser JSON su server e client per trasportare dati in questo formato

Con questo puoi facilmente visualizzarli senza altro middleware.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.