近接解析ツールによる距離の計算方法
距離の定義方法
任意の 2 フィーチャ間の距離は、2 フィーチャ間の最短距離、つまり 2 つのフィーチャが互いに最も近い箇所の距離として計算されます。このロジックは、[最近接(Near)]、[近接情報テーブルの生成(Generate Near Table)]、[ポイント間距離(Point Distance)]、[空間結合(Spatial Join)](マッチ オプションに CLOSEST を指定)などのツールを含む、距離を計算するすべてのジオプロセシング ツールで適用されます。
距離の計測値は、入力データが正距投影座標系であるときに最も正確になります。距離の計算は座標系に関係なく常に実行できますが、データが地理座標系または不適切に選択された投影座標系であるときには、不正確な結果や意味のない結果が得られる場合があります。
以下の説明では、距離は常に 2 フィーチャ間の最短距離のことを指します。
特別な検討事項
- あるフィーチャに対して、複数のフィーチャが同等に最短である場合があります。この場合、同等に最短なフィーチャのうちの 1 つが、最短フィーチャとしてランダムに選択されます。
- 1 つのフィーチャが別のフィーチャを含んでいるときや、別のフィーチャ内に存在するときには、2 フィーチャ間の距離は 0 になります。
- これはつまり、フィーチャがポリゴンの内部にあるときには、フィーチャと周囲のポリゴンとの距離は 0 になるということです。
- 2 フィーチャ間で 1 つ以上の X、Y 座標が共有されている場合は、常に 2 フィーチャ間の距離は 0 になります。
- これはつまり、2 つのフィーチャが交差しているか、重なり合っているか、接している場合は、2 フィーチャ間の距離は 0 になるということです。
- ポリゴンの中心または重心までの距離ではなく、常にポリゴン フィーチャの境界までの距離が計算されます。
- 上述したように、フィーチャが完全にポリゴンの内部にある場合、フィーチャと周囲のポリゴンとの距離は 0 になります。
- 任意のタイプの 2 フィーチャ間の距離は、どちらのフィーチャから計測しても常に同じです。
距離の検出に関する基本操作
距離の計算は、フィーチャのジオメトリ タイプと、座標系などの他の要因に依存します。ただし、距離の計算方法の決定には 3 つの基本ルールがあります。各ルールについては、以下に詳しく説明します。
- 2 ポイント間の距離は、ポイント同士を結ぶ直線とします。
- ポイントからラインまでの距離は、垂線または最も近い頂点のいずれかとします。
- ポリライン間の距離は、セグメントの頂点によって決定されます。
ルール 1:2 ポイント間の距離は、ポイント同士を結ぶ直線とする
次の図は、2 ポイント間の距離と、近接解析ツールで使用される他のいくつかのキーワードおよびフィーチャを示しています。
上記の吹出し内のキーワード(IN_FID、NEAR_DIST、NEAR_FID、NEAR_X、NEAR_Y、および NEAR_ANGLE)は、[近接情報テーブルの生成(Generate Near Table)] ツールおよび [ポイント間距離(Point Distance)] ツールによって出力フィーチャクラスに追加され、[最近接(Near)] ツール実行時に入力フィーチャクラスに追加されるフィールドです。
マルチポイント間の距離
マルチポイント間の距離を計算する特殊なケースでは、入力マルチポイント フィーチャの各ポイントから近接するマルチポイントの各ポイントまでの距離をルール 1 を使用して計算し、これらのうち最も小さい距離が 2 つのマルチポイント フィーチャ間の距離になります。
さらに、マルチポイントのポイントの 1 つが別のマルチポイントのポイント上にある場合、2 つのマルチポイント フィーチャ間の距離は 0 になります。これはすべてのマルチパート フィーチャに適用されます。
ルール 2: ポイントからポリラインまでの距離は、垂線または最も近い頂点とする
ArcGIS では、ライン フィーチャはポリラインと呼ばれます。これらの 2 つの単語(ラインとポリライン)は置き換え可能です。ポリラインは順序付けされたポイントの集合体であり、これらのポイントは頂点と呼ばれます。個々の頂点は頂点です。ポリラインに、頂点の数の制限はありません。2 つの頂点によって定義されるラインはライン セグメント、またはセグメントと呼ばれます。ライン セグメントを定義する 2 つの頂点は、端点と呼ばれます。
同様に、ポリゴンは 1 つ以上のポリラインによって定義される閉じたエリアになります。
ポイントからライン セグメントまでの最短距離は、ライン セグメントへの垂線になります。ライン セグメントの端点間に垂線が引けない場合、最も近い端点までの距離が最短距離になります。
ポイントからポリラインまでの距離
ポリラインにライン セグメントが 1 つしかない場合は、ルール 2 を適用して距離を取得します。
ポリラインに複数のライン セグメントがあるとき(一般的な場合)は、まずポイントに最も近いライン セグメントが決定され、次にルール 2 を適用して距離を取得します。
ポイントからポリゴンまでの距離
ポリゴンは順序付けされたライン セグメントのコレクションによって閉じられたエリアであるため、ポイントからポリゴンまでの距離の計算では、ポイントに最も近いライン セグメントを特定し、次にルール 2 を適用して距離を取得します。
距離は、ポリゴンの外側にポイントがあるときのみ正の値になります。それ以外の場合は 0 になります。
上の図では、ポイント 2 および 3 に対する距離は 0 になり、ポイント 1 および 4 に対する距離は正の値になります。
ルール 3: ポリライン間の距離は、ライン セグメントの頂点によって決定される
ポイントを持たない 2 つのフィーチャ(2 つのライン セグメントなど)の場合:
- 入力セグメントの各端点から近接するセグメントまでの距離はルール 2 を使用して計算されます。
- 近接するセグメントの各端点から入力セグメントまでの距離が計算されます。
ポリライン間の距離
最も単純なケースとして、両方のポリライン フィーチャにそれぞれ 1 つのセグメントがあるとします。下の図は、頂点 C から 頂点 A、B で定義されるセグメントへの垂線 CX を示しています。頂点 D からの垂線も計算されますが、この距離は CX よりも大きくなります。このため、CX がセグメント CD から セグメント AB への最短距離になります。
頂点 A または B からセグメント CD までの垂線は引けないため、最短距離は頂点 A および B から頂点 C までの距離で計算されます。結果として、AC がセグメント AB から セグメント CD までの最短距離になります。
計算された 2 つの距離(AC および CX)のうち、すべての頂点~セグメント間の距離で最小となる CX が 2 セグメント間の最短距離になります。
両方のポリラインに複数のセグメントがあるときには、2 つの最も近いセグメントが検出され、これらの間の距離がルール 3 によって計算されます。
ポリラインからポリゴンまでの距離
ポリラインとポリゴンとの間の距離を計算するときには、2 つの最も近いセグメントが特定されます。このとき、1 つはポリラインから、もう 1 つはポリゴン境界を構成する一連のセグメントから特定されます。これらの 2 セグメント間の距離は、ルール 3 に説明されているプロセスに従って計算されます。
近接角度の計算
任意の 2 つのフィーチャ タイプ間の距離は、2 つの最も近いポイント間の距離として計算され、2 つのポイントの間にラインが引かれます。このラインと水平軸との間の角度が近接角度になります。
角度は反時計回りに 0 ~ 180 度までの間で計測されます。
角度は時計回りに 0 ~ -180 度までの間で計測されます。
まとめ
次の図は、さまざまなフィーチャ タイプ間の距離の計算方法と、上述した最近接箇所の全体像を示しています。すべての組み合わせが示されているわけではありません。