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 :
Point | Ligne | Polygone | |
Point | Coordonnées identiques | sur la ligne, extrémités inclues | dans le polygone, bord inclus |
Ligne | / | sur la ligne, extrémités inclues | dans 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 :
Point | Ligne | Polygone | |
Point | / | sur la ligne, extrémités exclues | dans le polygone, bords exclus |
Ligne | / | sur la ligne, extrémités exclues | dans 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 :
Point | Ligne | Polygone | |
Point | Coordonnées identiques | sur la ligne, extrémités exclues | dans le polygone, bord exclus |
Ligne | / | sur la ligne, extrémités inclues | dans 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 !