Changeset 62 for trunk/workshop-foss4g/equality.rst
- Timestamp:
- 17/03/2012 00:49:40 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/workshop-foss4g/equality.rst
r52 r62 7 7 -------- 8 8 9 Ãtre en mesure de déterminer si deux geométries sont égales peut être compliqué. PostGIS met à votre disposition différentes fonctions permettant de juger de l'égalité à différents niveaux, bien que pour des raison de simplicité nous n uos contenterons ici de la définition fournie plus bas. Pour illustrer ces fonctions, nous utiliserontles polygones suivants.9 Ãtre en mesure de déterminer si deux geométries sont égales peut être compliqué. PostGIS met à votre disposition différentes fonctions permettant de juger de l'égalité à différents niveaux, bien que pour des raison de simplicité nous nous contenterons ici de la définition fournie plus bas. Pour illustrer ces fonctions, nous utiliserons les polygones suivants. 10 10 11 11 .. image:: ./equality/polygon-table.png … … 16 16 17 17 CREATE TABLE polygons (name varchar, poly geometry); 18 19 INSERT INTO polygons VALUES 18 19 INSERT INTO polygons VALUES 20 20 ('Polygon 1', 'POLYGON((-1 1.732,1 1.732,2 0,1 -1.732, 21 21 -1 -1.732,-2 0,-1 1.732))'), … … 27 27 2 0,1.5 -0.866,1 -1.732,0 -1.732,-1 -1.732,-1.5 -0.866, 28 28 -2 0,-1.5 0.866,-1 1.732))'), 29 ('Polygon 5', 'POLYGON((-2 -1.732,2 -1.732,2 1.732, 29 ('Polygon 5', 'POLYGON((-2 -1.732,2 -1.732,2 1.732, 30 30 -2 1.732,-2 -1.732))'); 31 31 32 32 SELECT Populate_Geometry_Columns(); 33 33 … … 35 35 36 36 Exactement égaux 37 ^^^^^^^^^^^^^^^^ ^^37 ^^^^^^^^^^^^^^^^ 38 38 39 L'égalité exacte est déterminée en comparant deux géométries, sommets par sommets, dans l'ordre, pour s'assurer que chacun est à une position identique. Les exemples suivant montrent comment cette méthode peut être limitée dans son éfficacité.39 L'égalité exacte est déterminée en comparant deux géométries, sommets par sommets, dans l'ordre, pour s'assurer que chacun est à une position identique. Les exemples suivant montrent comment cette méthode peut être limitée dans son efficacité. 40 40 41 41 .. code-block:: sql … … 47 47 .. image:: ./equality/start14.png 48 48 49 Dans cette exemple, les polygones sont seulement égaux à eux-même, mais jamais avec un des autres polygones (dans notre exemple les polygones de 1 à 3). Dans le cas des polygones 1, 2 et 3, les sommets sont à des position identiques mais sont définies dans un ordre différent. Le polygone 4 a des sommets en double causant la non-égalité avec le polygone 1.49 Dans cette exemple, les polygones sont seulement égaux à eux-même, mais jamais avec un des autres polygones (dans notre exemple les polygones de 1 à 3). Dans le cas des polygones 1, 2 et 3, les sommets sont à des positions identiques mais sont définis dans un ordre différent. Le polygone 4 a des sommets en double causant la non-égalité avec le polygone 1. 50 50 51 Spatial lement égaux52 ^^^^^^^^^^^^^^^ 51 Spatialement égaux 52 ^^^^^^^^^^^^^^^^^^ 53 53 54 Comme nous l'avons précédemment , l'égalité exacte ne prend pas en compte la nature spatiale des géométries. Il y a une fonction, nommée :command:`ST_Equals`, permettant de tester l'égalité spatiale ou l'équivalentdes géométries.54 Comme nous l'avons précédemment montré, l'égalité exacte ne prend pas en compte la nature spatiale des géométries. Il y a une fonction, nommée :command:`ST_Equals`, permettant de tester l'égalité spatiale ou l'équivalence des géométries. 55 55 56 56 .. code-block:: sql 57 57 58 SELECT a.name, b.name, CASE WHEN ST_Equals(a.poly, b.poly) 58 SELECT a.name, b.name, CASE WHEN ST_Equals(a.poly, b.poly) 59 59 THEN 'Spatially Equal' ELSE 'Not Equal' end 60 60 FROM polygons as a, polygons as b; … … 62 62 .. image:: ./equality/start15.png 63 63 64 Ces résultats sont plus proches de notre compréhension intuitive de l'égalité. Les polygones de 1 à 4 sont co sidérés comme égaux, puisque qu'elles recouvrent la même zone. Notez que ni la direction despolygones n'est considérée, le point de départ pour la définition du polygone, ni le nombre de points. Ce qui importe c'est que la zone géographique représentée est la même.64 Ces résultats sont plus proches de notre compréhension intuitive de l'égalité. Les polygones de 1 à 4 sont considérés comme égaux, puisque qu'ils recouvrent la même zone. Notez que ni la direction des polygones n'est considérée, ni le point de départ pour la définition du polygone, ni le nombre de points. Ce qui importe c'est que la zone géographique représentée soit la même. 65 65 66 66 Ãgalité des étendues 67 67 ^^^^^^^^^^^^^^^^^^^^^ 68 68 69 L'égalité exacte nécessite, dans le pire des cas, de comparer cha qu'un des sommets d'une géométrie pour déterminél'égalité. Ceci peut être trÚs lent, et s'avérer innaproprié pour comparer un grand nombre de géométries. Pour permettre de rendre plus rapide ces comparaison, l'opération d'égalité des étendue est fournit : :command:`=`. Cet opérateur utilise uniquement les étendues (cadre limite rectangulaire), assurant que les géométries occupent le même espace dans un repÚre cartésien en deux dimensions, mais ne représente pas nécessairement le même espace.69 L'égalité exacte nécessite, dans le pire des cas, de comparer chacun des sommets d'une géométrie pour déterminer l'égalité. Ceci peut être trÚs lent, et s'avérer innaproprié pour comparer un grand nombre de géométries. Pour permettre de rendre plus rapide ces comparaison, l'opération d'égalité des étendue est fournit : :command:`=`. Cet opérateur utilise uniquement les étendues (cadre limite rectangulaire), assurant que les géométries occupent le même espace dans un repÚre cartésien en deux dimensions, mais ne représente pas nécessairement le même espace. 70 70 71 71 .. code-block:: sql 72 72 73 SELECT a.name, b.name, CASE WHEN a.poly = b.poly 73 SELECT a.name, b.name, CASE WHEN a.poly = b.poly 74 74 THEN 'Equal Bounds' ELSE 'Non-equal Bounds' end 75 75 FROM polygons as a, polygons as b; … … 77 77 .. image:: ./equality/start17.png 78 78 79 Comme vous pouvez le constater, toutes les géométries égales ont aussi une étendue égale s. Malheureusement, le polygone 5 est aussi retourné comme étant égal avec ce test, puisqu'il partage la même étendue que les autres géométries. Mais alors, pourquoi est-ce utile ? Bien que cela soit traité en détail plus tard, la réponse courte est que cela permet l'utilisation d'indexation spatiales qui peuvent réduire drastiquement les ensembles de géométries à comparrer en utilisant des filtres utilisant cette égalité d'étendues.79 Comme vous pouvez le constater, toutes les géométries égales ont aussi une étendue égale. Malheureusement, le polygone 5 est aussi retourné comme étant égal avec ce test, puisqu'il partage la même étendue que les autres géométries. Mais alors, pourquoi est-ce utile ? Bien que cela soit traité en détail plus tard, la réponse courte est que cela permet l'utilisation d'indexations spatiales qui peuvent réduire drastiquement les ensembles de géométries à comparer en utilisant des filtres utilisant cette égalité d'étendue. 80 80
Note: See TracChangeset
for help on using the changeset viewer.