Webマッピング環境での凡例解析のためのFOSSソリューションはありますか?


14

Webマッピングの要件はかなり標準的です-基本的なクエリと、結果のマップを印刷(または画像を保存)する機能。通常、過去にESRI製品を使用していました(現在はGeoCortexを使用しています)が、実際にマップに表示されているものと一致するように凡例情報を解析する方法の問題を解決できていません。たとえば、マップ上に4つのポリゴンが表示されている場合、ポリゴンの凡例アイテムは4つしかありません。この問題のオープンソースソリューションはありますか?

編集:これをもっと明確にできるかどうか見てみましょう。現在、33,000以上のポリゴンを持つ地質レイヤーがあります。このレイヤーの凡例は単一の画像で、数百の凡例項目が含まれています(つまり、JPEG / PNGに保存されている地質レイヤー全体の凡例です)。

通常、ユーザーは領域(単一のNTSマップシートなど)を拡大するので、地質ポリゴンのサブセットが画面に表示されます。その後、マップを印刷ドキュメント(PDFまたは画像)として保存します。これはGeoCortex / ArcGIS Serverによって生成されます。印刷ドキュメントには、ヘッダー、マップの画像、および凡例が含まれます。ただし、地質レイヤーの凡例は、地質レイヤー全体の凡例であり、実際にマップに表示されるもの(つまり、より小さなサブセット)ではありません。

ですから、画面上/地図上の実際のアイテムを反映する地質学の凡例のサブセットをその場でクリップアウトまたは生成し、印刷ドキュメントを使用できるようにするFOSSソリューションがあるかどうかを探しています。それが物事を明確にすることを願っています。そうでない場合は謝罪します!


1
こんにちはoopoop-私はあなたの望む結果を想像するのに苦労しています。悪い伝説の例と良い伝説の例を含めることができますか?それは私や他の人が答えるのに役立つと思います。ありがとう
andytilia

この機能はArcgisサーバー10.1に含まれていますが、ESRIのプレゼンテーション中に見ました。
-geogeek

うーん、まあ、それが実際にどのように機能するかを見ていきましょう。それまでの間、FOSSソリューションはありますか?
ollyoop

1
FOSSまたはESRIベースのカスタムコードが必要なようです。
ラギヤセルバーフム

確かに Latitude Geographicsはこれを実行できます。あなたはそれについて話しましたか(すでにGeocortex Essentialsにあるかどうか、または彼らがそれを実装する予定があるかどうか)?
チャドクーパー

回答:


3

特定の条件に応じて、あなたが望むことをすることは間違いなく可能です。私が数年前に開発したこのFlexアプリをご覧ください:http : //india-wris.nrsc.gov.in/LULCApp.html

凡例と統計は、現在の範囲に表示されるデータに応じて変化します。アルゴリズムでは、各クラスに異なる色が必要です。Flexアプリケーションはクラスとその色を知っています。範囲が変更されるたびに、現在のマップ範囲がビットマップに変換され、その中の色が検出されます。これを使用して、現在表示されている色またはクラスを見つけることができます。この情報に基づいて、凡例が動的に作成されます。

当時Flexを使用していましたが、これはHTML5のCanvasを使用しても可能です。または、任意のサーバー側コードを使用してマップ画像に同じことを行い、動的に作成された凡例を取得できます。


それだけです!実際の例を見るのは素晴らしいことです。大変感謝いたします!!!
ollyoop

5

AOSS、FOSS4GまたはESRIでは、このレイヤーを生成するカスタムコードを記述する必要があります。

それはないということは難しいが、それはより多くの数行のコードよりも行くことができます。

ArcMapの場合、これはCustom Elementを使用して実現されます。ESRIヘルプサイトは古い例新しい例でいっぱいです

過去に、私はあなたがPagelayout Frame Elementsを使用して説明したものに似た何かを達成しました。

ArcObjectsを一度も実行したことがない場合(ただし、プログラミングした場合)、描画コードは少し複雑になることがありますが、通常、その "aha!"に到達するには作成が必要です。瞬間。

アルゴリズムは簡単です:

  • (1)凡例を生成するための参照として使用するPageLayoutのMapオブジェクトを取得します... Pagelayoutには異なる複数のMapオブジェクトを含めることができるため、目的のマップに到達するために複数のフレームを処理する必要がある場合がありますArcMap Pagelayoutのカスタムプログラミングを行っていない場合、少し珍しいエクステント(小さなインセットマップを考えてみてください)。

  • (2)目的のマップのActiveViewの表示範囲を取得します。

  • (3)これをクエリフィルタージオメトリとして使用して、マップ内のすべてのレイヤーをループおよび検索します。

  • 層が返された場合は(4)すべてのレコードを、あなたは私が前にあなたを与えたの例のように、それを描画する必要があります。

簡単な解決策を提供することはできませんが、少なくともこの方法では、見た目が好きなように見せることができます-コーディングが必要です。

更新:

Webアプリケーションのコンテキストでこれを実行したいので、ドキュメントを確認しましたが、同様のアルゴリズムを使用して実行する方法がいくつかあります。

これらの1つは、ArcGIS Server Object Extensionを使用することです。(1)を除くすべての手順を実行します(このコンテキストでPagelayoutを心配する必要はありません)。RESTを使用して結果を公開します。

ここから、いくつかのオプション(FlexまたはJavascriptを使用するかどうかに基づいて)がありますが、考え方は同じです-ページの更新時に、作成したREST Webサービスを呼び出して凡例を描画します。

提案されている他のアプローチとは対照的に、このアプローチの利点は、フィーチャで任意のシンボルを使用できることです(フィーチャのシンボルの異なる色に限定されない)。クライアント側のコードには、お気に入りのWeb言語を使用できます。凡例用に生成するシンボルは、マップから自動的に生成できます。

欠点は、サーバーオブジェクトエクステンションを作成する必要があることです!幸いなことに、既に必要なことの75%を実行するESRIサンプルがあり、上記のコメントを続行する方法の明確なアイデアを提供するはずです。

更新2:これに対するFOSS4Gソリューションに関しては、APIがそれぞれわずかに異なるものの、同じアプローチがどのFOSSサーバーでも機能します。


1
答えてくれてありがとう!ArcGIS環境用にこれを既に行うLegend Limiterというツールがあります。私がやろうとしているのは、その機能をWebマッピングの世界に移植することです。
ollyoop

@ollyoop少なくとも9.3までは、この同じアプローチがArcGIS Serverで完全にうまく機能することを知っていました。9.3以降、サーバーレンダリングアーキテクチャに重大な変更が加えられたことを知っています。しかし、カスタム要素が10.1から削除された場合、私は驚くでしょう。
ラギヤーサーバーフム

@ollyoopは、ArcGIS Serverで動作するアプローチを追加しました
Ragi Yaser Burhum

3

Geocortex Essentialsを使用してPDFにエクスポートすると、印刷テンプレートのサブレポートによって凡例が生成されます。このサブレポートは、マップイメージの作成に使用されたすべての表示レイヤーと、ArcGIS Serverによって生成されたすべての凡例見本を受け取ります。凡例内のレイヤーが実際に印刷領域の範囲で描画されているかどうかを判断するための空間クエリは発行しません。

したがって、凡例の動作を変更する場合は、凡例サブレポートをカスタマイズするか、サブレポートの代わりに画像を使用して凡例を印刷テンプレートに配置できます。ビューアで使用するために何らかの方法で凡例画像を既に生成している場合、印刷エンジンからそのサービスを再利用できるはずです。

凡例には、スウォッチがレイヤー用であるかレイヤー内のクラス用であるかに基づいて、凡例テキストのフォーマットを切り替える埋め込みインラインコードが既に含まれています。レポートデザイナーの[スクリプト]タブに切り替えると、インラインコードが表示されます。

(Latitude Geographicsで働いています)


1

完全な「FOSSソリューション」を使用した「Webマッピング」について...考慮事項:

  • 「FOSSソリューション」は、安全で安定したものであるために、「人気のある」(大きな組織化されたコミュニティを持つ)でなければなりません
  • FOSSとGISの重要な概念は標準化です。最適なソリューションはOGCなどの標準を採用しています。
  • 現在、人気のある「Webソリューション」はOpenLayers、Mapserver、GeoServer、PostGISなどです。すべてOGC準拠のコアを備えています。「GeoCortex / ArcGIS Server」ソリューションはFOSSではありませんが、おそらくOGCに準拠しています。

技術的な考慮事項:「カバレッジ」(?)を使用しているため、空間情報を取得するための優れたOGC標準はWMSです。


アンあなたの問題へのOGC準拠の簡単な解決策は、WMSの使用することでは、GetCapabilitiesGetLegendGraphicの XMLファイルに標準の凡例の説明、および伝説で画像を返すこと、サービスを。

注:いくつかのGIS / FOSSソリューションについて考える場合、最初に標準で考え、次に問題を「よく知られているLEGOピースの問題」に減らし、そのピースはどのベンダーのものでもあります。

ArcGIS 10+にはGetLegendGraphicがありますが、凡例サブセットのみを表示するためにBBOXを指定できるかどうかを確認してください。


legendを使用してマップのレイアウトを作成する場合は、この「FOSS LEGOソリューション」の別の部分があります。

MapServerなどのFOSSマップサーバー(およびESRIソリューションも同様)は、JPEGイメージをWMS(タイルなし)マップリクエストとして提供できます。WMSのGetMapサービスを参照してください。

PS:これは標準ではありませんが、MapServerなどのテンプレートツールを使用して、凡例付きのマップを提供するようにサーバーを構成できます。

「凡例付きマップ」のレイアウトを構築するために、Javascript、PHP、またはマップと凡例の(REST)Webサービスリクエストを行う別の言語でHTML(または「オンザフライPDF」)を生成できます。

HTMLからPDFを生成することを好みます。HTMLからPDFへの変換のためのFOSSソリューションであるwkHtmlToPdfを使用できます 。「オンザフライJPEGレイアウト」でより貧弱なレイアウトを作成するには、imagemagickなどの標準のFOSSツールキット をサーバーで使用できます。

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