空間述語「カバー」と「含む」の違いは何ですか?


9

DE-9IM交差行列の空間述語を理解しようとします。述語Covers(それぞれCoveredBy)とContains(それぞれ)の違いはわかりません。

私はとのジオメトリを描画しようとするJTSトポロジースイート彼らは常にある、Covers = True Contains = Trueの違いを参照すること、すなわち、(あるいはその両方偽です)が、私は彼らが異なる作るために管理していないCoversとしますContains。誰かがその違いを説明する例(できればWKTまたは写真)を持っていますか?

回答:


14

マーティン・デービス(の作成者を見てくださいJTSトポロジスイート)、Lin.earのth.inking:の癖空間述語「を含みます」

  1. A の外側にBのポイントがなく、Bの内側の少なくとも1つのポイントがAの内側にある場合、ジオメトリAにジオメトリB が含まれます
  2. A の外側にBのポイントがない場合、ジオメトリA ジオメトリBをカバーします

この条件を決定するために必要なことは、単純な境界ボックスの比較を実行することだけです。これは、containでは不可能です。GeometryのバウンディングボックスがRectangleで覆われている場合でも、Geometryが完全にRectangleの境界にあるかどうかをテストするには、さらにコストのかかる操作が必要です(この場合、述語は失敗します)。包含の定義をより一般的(包括的)にすることで、包含の定義を「簡素化」

あなたが見ればDE-9IM、あなたはそれが含まれている見ることができる(T*****FF*)カバーの特別な場合であります(T*****FF*, *T****FF*, ***T**FF*)

たとえば、containsの定義は、Polygonにその境界が含まれていないが、Polygonがその境界をカバーしていることを意味します。

ここに画像の説明を入力してください

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.