Q&A 座標値に基づくポイントの作成

Q: CSV形式のテーブルに各レコードの位置情報として緯度と経度の値を記述した列があります。CSVリーダーでこのテーブルを読み込んだ後、その座標の位置のポイントジオメトリを持つGIS用のデータに変換するにはどうすれば良いですか。

FME 2019.2

A: VertexCreator によって緯度、経度が示す位置のポイントジオメトリを作成し、各レコード(入力フィーチャー)に与えることができます。

Mode: 作成したポイント(頂点)の追加方法として、次のうちひとつが選択できます。

  • Add Point: 入力フィーチャーが持っているジオメトリの頂点配列の末尾に作成したポイントを追加する。
  • Replace with Point: 入力フィーチャーが持っているジオメトリを削除し、作成したポイントに置き換える。
  • Insert Point At Index: 入力フィーチャーが持っているジオメトリの頂点配列の任意の場所(インデクスで指定した要素の直前)に作成したポイントを挿入する。
  • Replace Point At Index: 入力フィーチャーが持っているジオメトリの頂点配列の任意の位置(インデクスで指定した要素)の頂点を作成したポイントに置き換える。

いずれの場合でも、入力フィーチャーがジオメトリを持っていなかった場合は、作成したポイントジオメトリをフィーチャーに与えます。

X/Y/Z Value: 作成するポイントの座標値を数値、数値を格納した属性、または数式で設定します。X, Y のみを設定したときは2Dポイント、X, Y, Z を設定したときは3Dポイントが作成されます。

Index: Mode パラメーターで Insert Point At Index または Replace Point At Index を選択したときに、入力フィーチャーのジオメトリの頂点配列において挿入または置換する位置を示すインデクス(配列先頭を0とする)を指定する。


直交座標系の座標軸の名前

直交座標系の座標軸について、数学では通常、横方向をX軸、縦方向をY軸と呼びますが、地理座標系では、南北方向をX軸、東西方向をY軸と呼ぶことがあります。

FMEのインターフェースにおける座標軸の呼び方は数学における慣例に準じており、地理情報を取り扱う場合であっても常に横(東西)方向をX軸、縦(南北)方向をY軸を呼びます。

地理的な位置の座標が緯度、経度で与えられている場合、VertexCreator などの座標値をパラメーターとするトランスフォーマーのパラメーターでは、Xに経度、Yに緯度を設定する必要があることに注意してください。


非空間データに基づいてジオメトリを作成するトランスフォーマー

VertexCreator のほかにも 2DBoxReplacer、2DArcReplacer など、非空間データ(数値や文字列)に基づいてジオメトリを作成するトランスフォーマーはいくつかあります。

最も汎用的なものは GeometryReplacer で、このトランスフォーマーを使うと、GeoJSON、GML、OGC WKT/WKB を含むさまざまな形式の文字列表現に基づいてジオメトリを作成することができます。

GeometryReplacer とは逆に、GeometryExtractor はジオメトリを文字列表現に変換して属性に格納します。ひとつのワークスペース内で、ジオメトリを変形させることによってなんらかの解析処理を行った後、元のジオメトリを復元する必要があるという場合には、GeometryExtractor で元のジオメトリを属性として保存しておき、ジオメトリの変形と解析処理の後、GeometryReplacer によってその属性から元のジオメトリを復元するという手法がよく使われます。

このようにジオメトリの保存、復元を目的として GeometryExtractor と GeometryReplacer をペアで使う場合のジオメトリの文字列表現形式(Geometry Encoding)としては、ジオメトリの情報の欠落がなく完全に復元でき、かつ効率も良い FME Binary とすることが推奨されています。