Mehr

Optionen zur Anzeige von PostGIS-Vektoren in OpenLayers

Optionen zur Anzeige von PostGIS-Vektoren in OpenLayers


Ich bin sehr neu im Web-Mapping, daher kann diese Frage ein wenig fehlgeleitet sein.

Ich möchte eine sehr einfache Weboberfläche mit OpenLayers (oder sogar Google Maps, wenn das einfacher ist), die eine Reihe von Punkt- und Polygontabellen anzeigen kann, die sich derzeit in PostGIS befinden.

Ich möchte, dass dies so einfach (und so wartungsarm) wie möglich ist:

  • Ich möchte keine Kacheln erstellen (es sei denn, es gibt einen sehr guten Grund) oder eine riesige, komplexe Middleware-Schicht haben.
  • Die Leistung muss nicht phänomenal sein, da dies für den internen Gebrauch bestimmt ist und daher nicht über ein paar gleichzeitige Benutzer hinaus skaliert werden muss.
  • Das Styling der Vektorebenen ist von minimaler Bedeutung.
  • Open-Source-Tools werden sehr bevorzugt, da ich dafür fast kein Budget habe.

Was ist hierfür die empfohlene Vorgehensweise?


Der einfachste Weg, eine Online-Karte aus PostGIS-Quellen einzurichten, ist die Verwendung von Geoserver. Das Geoserver-Benutzerhandbuch enthält eine gute Einführung in die Verwendung von PostGIS als Datenquelle. Sie fügen im Grunde einen Datenspeicher hinzu, der die Verbindungsinformationen enthält, und können anschließend jede Tabelle mit Geometrien veröffentlichen. Neben PostGIS können Sie auch viele andere Datenquellen nutzen:

Von der Weboberfläche von Geoserver aus können Sie auch eine Vorschau der Layer auf einer OpenLayers-Webseite anzeigen. Sie können den Quellcode dieser Vorschauseite verwenden, um Ihre eigene OpenLayers-Anwendung zu erstellen.

Geoserver bietet viele Gestaltungsoptionen für Vektor- und Rasterdaten. Für den Anfang sind Sie vielleicht damit zufrieden, nur einige der vorgefertigten Stile anzupassen, die mit der Installation geliefert werden.

Standardmäßig kachelt Geoserver nicht und OpenLayers fordert keine Kacheln an. Wer keine hohe Leistung braucht, braucht sich sowieso nicht mit Kacheln zu beschäftigen.

Persönlich denke ich, dass OpenLayers einfacher zu verwenden ist als die Google Maps-API und Sie werden unabhängig von Google sein. Wenn Sie eine Hintergrundkarte benötigen, sollten Sie sich stattdessen OpenStreetMap ansehen.


Wenn Sie wirklich keine große Middleware-Schicht wollen, können Sie TinyOWS (http://tinyows.org/trac) verwenden - ich habe es noch nie ausprobiert, aber es behauptet, klein und schnell zu sein. Außerdem verwendet es OGC-Standards. Wenn Sie sich also für eine Veröffentlichung für ein breiteres Publikum entscheiden und es nicht mehr auf GeoServer oder MapServer umsteigen kann, können Sie den gleichen Client-Code ohne Änderungen verwenden.


Sie können jede Anwendung verwenden, die das WFS-Protokoll verarbeiten kann. Mit Openlayers können Sie PostGIS-Daten einfach über das WFS-Protokoll verwenden. Es gibt nur wenige FLOSS-Anwendungen, die dies können. Zum Beispiel FeatureServer, Geoserver, MapServer… Wenn Sie neu im Web-Mapping sind, würde ich Geoserver empfehlen, da es sehr, sehr einfach zu starten ist.

Siehe dieses Openlayers-Beispiel mit WFS.


Openlayers unterstützt eine Vielzahl von Vektordatenformaten (GeoJSON, GML, KML… ), die mit OpenLayers Vector Layer angezeigt und gestaltet werden können.

Die einfachste Middleware könnte FeatureServer sein, der PostGIS-Daten in den meisten von OL unterstützten Formaten bereitstellen kann. Es ist einfach einzurichten und unterstützt einfache räumliche/Attributabfragen.

Wenn Sie jedoch etwas leistungsfähigeres benötigen, könnte Geoserver eine praktikable Lösung sein.


Sie können json , kml und wkt von Postgis wie st_asgeojson (), st_asKML () für PHP oder JSP-Serverskript füttern und dann die Openlayers-Ajax-Klasse verwenden, um die Datenquelle von Ihrem Server zu verbinden


Sie können dies ganz einfach mit Geomajas tun, das Ihre Daten entweder mit Hibernate oder Geotools aus der Datenbank liest. Dies ist ausschließlich Java, was ein Problem sein kann, wenn Sie andere Sprachen bevorzugen.


Nun, was Sie tun können, ist die OpenLayers-Bibliothek und eine Serversprache zu verwenden, um alle Postgis-Geometrietypen in Openlayers zu übertragen. Sie brauchen:

  • Openlayers.Layer.Vector zum Erstellen einer Ebene zum Vektorieren von Daten
  • Openlayers OpenLayers.Protocol.HTTP zum Lesen von Daten vom Postgis-Server
  • OpenLayers.Strategy.Fixed optional
  • OpenLayers.Feature.Vector alle Vektoren stammen aus dieser Klasse beim Client
  • OpenLayers.Format.GeoJSON oder OpenLayers.Format.JSON
  • Eine serverseitige Sprache, um eine Anfrage an Postgis zu senden und Geometrien an den Client zu pumpen
  • Ein JSON-Parser auf Server und Client, um Daten in dieses Format zu transportieren

Damit können Sie diese ganz einfach ohne Middleware anzeigen.


Schau das Video: AflatoxinGIS Geoserver - Openlayers3 - PostGIS