ArcMap の空間検索条件で指定する"Clementini(クレメンティーニ)"とは

      2013/10/31

後輩から「空間検索ダイアログの "ターゲット レイヤ フィーチャの空間選択方法にある、...(Clementini)「クレメンティーニ」って何ですか?」と質問されました。ちょうど今年のはじめに同じ質問があって調べてたんだけど、すっかり忘れてしまってたのでメモしておきます。

Clementini とは、クレメンティーニさんたちが考えた空間検索のロジックだそうで、含む(contains)や含まれる(within)という関係で空間検索する際、境界線のみに配置されているジオメトリを条件から除外するものです。

ヘルプに解説が書かれてますが、文書だけだと理解しにくいので下の図を見てみてください。

マップ

ポリゴン レイヤとポリライン レイヤがあります。ここで、ポリゴンに含まれているポリライン フィーチャを空間検索で選択したいとします。

空間検索ダイアログ

[選択] → [空間検索] から空間検索ダイアログを開き、

  • ターゲット レイヤ:Polyline
  • ソース レイヤ:Polygon

と選択します。ターゲット レイヤ フィーチャの空間選択方法で、条件を指定しますが、3種類の条件で選択されるフィーチャの違いを見ています。

含まれる

  • ターゲット レイヤ フィーチャの空間選択方法:ソース レイヤ フィーチャに含まれる

完全に含まれる

  • ターゲット レイヤ フィーチャの空間選択方法:ソース レイヤ フィーチャに完全に含まれる

完全に含まれる_Clementini

  • ターゲット レイヤ フィーチャの空間選択方法:ソース レイヤ フィーチャに含まれる(Clementini)

このように、境界線と重なる箇所にのみ配置されているジオメトリは「含まれる(Clementini)」の条件を指定した場合に除外されます。ソースとターゲットが同次元のジオメトリの場合には違いがありませんが、ターゲットのジオメトリの次元が低い場合に違いがでます。

ちなみに、ポリライン上にあるポイントで空間検索した場合、「含まれる(Clementini)」ではポリラインの端点上に存在するポイントが選択されません。ただ、これは「完全に含まれる」と同じ結果です。

百聞は一見にしかずなので、興味がある方はこのデータで実際に動作を確認してみてください。ちなみにデータは ArcGIS 10.1 で作成しました。バージョン 10 以下の方は開けませんのでごめんなさい。

久しぶりに GIS ネタを書いた。

 - ArcGIS, GIS