OpenLayersでPostGISベクターを表示するためのオプション


22

Webマッピングは初めてなので、この質問は少し見当違いかもしれません。

現在、PostGISにある多くのポイントテーブルとポリゴンテーブルを表示できる、OpenLayers(または、もっと簡単な場合はGoogleマップ)を使用した非常にシンプルなWebインターフェイスが必要です。

私はこれをできるだけシンプルに(そして保守性を低く)したいです:

  • タイルを作成する必要はありません(非常に正当な理由がない限り)、またはミドルウェアの大規模で複雑なレイヤーは必要ありません。
  • パフォーマンスは驚異的である必要はありません。これは内部で使用するためであり、数人の同時ユーザーを超えて拡張する必要はありません。
  • ベクターレイヤーのスタイル設定の重要性は最小限です。
  • これには予算がほとんどないので、オープンソースのツールが非常に好まれます。

これに推奨されるアプローチは何ですか?

回答:


14

PostGISソースからオンラインマップを設定する最も簡単な方法は、Geoserverを使用することです。Geoserverユーザーマニュアルには、PostGISをデータソースとして使用するための優れた入門書が含まれています。基本的には、接続情報を含むデータストアを追加し、その後、ジオメトリを含むテーブルを公開できます。PostGIS以外にも、他の多くのデータソースを使用できます。

代替テキスト

GeoserverのWebインターフェイス内から、OpenLayers Webページでレイヤーをプレビューすることもできます。このプレビューページのソースを使用して、独自のOpenLayersアプリケーションを構築できます。

Geoserverは、ベクターデータとラスターデータの両方に多くのスタイルオプションを提供します。最初は、インストールに付属している既製のスタイルをカスタマイズするだけで十分でしょう。

デフォルトでは、Geoserverはタイル化せず、OpenLayersはタイルを要求しません。高性能が必要ない場合は、とにかくタイルを気にする必要はありません。

個人的には、OpenLayersはGoogle Maps APIよりも使いやすく、Googleから独立していると思います。背景マップが必要な場合は、代わりにOpenStreetMapを調べてください。


8

大きなミドルウェアレイヤーが本当に必要ない場合は、TinyOWS(http://tinyows.org/trac)を使用できます-試したことはありませんが、小さくて高速であると主張しています。さらに、OGC標準を使用しているため、より多くのユーザーに公開することに決めた場合、GeoServerに切り替えることができません。MapServerを使用すると、同じクライアントコードを変更せずに使用できます。


ああ、tinyOWSを忘れて、設定するのが少し難しいようでした。PostGIS専用です
-dodobas

質問はpostgisについてのみ質問
イアンタートン

6

WFSプロトコルを提供できる任意のアプリケーションを使用できます。Openlayersを使用すると、WFSプロトコル経由でPostGISデータを簡単に使用できます。これを実行できるFLOSSアプリケーションはほとんどありません。たとえば、FeatureServerGeoserverMapServer ... Webマッピングを初めて使用する場合は、Geoserverをお勧めします。開始が非常に簡単だからです。

WFSでのこのOpenlayersの例を参照してください。


最後のリンクが壊れています。
アダムマタン

1
私はそれらのすべてを試してみましたが、彼らは動作します。たぶん最後の1つは一時的なダウンだった。
マリオミラー

4

Openlayersは、多数のベクターデータ形式(GeoJSON、GML、KML ..)をサポートしています。これらは、OpenLayersベクターレイヤーを使用して表示およびスタイル設定できます。

たぶん最も単純なミドルウェアは、PostGISデータをほとんどのOLサポート形式に提供できるFeatureServerです。設定は簡単で、単純な空間/属性クエリをサポートしています。

しかし、より強力な何かが必要な場合は、Geoserverが実行可能なソリューションになる可能性があります。


mapserverへの愛はありません:
dassouki

1
実際、mapserverは私の最初の愛であり、2001年頃の日付ですが、...多くの戦いを始めたばかりなので、ブレーキをかけなければなり
ませんでし

したがって、openlayersにgeojson / gml / kmlへのURLを与えると、それらを単にレンダリングできますか?
fmark

1
はい、ただし、単純なバウンディングボックスでもフィルタリングが必要な場合は、WFSを使用する必要があります
-dodobas

4

PHPまたはJSPサーバースクリプトのst_asgeojson()、st_asKML()などのpostgisからjson、kml amd wktをフィードし、サーバーからデータソースを接続するためにopenlayers ajaxクラスを使用できます。


現在のユースケースに最も適していると思います。遅すぎる場合は、TinyOWSおよびその他のより頑丈なマップサーバーを試します。geojson / kml / wktを返すPHPスクリプトがあると仮定して、openlayers側のコード例を提供できますか?
fmark

@chaipat:手元にサンプル(phpスクリプトと対応するopenlayersスニペット)がありますか?
暗闇

2

これは、HibernateまたはGeotoolsを使用してデータベースからデータを読み取るGeomajasを使用して簡単に実行できます。これはすべてJavaですが、他の言語を好む場合には問題になる可能性があります。


1

できることは、OpenLayersライブラリとサーバー言語を使用して、すべてのpostgisジオメトリタイプをOpenlayersにプッシュすることです。あなたが必要になる:

  • Openlayers.Layer.Vectorは、ベクターデータへのレイヤーを作成します
  • Postgisサーバーからデータを読み取るためのOpenlayers OpenLayers.Protocol.HTTP
  • OpenLayers.Strategy.Fixedオプション
  • OpenLayers.Feature.Vectorすべてのベクトルはクライアントのこのクラスから
  • OpenLayers.Format.GeoJSONまたはOpenLayers.Format.JSON
  • Postgisにリクエストを行い、ジオメトリをクライアントに送信するサーバー側言語
  • データをこの形式に転送するサーバーおよびクライアント上のJSONパーサー

これにより、ミドルウェアを追加せずに非常に簡単に表示できます。

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