Optionen zur Anzeige von PostGIS-Vektoren in OpenLayers


22

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

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

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

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

Was ist der empfohlene Ansatz dafür?

Antworten:


14

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 genommen einen Datenspeicher mit den Verbindungsinformationen hinzu und können anschließend jede Tabelle mit Geometrien veröffentlichen. Neben PostGIS können Sie auch viele andere Datenquellen verwenden:

Alt-Text

Über die Weboberfläche von Geoserver können Sie auch eine Vorschau der Ebenen auf einer OpenLayers-Webseite anzeigen. Sie können die Quelle 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 glücklich genug, wenn Sie nur einige der vorgefertigten Stile anpassen, die mit der Installation geliefert werden.

Standardmäßig kachelt Geoserver nicht und OpenLayers fordert keine Kacheln an. Wenn Sie keine hohe Leistung benötigen, müssen Sie sich sowieso nicht mit Kacheln befassen.

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


8

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


ah ja, tinyOWS vergessen, schien ein bisschen schwer zu konfigurieren, und es ist nur für PostGIS
Dodobas

die frage wurde nur zu postgis gestellt
Ian Turton

6

Sie können jede Anwendung verwenden, die das WFS-Protokoll bedienen kann. Mit Openlayern können Sie ganz einfach PostGIS-Daten über das WFS-Protokoll verwenden. Es gibt nur wenige FLOSS-Anwendungen, die dies ausführen können. Zum Beispiel FeatureServer , Geoserver , MapServer ... Wenn Sie mit Web-Mapping noch nicht vertraut sind , würde ich Geoserver empfehlen, da es sehr einfach ist, damit zu beginnen.

Sehen Sie sich dieses Openlayers-Beispiel mit WFS an .


Letzte Verbindung ist unterbrochen.
Adam Matan

1
Ich habe sie alle ausprobiert und sie funktionieren. Vielleicht war der letzte vorübergehend ausgefallen.
Mario Miler

4

Openlayers unterstützt eine Vielzahl von Vektordatenformaten (GeoJSON, GML, KML ..), die mithilfe der OpenLayers Vector-Ebene angezeigt und formatiert werden können.

Möglicherweise ist FeatureServer die einfachste Middleware, mit der PostGIS-Daten für die meisten von OL unterstützten Formate bereitgestellt werden können. Es ist einfach einzurichten und unterstützt einfache räumliche / Attribut-Abfragen.

Wenn Sie jedoch einen leistungsfähigeren Geoserver benötigen, könnte dies eine praktikable Lösung sein.


Keine Liebe für Mapserver :(
Dassouki

1
eigentlich war mapserver meine erste liebe, datiert irgendwo um 2001, aber ... wir haben gerade angefangen viel zu streiten, also mussten wir uns
trennen

Wenn ich also Openlayern eine URL zu einem Geojson / gml / kml gebe, kann es sie einfach rendern?
16.08.10

1
ja, aber wenn Sie filtern müssen, auch mit einem einfachen Begrenzungsrahmen, müssen Sie WFS
Dodobas 16.08.10

4

Sie können json, kml und wkt von postgis wie st_asgeojson (), st_asKML () für PHP oder JSP-Serverskript einspeisen und dann die Ajax-Klasse openlayers zum Verbinden der Datenquelle von Ihrem Server verwenden


Ich denke, passt am besten zu meinem aktuellen Anwendungsfall. Wenn es zu langsam ist, probiere ich TinyOWS und die anderen leistungsstärkeren Kartenserver aus. Können Sie ein Codebeispiel für die OpenLayer-Seite bereitstellen, vorausgesetzt, ich habe irgendwo ein PHP-Skript, das geojson / kml / wkt zurückgibt?
Markieren Sie den

@chaipat: Hast du ein Beispiel zur Hand (PHP-Skript und entsprechendes OpenLayer-Snippet)?
underdark

2

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


1

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

  • Openlayers.Layer.Vector zum Erstellen einer Ebene für Vektordaten
  • 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 stellen 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 sie sehr einfach ohne weitere Middleware anzeigen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.