Wie verbinde ich OpenLayers mit PostGIS-Daten?


10

Ich habe in OpenLayers gelesen, wie man KML-, GeoJSON- usw. Vektordateien in OpenLayers lädt. Aber wie kann ich eine Verbindung zu PostGIS-Daten herstellen? Wenn nicht, warum sollte ich meine Daten dann in PostGIS hochladen, anstatt sie direkt über WebServices zu speichern? Vermisse ich etwas

Und ich möchte diese Vektordaten laden, damit man die Attribute sehen kann, indem man auf die Features klickt. Ich brauche PostGIS, weil ich in Zukunft Abfragen aktivieren möchte. Ich denke, es ist nur möglich, eine Datenbank wie PostGIS zu pflegen. Aber wie benutzt man OpenLayers?

Ich habe OpenLayers Beginner's Guide gelesen, aber nirgends wird es erwähnt. Bitte helfen Sie !!

Antworten:


26

Leider können Sie eine Webseite aus Sicherheitsgründen nicht direkt mit einer Datenbank verbinden. Normalerweise benötigen Sie Middleware, um die beiden zusammenzuführen.

In Ihrem Beispiel und wenn Sie sich an die Open Source-Software halten möchten, können Sie GeoServer problemlos als geografischen Server verwenden, um Ihre Daten aus Ihrer PostGIS-Datenbank auf Ihre OpenLayers-HTML-Webseite zu übertragen.

Dies ist gut, weil GeoServer die Daten auf standardmäßige Weise bereitstellt, OGC Web Map Server (WMS) oder Web Feature Service (WFS). Beide werden von OpenLayers und vielen anderen APIs (ESRI, Leaflet usw.) und anderen Desktops verstanden GIS-Software (ESRI, MapInfo, QGIS, uDig usw.)

Ich würde mir also zunächst die GeoServer-Dokumentation ansehen, in der Sie erfahren, wie Sie GeoServer mit PostGIS verbinden und dann die Daten bereitstellen.

http://docs.geoserver.org/stable/en/user/gettingstarted/index.html

Wenn Sie mit solchen Dingen noch nicht vertraut sind, gibt es keinen besseren Ausgangspunkt als die OpenGeo-Tutorials

http://workshops.opengeo.org/

Ich würde mich definitiv an Ihre Daten in PostGIS halten, wenn

a) Sie haben viele Daten b) Sie möchten Abfragen ausführen (wie Sie) und c) wenn viele Leute Ihre App verwenden werden

Wenn Sie Abfragen ausführen möchten, würde ich mir Web Processing Services (WPS) ansehen. Diese sind noch "neu", werden jedoch in GeoServer unterstützt.

Wenn Sie jedoch über eine kleine Datenmenge verfügen und die Abfragen vorab ausführen und dann einfach OpenLayers zum Anzeigen verwenden können, sollten Sie sich an die Verwendung von GeoJSON aus einer Flatfile halten oder sich TopoJSON ansehen, das mit der D3-Javascript-Bibliothek immer beliebter wird. siehe hier http://bost.ocks.org/mike/map/ Das Tutorial von Mike Bostock ist großartig.

Ich hoffe, das hilft


14

Eine Möglichkeit, die beiden zu verbinden, wäre GeoJSON. Hier ist eine Beispielabfrage einer PostGIS-Datenbank:

SELECT population,ST_AsGeoJSON(geom) FROM censusblocks

Sobald Sie Ihre Abfrageergebnisse erhalten haben, können Sie Folgendes tun:

       var geojson_format = new OpenLayers.Format.GeoJSON();
       var vector_layer = new OpenLayers.Layer.Vector(); 
       map.addLayer(vector_layer);
       vector_layer.addFeatures(geojson_format.read(featurecollection));

Wo featurecollectionist Ihr PostGIS-Abfrageergebnis?

Beachten Sie jedoch, dass bei einem sehr komplexen GeoJSON möglicherweise Probleme beim Laden / Rendern auftreten.

Weitere Informationen zu dieser Technik finden Sie in der Quelle dieses OpenLayers-Beispiels


3

Ich benutze PostGis zusammen mit Openlayers 3/4 ohne GeoServer. Ich wähle Geojson aus einer Postgis-Datenbank über eine von mir aufgerufene Funktion, die die Daten und Stile gemäß meinen Einstellungen zurückgibt.

In Javascript definiere ich die Daten und Styling => Javascript-Funktion ruft einen PHP-Skript über GET retrive Daten von Postgis => Funktion Arten der Daten in Openlayers 3. Die ganze sripts machen in zu sehen gibt es eine einfache Möglichkeit, Postgis-Geojson in Openlayers 3 verwenden?

Es scheint, dass dieser Weg nicht sicher ist, da GET-Strings manipuliert werden könnten, aber ich benutze einen Aufruf über https und das serverseitige PHP-Skript prüft, ob eine SESSION gesetzt ist. Daher können die Skripte nicht ausgeführt werden, ohne angemeldet zu sein. Wir verwenden dies in einer sehr kleinen Gruppe, aber in einer Umgebung, in der viele Personen auf die Daten zugreifen, ist dies möglicherweise kein guter Weg.

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.