2015-08-07

面と面の重なりの抽出

AreaOnAreaOverlayer トランスフォーマーによって複数の面が重なり合う部分を抽出し、元の面を重なり合った部分とそうでない部分に分割し、重なり合った部分を重複のないひとつの面に変換することができます。

AreaOnAreaOverlayer 処理イメージ (FME Desktop Help / FME Transformers より)







このトランスフォーマーを使い、台風の降雨による浸水域を表すポリゴンを浸水回数別のポリゴンに変換するワークスペース例を掲げます。
FME 2015.1.1.0 build 15515

=====
台風の降雨による浸水域 (時期別) のポリゴンデータに基づき、浸水回数別のポリゴンを作成する。
分割後のポリゴンには、浸水回数 (重なり合った時期別浸水域の数) 、それらの時期 (年月日) をカンマ区切りで連結した文字列を属性として与える。

ソースデータ:
国土交通省 国土調査「土地分類調査・水調査 > GISデータのダウンロード」ページよりダウンロードした土地分類基本調査「土地履歴調査 GIS データ」のうち、「災害履歴図 (風水害)」データ (Shapefile 形式ポリゴン)
過去の複数回の台風の降雨による浸水域が記録されている。
属性定義はダウンロードファイル同梱の「土地履歴調査の公開用数値地図データ仕様について」 (PDF) 参照
=====

FMEワークスペース例
















[SHAPE] リーダー: 「災害履歴図 (風水害)」 Shape ファイルを読み込む。
Tester: "name" (災害種別等) 属性が「浸水域」に該当するフィーチャーを抽出する。
AreaOnAreaOverlayer: 浸水域ポリゴンを、相互に重なり合う部分とそうでない部分に分割する。
ListSorter: 元の浸水域の属性を格納したリスト要素を "date" (年月日) 属性でソートする。
ListConcatenator: 元の浸水域の "date" 属性をカンマ区切りで連結した文字列属性を作成する。
[SHAPE] ライター: 処理後の浸水域フィーチャーを Shapefile 形式のファイルに出力する。

結果: 浸水回数 (重なり合った時期別浸水域の数) 別に色分け表示した例 (FME Data Inspector)
防災計画検討の参考になるかも知れません。
















結果: 属性テーブル (FME Data Inspector)
count: 浸水回数 (重なり合った時期別浸水域の数), date: カンマ区切りの浸水時期 (年月日)























AreaOnAreaOverlayer は、入力フィーチャーのジオメトリ (面) が重なり合う部分を抽出して重なり合った部分とそうでない部分に分割し、重なり合った部分を重複のないひとつの面に変換します。
分割後のフィーチャーには、重なり合った面の数を格納した属性が付加されるとともに、List Name パラメーターを指定した場合は、元の面が持っていた全ての属性を格納したリスト属性 (構造化リスト) も付加されます。
構造化リストについては、「文字列の分割とリスト属性の展開」の補足も参照してください。

AreaOnAreaOverlayer パラメーター設定画面


















Overlap Count Attribute: count
重なり合った面の数 (重なりがなかった部分では「1」) を格納する属性名を指定します。

List Name: _list
元の面が持っていた属性を格納するリスト属性名を指定します (オプション)。

AreaOnAreaOverlayer の List Name パラメーターを設定したので、入力フィーチャーが持っていた全ての属性が構造化リスト "_list{}.<元の属性名>" に格納され、処理後のフィーチャーに付加されます。
ListSorter によってその要素を "date" (年月日) の昇順でソートしたうえで、ListConcatenator によって年月日をカンマ区切りで連結した文字列を作成し、"date" 属性に格納しました。

複数のジオメトリを重ね合わせて行う処理を一般にオーバーレイ (overlay) と言っており、ジオメトリタイプに応じて次のトランスフォーマーが用意されています。詳細についてはそれぞれのヘルプを参照してください。

PointOnPointOverlayer 点と点のオーバーレイ
PointOnLineOverlayer 点と線のオーバーレイ
PointOnAreaOverlayer 点と面のオーバーレイ
LineOnLineOverlayer 線と線のオーバーレイ
LineOnAreaOverlayer 線と面のオーバーレイ
AreaOnAreaOverlayer 面と面のオーバーレイ

0 件のコメント:

コメントを投稿