Quelle est la différence entre les prédicats spatiaux «Covers» et «Contains»?

9

J'essaie de comprendre les prédicats spatiaux de la matrice d'intersection DE-9IM. Je n'ai pas la différence entre les prédicats Covers (respectifs CoveredBy ) et Contains (resp. Within ).

J'essaie de dessiner des géométries avec JTS Topology Suite , elles sont toujours Covers = True et Contains = True (ou les deux sont fausses) mais je n'arrive pas à les rendre différentes, c'est-à-dire à voir la différence entre Coverset Contains. Quelqu'un at-il un exemple (de préférence un WKT ou une image) qui illustre la différence?

Wernfried Domscheit
la source

Réponses:

14

Regardez Martin Davis (créateur de la suite de topologie JTS ), Lin.ear th.inking: Quirks of the "Contains" Spatial Predicate

  1. La géométrie A contient la géométrie B si aucun point de B ne se trouve à l'extérieur de A, et au moins un point de l'intérieur de B se trouve à l'intérieur de A
  2. La géométrie A couvre la géométrie B si aucun point de B ne se trouve à l'extérieur de A

Tout ce qui est nécessaire pour déterminer cette condition est d'effectuer une comparaison simple de boîte englobante. Cela n'est pas possible avec contient, car même si la boîte englobante de la géométrie est couverte par le rectangle, une opération coûteuse supplémentaire est nécessaire pour tester si la géométrie se trouve entièrement à la frontière du rectangle (auquel cas le prédicat échoue). Couvre "simplifie" la définition de contient en la rendant plus générale (inclusive)

Si vous regardez DE-9IM , vous pouvez voir que contient (T*****FF*)un cas particulier de couvertures(T*****FF*, *T****FF*, ***T**FF*)

Par exemple, la définition de contient implique qu'un polygone ne contient pas sa frontière mais qu'un polygone couvre sa frontière.

entrez la description de l'image ici

gène
la source