2015-07-10

文字列で記述された位置情報に基づくジオメトリの作成

GIS、CAD 等の空間データ処理システムのために設計されたデータフォーマットだけでなく、CSV、XML などのテキストベースのフォーマットや Excel、データベースなどテーブル形式でも、座標やメッシュコードなどの文字列で記述された位置情報によって空間データが記録されているデータセットはたくさんあります。ここでは文字列で記述された位置情報に基づいてジオメトリを作成するワークスペース例を掲げます。

FME 2015.1.0.3 build 15485

1. 座標に基づくポイント作成の例
=====
放射性物質モニタリングデータの情報公開サイト(国立研究開発法人日本原子力研究開発機構)で公開されている「福島県内の河川から採取された河川水の核種分析結果」のうち平成25年6月の結果について、試料採取地点を表すGISポイントデータ(KML形式)に変換する。

ソースデータ
上記サイトの「放射性物質の分布状況等調査による福島県内の河川から採取された河川水の核種分析」ページからダウンロードした「福島県内の河川から採取された河川水の核種分析結果 (H25.6、H25.11)」データファイル(CSV形式)
ダウンロードファイル名: 30199900000_07.csv
=====

FMEワークスペース例





















[CSV] リーダー: ソースデータを読み込む。
Tester: 試料採取日が2013年6月の日付であるレコードを抽出する。
VertexCreator: 試料採取地点の座標(東経, 北緯)に基づいてジオメトリ(ポイント)を作成する。
AttributeCreator: 137Cs放射能濃度値に基づいて階層区分を示す属性を作成する。
KMLStyler: 階層区分別のKML表示スタイル(アイコンの色)を設定する。
[OGCKML] ライター: KMLファイルに出力する。

結果: Google Earth による表示例
















2. 座標に基づく矩形ポリゴン(メッシュ区画)作成の例
=====
放射性物質モニタリングデータの情報公開サイト(国立研究開発法人日本原子力研究開発機構)で公開されている「東京電力による走行サーベイ」のうち、モニタリングカーによる走行サーベイ第17巡の測定結果について、測定位置のメッシュ区画をGISポリゴンデータ(KML形式)に変換する。

ソースデータ
上記サイトの「東京電力による走行サーベイ」ページからダウンロードした「避難指示区域における詳細モニタリング結果(モニタリングカーによる走行サーベイ第17巡)(H26.3~H26.4)」データファイル(CSV形式)
ダウンロードファイル名: 10202600017_07.csv
=====

FMEワークスペース例















[CSV] リーダー: ソースデータを読み込む。
2DBoxReplacer: メッシュ南西端と北東端の座標(東経, 北緯)に基づいてジオメトリ(矩形ポリゴン)を作成する。
AttributeCreator: 地上1m高さの平均区間線量率に基づいて階層区分を示す属性を作成する。
Dissolver: 空間線量率の階層区分別に隣接するポリゴンを結合する(KMLファイルを軽量化するため)。
KMLStyler: 空間線量率の階層区分別にKML表示スタイル(ポリゴンの色と透過率)を設定する。
[OGCKML] ライター: KMLファイルに出力する。

結果: Google Earth による表示例
















VertexCreator, 2DBoxReplacer の他、位置情報に基づいてジオメトリを作成するトランスフォーマーには次のようなものがあります。これらのトランスフォーマーは全て、ソースデータから読み込まれた位置情報だけでなく、データフローの途中で属性として作成した位置情報に基づいてジオメトリを作成することに使えます。

2DArcReplacer: 2Dアーク(円弧または楕円弧)を作成する。

2DEllipseReplacer: 円または楕円を作成する。

3DArcReplacer: 3Dアーク(円弧または楕円弧)を作成する。

GeometryReplacer: 特定のフォーマット(Esri JSON, GML, OGC WKB/WKT などパラメーターで選択)によって記述された文字列に基づいてジオメトリを作成する。

JpMeshCodeReplacer (FME Hub): メッシュコードに基づいてメッシュ区画(矩形ポリゴン)またはメッシュ代表点(中心、南西隅)を作成する。1次, 2次, 3次, 1/2細分, 1/4細分, 1/8細分, 1/10細分メッシュをサポートしており、どのサイズのメッシュ区画を作成するかは与えられたメッシュコードの桁数によって自動判定する。ただし、10桁のメッシュコードを1/4細分, 1/10細分のどちらに解釈するかはパラメーターで指定する。

2番目の例では、ソースデータの「メッシュコード」列に測定位置の情報として1/10細分メッシュコードも記述されているので、2DBoxReplacer を JpMeshCodeReplacer に置き換えても同じ結果が得られます。
このトランスフォーマーは、デフォルトでは10桁のメッシュコードを1/4細分メッシュコードとみなしますが、次の図のように "10 Digits Code to 1/10 Subdivided Mesh" パラメーターを Yes に設定すると、1/10細分メッシュコードとして取り扱います。















1番目の例のように、CSVテーブルに座標が記述されている列がある場合、リーダーをワークスペースに追加する際にパラメーター設定画面の "Schema Attributes" リストでそれらの列のデータ型(Type)を x_coordinate, y_coordinate (z値とする列がある場合はその列について z_coordinate) に変更することにより、データ読み込みと同時にポイントジオメトリを作成することもでき、その場合は VertexCreator が省略できます。Excel リーダーにも同様の機能があります。

CSVリーダーのパラメーター設定画面の例

















FMEのユーザーインターフェースにおける座標軸の名前は数学座標系に準じており、X軸は横(東西)方向、Y軸は縦(南北)方向となります。地理座標を表すときには南北方向をX軸、東西方向をY軸と呼ぶこともあるので、座標値を記録する列名として座標軸名が使われている場合は注意してください。

KMLでは、フォーマットの仕様として座標系が WGS84 (緯度経度) に固定されています。 [OGCKML] ライターは、入力フィーチャーに定義されている座標系が WGS84 でない場合は自動的に座標変換を行いますが、座標系が定義されていない場合は実行時にエラーが生じます。
一方、CSVはフォーマットの仕様として座標系定義の記録をサポートしないので、デフォルトでは、[CSV] リーダーが読み込んだフィーチャーには座標系が定義されません。ここで掲げたワークスペース例では、[CSV] リーダーの Coordinate System パラメーターに "LL-JGD2K" (JGD2000 緯度経度) を設定して各フィーチャーに座標系定義を与えることにより、KMLファイルへの出力ができるようにしました。ダウンロードサイトには測地系がなんであるか明記されていませんが、いわゆる世界測地系ならば、WGS84、 JGD2000、JGD2011 のどれであっても、GISで利用するうえで問題になるような誤差が生じることはないと思われます。
フィーチャーに対する座標系定義の設定は、リーダーの Coordinate System パラメーターによるほか、データフローの途中で CoordinateSystemSetter トランスフォーマーによって行うこともできます。

0 件のコメント:

コメントを投稿