近接ツールによる距離の計算方法

2 つのフィーチャ間の距離は、それらの間の最小の分離、つまり 2 つのフィーチャが最接近する箇所として計算されます。 この論理は、距離を計算するジオプロセシング ツール ([最近接 (Near)][近接テーブルの生成 (Generate Near Table)][空間結合 (Spatial Join)] ([最も近い] オプションを設定) などによって適用されます。

距離の計測は、入力データが等距離投影座標系で指定されている場合に最も精度が高くなります。 距離の計算は座標系にかかわらず常に実行できますが、データが地理座標系か不適切に選択された投影座標系で指定されている場合、不正確または無意味な結果になる可能性があります。

座標系と投影法の詳細

以下のディスカッションでは、距離は常に 2 つのフィーチャ間の分離距離を指します。

特別な検討事項

次の点に注意してください。

  • 複数のフィーチャが、別のフィーチャに対して同等に最も近くなることがあります。 この場合、同等に最も近いフィーチャのいずれかが、最近接のフィーチャとしてランダムに選択されます。
  • 1 つのフィーチャに別のフィーチャが含まれているか、1 つのフィーチャが別のフィーチャ内に包含されている場合、それらのフィーチャ間の距離はゼロになります。
    • つまり、フィーチャがポリゴン内にある場合、フィーチャとそれを囲むポリゴンとの間の距離はゼロになります。
  • 2 つのフィーチャ間の距離は、少なくとも 1 つの x,y 座標を共有している場合にゼロになります。
    • つまり、2 つのフィーチャが交差、重複、横断、または接触する場合、それらのフィーチャ間の距離はゼロになります。
  • ポリゴンの中心や重心ではなく、常にポリゴン フィーチャの境界線までの距離が計算されます。
    • 前述のように、フィーチャがポリゴンに完全に包含される場合、フィーチャとそれを囲むポリゴン間の距離はゼロになります。
  • あらゆるタイプの 2 つのフィーチャ間の距離は、どちらを計測の始点や終点に使用するかにかかわらず、常に同じです。

距離計測の基本操作

距離の計算は、フィーチャのジオメトリー タイプに加え、座標系などの要素にも左右されます。 しかし、距離の計算方法を決定するには、以下に詳述する 3 つの基本的なルールがあります。

  1. 2 つのポイント間の距離は、ポイントを結ぶ直線である。
  2. ポイントからラインまでの距離は、垂線か、最も近い頂点である。
  3. ポリライン間の距離は、セグメントの頂点によって決定する。

ルール 1: 2 つのポイント間の距離は、ポイントを結ぶ直線である

以下の図は、2 つのポイント間の距離と、近接ツールで使用されるその他いくつかのキーワードおよびフィーチャを示します。

近接関連フィールドの図

上記の図で吹出しの中にあるキーワード (IN_FIDNEAR_DISTNEAR_FIDNEAR_XNEAR_YNEAR_ANGLE) は、[最近接 (Near)] ツールを実行したときに [近接テーブルの生成 (Generate Near Table)] ツールによって出力と入力フィーチャクラスに追加されるフィールドです。

マルチポイントからマルチポイント

マルチポイント間の距離を計算する特殊なケースでは、入力マルチポイント フィーチャの各ポイントから近接マルチポイントの各ポイントまでの距離はルール 1 を用いて計算し、その結果のうち最小距離が 2 つのマルチポイント フィーチャ間の距離となります。

さらに、いずれかのマルチポイントのポイントが、別のマルチポイントのポイント上にある場合、2 つのマルチポイント フィーチャ間の距離はゼロになります。 これはすべてのマルチパート フィーチャに該当します。

ルール 2: ポイントからポリラインまでの距離は、垂線か、最も近い頂点である

ArcGIS では、ライン フィーチャはポリラインと呼ばれます。 ラインとポリラインは同じ意味で使われます。 ポリラインはポイントの順序付きのコレクションです。 これらのポイントを頂点と呼びます。 ポリラインは複数の頂点を持つことができます。 2 つの頂点で定義されたラインは線分、またはセグメントと呼びます。 線分を定義する 2 つの頂点は端点と呼ばれます。

同様に、ポリゴンは 1 つ以上のポリラインで囲まれたエリアです。

ポイントから線分への最短距離は、線分への垂線です。 線分の端点の間に垂線を引けない場合、最も近い端点までの距離が最短距離になります。

ポイントからポリラインまでの距離

ポイントからポリライン

ポリラインに 1 本しか線分がない場合、ルール 2 を適用して距離を求めます。

ポリラインに複数の線分がある場合 (ごく一般的なケース)、まずポイントに最も近い線分を特定し、その後ルール 2 を適用して距離を求めます。

ポイントからポリゴン

ポリゴンとは線分の順序付きのコレクションで囲まれたエリアなので、ポイントからポリゴンまでの距離を計算するには、ポイントに最も近い線分を特定し、その後ルール 2 を適用して距離を求めます。

距離は、ポイントがポリゴンの外側にある場合にのみ正になります。それ以外はゼロです。

ポリゴン内およびポリゴン外の近距離

上記の図では、ポイント 2 と 3 の距離はゼロで、ポイント 1 と 4 の距離は正です。

ルール 3: ポリライン間の距離は、セグメントの頂点によって決定する

2 つの線分など、ポイントではないフィーチャについて:

  1. 入力セグメントの各端点から近接セグメントまでの距離はルール 2 を用いて計算されます。
  2. 近接セグメントの各端点から入力セグメントまでの距離を計算します。
これら 2 つの距離の値のうち、小さい方が 2 つのセグメント間の距離になります。

ポリラインからポリライン

最も単純なケースでは、どちらのポリライン フィーチャもそれぞれ 1 つのセグメントを持つと想定します。 以下の図に、頂点 C から、頂点 AB で定義されるセグメントへの垂線 CX を示します。 頂点 D からの垂線も計算できますが、その距離は CX よりも大きくなります。 したがって、CX はセグメント CD からセグメント AB までの最短距離になります。

なお、頂点 A または頂点 B からセグメント CD に垂線を引くことはできないので、頂点 A および頂点 B から頂点 C への最短距離が計算されます。 その結果、セグメント AB からセグメント CD までの最短距離は AC になります。

計算された 2 つの距離 (AC と CX) のうち、CX が頂点とセグメント間のすべての距離のうち最小なので、これが 2 つのセグメント間の最短距離となります。

2 つの線分間の距離

両方のポリラインに複数のセグメントがある場合、最も近い 2 つのセグメントを特定した後、ルール 3 によってそれらの間の距離が計算されます。

ポリラインからポリゴン

ポリラインとポリゴン間の距離を計算する場合、最も近い 2 つのセグメントを特定します。1 つはポリラインからのセグメント、もう 1 つはポリゴン境界を構成する一連のセグメントからのセグメントです。 これら 2 つのセグメント間の距離は、ルール 3 で説明した方法で計算されます。

サマリー

以下の図は、さまざまなフィーチャ タイプ間の距離の計算方法と、前述の最も近い位置がどこにあるか、全体像を示します。 すべての組み合わせを示すわけではないことに注意してください。

フィーチャ間の距離の計算方法

関連トピック