Q: ポリゴンの周長(境界線の長さ)や面積を求めることはできますか。
FME 2019.2
A: LengthCalculator で境界線の長さ、AreaCalculator で面積を求め、それらの値をフィーチャーの属性に格納することができます。
LangthCalculator
入力フィーチャーのジオメトリ(Curve または Area)の長さ(Area の場合は周の長さ)を求め、その値をフィーチャーの属性に格納します。
Length Dimension: 入力フィーチャーのジオメトリ(Curve または Area)が3Dである(頂点がZ座標を持っている)場合、このパラメーターに2(次元)を設定するとXY平面に投影した2Dジオメトリの長さ、3(次元)を設定すると各頂点のZ座標を考慮した3次元空間における3Dジオメトリの長さが求められます。ジオメトリが2Dである場合は、どちらでも結果は同じです。
Multiplier: ジオメトリの座標値の単位で求めた長さに乗じる値を設定します。例えば、ジオメトリの座標値の単位がメートルの場合にキロメートル単位の長さを求めたいときは、このパラメーターに 0.001 または 1e-3(1.0 x 10-3 の意味)を設定します(1キロメートル = 1000メートル)。
Length Attribute: 求めた長さ(ジオメトリの座標値の単位で求めた長さに Multiplier パラメーターに設定した値を乗じた値)を格納する属性名を設定します。上の設定例では、_length という名前の属性に求めた長さが格納されます。
AreaCalculator
入力フィーチャーのジオメトリ(Area)の面積を求め、その値をフィーチャーの属性に格納します。
Type: 入力フィーチャーのジオメトリ(Area)が3Dである(頂点がZ座標を持っている)場合、このパラメーターに Plane Area を設定するとXY平面に投影した2Dジオメトリの面積、Sloped Area を設定すると3次元空間における傾いた3Dジオメトリの面積が求められます(3D Area の各頂点は同一平面にあることを前提とします)。
Area Attribute: 求めた面積(ジオメトリの座標値の単位で求めた面積に Multiplier パラメーターに設定した値を乗じた値)を格納する属性名を設定します。上の設定例では、_area という名前の属性に求めた面積が格納されます。
Multiplier: ジオメトリの座標値の単位で求めた面積に乗じる値を設定します。例えば、ジオメトリの座標値の単位がメートルの場合にヘクタール単位の面積を求めたいときは、このパラメーターに 0.0001 または 1e-4(1.0 x 10-4 の意味)を設定します(1ヘクタール = 10000平方メートル)。
測地座標系(緯度、経度)のジオメトリの長さや面積を求めるには
LenghtCalculator や AreaCalculator でジオメトリの長さや面積を求めたとき、それらの単位は入力フィーチャーのジオメトリの座標値の単位によって決まります。ジオメトリの座標値の単位がメートルであれば、デフォルト(Multiplier = 1)では、求められる長さの単位はメートル、面積の単位は平方メートルとなります。
ジオメトリの座標系が投影座標系(座標値の単位がメートル、フィートなどの長さの単位)である場合は、Multiplier パラメーターによって他の長さの単位に換算することができますが、測地座標系(緯度、経度)で作成されているジオメトリの長さや面積を求めるには、ジオメトリをあらかじめ適切な投影座標系に変換する必要があります。
投影座標系への変換は Reprojector または CsmapReprojector によって行うことができますが、どの投影座標系に変換するのが妥当であるかは、ジオメトリの地理的な所在地等に応じて検討しなければなりません。すべての入力フィーチャーが単一の、例えば平面直角座標IX(9)系の適用地域内にあることが確かならばそれが候補になりますが、入力データセットに含まれるフィーチャーが全国あるいは国外も含む広域に分布している場合には、適用範囲が限られる平面直角座標系やUTM座標系は妥当とは言えません。
そのような場合には、FMEの座標系ギャラリーに登録されている _AZMEA_ または_AZMED_ という、少し奇妙な名前の投影座標系への変換を検討してください。
_AZMEA_(Dynamic Reprojection Equal Area)は、任意の座標を基準点とするランベルト正積方位図法(Lambert azimuthal equal-area projection)によって定義される投影座標系(単位: メートル)であり、Reprojector 等で変換先の座標系として _AZMEA_ を指定すると、ワークスペースの実行時に、個々の入力フィーチャーについて元の座標系におけるバウンディングボックス中心を基準点とするランベルト正積方位図法の座標系が定義され、それに変換されます。
_AZMED_ (Dynamic Reprojection Equal Distance)は、任意の座標を基準点とする正距方位図法(Azimuthal equidistant projection)によって定義される投影座標系(単位: メートル)であり、Reprojector 等で変換先の座標系として _AZMED_ を指定すると、_AZMEA_ と同様に実行時に個々のフィーチャーについて動的に座標系が定義され、それに変換されます。
_AZMEA_ または _AZMED_ に変換することにより、平面直角座標系の系番号やUTMのゾーン番号などを考慮しなくても、広い範囲に分布するフィーチャーの長さや面積を統一的な手法で求めることができます。
参考: よく使う日本の座標系のFMEにおける名称(座標系識別子)
FME座標系識別子 | 説明 |
---|---|
LL-JGD2011_FME | JGD2011 緯度経度 |
JGD2011-01_FME ~ JGD2011-19_FME | JGD2011 平面直角座標 I(1)系 ~ XIX(19)系 |
LL-JGD2K | JGD2000 緯度経度 |
JGD2K.PlnRctCS-I ~ JGD2K.PlnRctCS-XIX | JGD2000 平面直角座標 I(1)系 ~ XIX(19)系 |
Tokyo | Tokyo Datum(旧日本測地系)緯度経度 |
Tokyo.PlnRctCS-I ~ Tokyo.PlnRctCS-XIX | Tokyo Datum(旧日本測地系)平面直角座標 I(1)系 ~ XIX(19)系 |
注: FME 2019.1以前ではJGD2011の座標系識別子とEPSGコードの対応が定義されていませんでしたが、FME 2019.2でそれが定義され、CoordinateSystemDescriptionConverter によって座標系識別子とEPSGコードの相互変換ができるようになりました。また、EPSGコードを表す座標系識別子(例えば「JDG2011 緯度経度」であれば “EPSG:6668″)も別名として使用できるようになりました。