Qual è la differenza tra predicati spaziali "Covers" e "Contains"?


9

Cerco di comprendere i predicati spaziali della matrice di intersezione DE-9IM. Non capisco la differenza tra predicati Covers (rispettivamente CoveredBy ) e Contains (resp. Within ).

Cerco di disegnare geometrie con JTS Topology Suite , sono sempre Covers = True e Contains = True (o entrambe sono false) ma non riesco a renderle diverse, cioè a vedere la differenza tra Coverse Contains. Qualcuno ha un esempio (preferibilmente un WKT o un'immagine) che illustra la differenza?

Risposte:


14

Guarda Martin Davis (creatore della JTS Topology Suite ), Lin.ear th.inking: Quirks of the "Contains" Spatial Predicate

  1. La geometria A contiene la geometria B se nessun punto di B si trova all'esterno di A e almeno un punto dell'interno di B si trova all'interno di A
  2. La geometria A copre la geometria B se nessun punto di B si trova all'esterno di A

Tutto ciò che è necessario per determinare questa condizione è eseguire un semplice confronto del riquadro di selezione. Questo non è possibile con contiene, perché anche se il rettangolo di Geometria è coperto dal Rettangolo, è necessaria un'ulteriore operazione costosa per verificare se la Geometria si trova interamente nel limite del Rettangolo (nel qual caso il predicato fallisce). Copre "semplifica" la definizione di contiene rendendola più generale (inclusiva)

Se guardi DE-9IM , puoi vedere che contiene (T*****FF*)un caso particolare di copertine(T*****FF*, *T****FF*, ***T**FF*)

Ad esempio, la definizione di contiene implica che un poligono non contiene il suo confine ma un poligono copre il suo confine.

inserisci qui la descrizione dell'immagine

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.