Within vs Completely-Within vs Within-Clementini

Posté le Tue 14 June 2016 dans SIG / Géographie
Temps de lecture estimé : 4 minute(s).

Note : Toutes ces explications et captures d'écran sont également valables pour les opérations spatiales Contains, Completely Contains et Contains Clementini.

Lorsqu'on fait une jointure spatiale avec ArcGis, on est parfois amené à se poser des questions existentielles... Par exemple, j'aimerais obtenir tous les segments contenus dans une zone géographique précise. En fait c'est plutôt simple à faire. Mais forcément, je finis par rencontrer un cas particulier, et je m’interroge alors sur le vrai comportement de l'option Within...

Je regarde donc la description des différentes opérations spatiales possibles, et je remarque que Within est peut-être un peu plus configurable que je ne le pensais... Within... Completely Within... Within Clementini... Mince alors, c'est quoi ce bordel ?

L'aide intégrée à la version 10.2.2 d'ArcGis étant on ne peut moins claire, j'ai créé un mini jeu de données pour tester ces opérations spatiales. Voici les résultats :

Note : Dans toutes les captures qui vont suivre, les éléments sélectionnés apparaissent en bleu "fluo".

Lines within Polygons

Within

Les lignes doivent se trouver entièrement à l'intérieur du polygone, bords inclus :

Completely Within

Les lignes doivent se trouver entièrement à l'intérieur du polygone, bords exclus :

Within Clementini

Les lignes doivent se trouver entièrement à l'intérieur du polygone, bords inclus, excepté si la ligne se situe complètement sur le bord :

Points within Polygons

Within

Les points doivent se trouver entièrement à l'intérieur du polygone, bords inclus :

Completely Within

Les lignes doivent se trouver entièrement à l'intérieur du polygone, bords exclus :

Within Clementini

Les lignes doivent se trouver entièrement à l'intérieur du polygone, bords exclus :

Points within Lines

Within

Les points doivent se trouver sur les lignes, extrémités inclues :

Completely Within

Les points doivent se trouver sur les lignes, extrémités exclues :

Within Clementini

Les points doivent se trouver sur les lignes, extrémités exclues :

Points within Points

Within

Les points doivent avoir exactement les mêmes coordonnées.

Completely Within

Cette opération est impossible, et une exception est levée.

Within Clementini

Les points doivent avoir exactement les mêmes coordonnées.

Lines within Lines

Within

Les lignes doivent se trouver sur les lignes, extrémités inclues :

Completely Within

Les lignes doivent se trouver sur les lignes, extrémités exclues :

Within Clementini

Les lignes doivent se trouver sur les lignes, extrémités inclues :

Polygons within Polygons

Within

Les polygones doivent se trouver entièrement à l'intérieur des polygones, bords inclus :

Completely Within

Les polygones doivent se trouver entièrement à l'intérieur des polygones, bords exclus :

Within Clementini

Les polygones doivent se trouver entièrement à l'intérieur des polygones, bords inclus :

Si on essaie de résumer

Bon... Comment je résume tout ceci de manière compréhensible, moi ? Voyons voir...

Within

Peu importe le type de géométrie, l'opération within inclue les bords et les extrémités. Ainsi :

PointLignePolygone
PointCoordonnées identiquessur la ligne, extrémités incluesdans le polygone, bord inclus
Ligne/sur la ligne, extrémités incluesdans le polygone, bords inclus
Polygone//dans le polygone, bords inclus

Completely Within

Peu importe le type de géométrie, l'opération completely within exclue les bords et les extrémités. Ainsi :

 PointLignePolygone
Point/sur la ligne, extrémités excluesdans le polygone, bords exclus
Ligne/sur la ligne, extrémités excluesdans le polygone, bords exclus
Polygone//dans le polygone, bords exclus

Within Clementini

Pour l'opération within clementini, je n'ai pas pu identifier de règle simple. L'inclusion ou non des bords et des extrémités dépend des cas :

PointLignePolygone
PointCoordonnées identiquessur la ligne, extrémités excluesdans le polygone, bord exclus
Ligne/sur la ligne, extrémités incluesdans le polygone, bords inclus,
excepté si la ligne se situe complètement sur un bord
Polygone//dans le polygone, bords inclus

En fait, within clementini n'a vraiment d'intérêt que dans cas particulier : Si on veut savoir quelles lignes sont inclues dans un polygone, bords compris, en excluant cependant les lignes se situant entièrement sur les bords du polygone. Dans tous les autres cas, within clementini sera avantageusement remplacée par within ou par completely within.

A retenir

  • Pour trouver les géométries inclues dans d’autres en incluant les bords et les extrémités du contenant, on utilisera within.
  • Pour trouver les géométries inclues dans d’autres en excluant les bords et les extrémités du contenant, on utilisera completely within.
  • On n'utilisera within clementini que dans un cas particulier : Pour trouver quelles lignes sont inclues dans un polygone, bords compris, en excluant les lignes se situant entièrement sur le bord du polygone.

Bon... Voilà qui est plus clair... pour moi en tout cas !