OpenLayersをPostGISデータに接続する方法は?


10

OpenLayersでKML、GeoJSONなどのベクターファイルを読み込む方法をOpenLayersで読みました。しかし、どうすればPostGISデータに接続できますか。そうでない場合、WebServicesを使用して直接データを配置する代わりに、なぜPostGISにデータをアップロードする必要があるのですか。何か不足していますか?

そして、特徴をクリックして属性を確認できるように、このベクターデータをロードします。今後、クエリを有効にしたいので、PostGISが必要です。PostGISのようなデータベースを維持することによってのみ可能だと思います。しかし、OpenLayersの使い方は?

OpenLayers Beginner's Guideを読みましたが、どこにも言及されていません。助けてください!!

回答:


26

残念ながら、セキュリティ上の理由から、Webページをデータベースに直接接続することはできません。通常、2つを結合するためのミドルウェアが必要です。

したがって、例として、オープンソースソフトウェアを使いたい場合は、GeoServerを地理サーバーとして簡単に使用して、PostGISデータベースからOpenLayers HTML Webページにデータを提供できます。

これが良い理由は、GeoServerが標準的な方法、OGC Web Map Server(WMS)またはWeb Feature Service(WFS)でデータを提供し、OpenLayersや他の多くのAPI(ESRIやLeafletなど)や他のデスクトップによって両方が理解されることです。 GISソフトウェア(ESRI、MapInfo、QGIS、uDigなど)

そこで、GeoServerをPostGISに接続してデータを提供する方法を順を追って説明する、GeoServerのドキュメントを見ていきます。

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

これらのタイプのものが初めての場合は、OpenGeoチュートリアル以外に始めるのに最適な場所はありません。

http://workshops.opengeo.org/

私は間違いなくあなたのデータがPostGISにあることに固執します

a)大量のデータがあるb)クエリを実行したい(そうするように)およびc)多くの人がアプリを使用する場合

クエリを実行する場合は、Web処理サービス(WPS)を調べますが、これらはまだ「新しい」ですが、GeoServerでサポートされています。

ただし、少量のデータがあり、クエリを事前実行してOpenLayersを使用して表示できる場合は、フラットファイルからのGeoJSONの使用に固執するか、D3 JavaScriptライブラリで多くの人気を得ているTopoJSONを確認する必要があります。こちらをご覧くださいhttp://bost.ocks.org/mike/map/ Mike Bostockのチュートリアルは素晴らしいです。

それが役に立てば幸い


14

2つを接続する1つの方法は、GeoJSONを使用することです。以下は、PostGISデータベースのクエリ例です。

SELECT population,ST_AsGeoJSON(geom) FROM censusblocks

クエリ結果を取得したら、次のようなことができます。

       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));

featurecollectionPostGISクエリの結果はどこにありますか。

ただし、GeoJSONが非常に複雑な場合は、読み込み/レンダリングの問題が発生する可能性があることに注意してください。

この手法の詳細については、このOpenLayersの例のソースを参照してください


3

私は、GeoServerなしでPostGisをOpenlayers 3/4と一緒に使用しています。私が選択する方法は、私が呼び出す関数を介してPostgisデータベースからgeojsonを取得することです。これは、データを返し、設定に応じてスタイルを設定します。

JavaScriptで私が定義したデータとスタイリング=> Javascriptの機能はで見ることができるデータは、OpenLayersを3全体sriptsにレンダリングするためのPostGIS =>関数のスタイルからretriveデータにGETからPHPスクリプトを呼び出しているが、簡単な方法へOpenlayers 3でPostgis-geojsonを使用しますか?

GET-Stringsが操作される可能性があるため、この方法は安全ではないようですが、私はhttps経由の呼び出しを使用し、サーバー側のphp-scriptがSESSIONが設定されているかどうかを確認します。そのため、ログインせずにスクリプトを実行することはできません。これは非常に小さなグループで使用しますが、多くの人がデータにアクセスしている環境では、良い方法ではないかもしれません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.