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


12

この質問は、Webマップでのベクターデータの表示に関する以前の質問に似ています。OpenLayersを使用し、googleなどのベースマップを使用して、現在PostGISにあるラスターデータを表示できる基本的なWebインターフェイスが必要です。ラスターライブラリを使用してPostGIS2.0をインストールしましたが、JPEG、GeoTIFF、PNGなどのデータを出力するためのいくつかのオプションがあることをドキュメントから確認しました。使用するのに推奨される形式ですか?

ベクターデータを表示するには、現在JavaScriptを使用してユーザーのブラウザからサーバーに座標を送信し、PostGISでPHP / SQLを使用してクエリを実行しています。結果はGeoJSONとして返され、ベースマップにオーバーレイできます。ラスターを使用して同様のアプローチを適用できるかどうか疑問に思いましたが、どのラスター形式が最適であるか、または考慮すべき他の制約があるかどうかはわかりません。

GeoServerへの多くの参照を見てきましたが、このプロジェクトに必要かどうかはわかりません(GeoServerをいつ使用するかは完全にはわかりません)。

回答:


13

ラスター画像なので、最適な形式は画像形式(png / jpg / etc)になります。Geojsonはベクターに適した形式です。たとえば、Facebookのプロフィール写真が純粋なjsonとして転送されることはありません。もちろん、jsonとしてURLを画像に返すことは非常に異なります:)

jpeg対png対他の画像形式の議論に関しては、それについて多くの異なる意見があります。要するに、一部の画像形式は可逆であり、他の画像形式は非可逆であるということです。あなたの決定は、データをどうするかによって異なります。分析のために、おそらく損失を許容しないかもしれませんが、ウェブ上で物事を表示するためにあなたはそうするでしょう。

PostGIS 2.0は画像を生成できますか?承知しました。ラスター出力セクションを見てください

これはいい考えですか?それは本当にあなたが何をしているかに本当に本当に依存しています。画像の生成には非常に長い時間がかかる場合があります。Web環境でリクエストするたびに画像を生成する代価を払わないように、画像をキャッシュしたい場合があります。PostGIS側で実行できる唯一の「キャッシュ」は、結果を別のテーブルに保存し、必要なときに代わりにテーブルをクエリすることです。Geoserverには、これを行うためのインフラストラクチャ全体(GeoWebCache)があります。

あなたが行う必要 GeoServer、おそらくないが-それは非常に簡単にあなたが使用してデータの全て公開し、このミドルウェアていたときに人生を作るOGC Webサービスをキャッシングを行いベクトルとラスタのスタイリング 全体の束より多くの事を


私はPostGISを使用して画像を生成する方法を理解しています-私が理解しようとしているのは、Openlayersにロードする最良の方法です。たとえば、ST_AsPNG()を使用する場合、この画像が配置されている上下の座標を特定する必要があります。(ジオサーバーを使用する以外に)オープンレイヤーに直接読み込むことができる自己完結型の画像を返す適切な方法があるかもしれないと思いました。
djq

はい、st_aspngからopenlayersに直接読み込むことができますが、追加の作業が必要になります。あなたはそれはあなたがそれをロードするときバウンディングボックスを追跡する必要がある、とspecificy dev.openlayers.org/apidocs/files/OpenLayers/Layer/Image-js.htmlトラスト私は、それは長いルートです。ジオサーバーまたはマップサーバーにこれを実行させる方が良いでしょう。WMS / WMTSが返され、2行のコードを使用してOpenLayerに追加します。
ラギヤセルバーフム

4

Mapserverpostgisラスターをサポートしており、基本的なセットアップの指示はここ(項目9.9)に記載されています。

あなたの場合、MapserverをWMSサーバーとして動作するように設定し、通常のWMSレイヤーとしてPostgisラスタを返します。その後、WMSレイヤーオブジェクトを使用して、OpenLayersマップにレイヤーを追加することはほとんど簡単です。

この種のソリューションはおそらくオープンソースソフトウェアに基づいており、実績のあるスタックであり、広範なミドルウェアを必要としないため、おそらく最良の選択肢です。mapserverが必要とするのは、cgiスクリプトを実行できるWebサーバー(おそらくphpで既に使用しているApacheは大丈夫です)です。パフォーマンスが重要な問題ではない場合は、(タイル)キャッシュの使用を避けて、毎回マップサーバーにレイヤーをオンザフライでレンダリングさせることができます。

サーバーの負荷を最小限に抑えて応答時間を改善するためにタイルをキャッシュする場合は、mapcacheまたはtilecacheの使用を検討してくださいMapcacheMapserverの妹プロジェクトですが、Apacheモジュールとして実行されるため、他のすべてのキャッシュを上回るはずです。

Ubuntuユーザーの場合、Mapserverの依存関係をインストールする最も簡単で簡単な方法は、システムにUbuntu GIS PPAを追加することです。


Mapserverは間違いなくGeoServerからの優れた代替手段です(他のプロジェクトにも使用しています)。一般に、使いやすいインターフェイスを備えているため、顧客にはジオサーバーを選択します。それでも、タイルキャッシュの提供は静的コンテンツの提供であり、nginx(または他の非ブロッキングサーバー)に基づくソリューションは、プロセスベースの分離モードまたはスレッドモードのいずれの場合でも、Apacheソリューションよりもはるかに高速であることを指摘したかったのです。
ラギヤセルバーフム

ありがとう@unicoletti。ユーザークエリに基づいてラスターを生成する場合、Mapserverを使用できますか?たとえば、ユーザーが(特定の境界内で)任意の領域を指定できるようにすると、その領域の空間クエリを作成できるようになりますか?
djq

@celenius MapserverとGeoServerの両方でこれを行うことができます。
ラギヤセルバーフム

1
@RagiYaserBurhum mapcacheを他のキャッシュと比較します。静的タイルは厳密に言えばキャッシュではありません。
ユニコレッティ

0

それはすべて依存しています。画像サイズ、キャッシュ、利用可能なライブラリ(たとえば、いくつかの独自のjp2kドライバー)。

ステロイドに関する素晴らしいPDFの Geoserver へのリンクがあります。これにより、さまざまな形式、それらの長所と短所、およびいくつかの基本的なセットアップを実行できます。

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