Bienvenue sur PostGIS.fr

Bienvenue sur PostGIS.fr , le site de la communauté des utilisateurs francophones de PostGIS.

PostGIS ajoute le support d'objets géographique à la base de données PostgreSQL. En effet, PostGIS "spatialise" le serverur PostgreSQL, ce qui permet de l'utiliser comme une base de données SIG.

Maintenu à jour, en fonction de nos disponibilités et des diverses sorties des outils que nous testons, nous vous proposons l'ensemble de nos travaux publiés en langue française.


Ignore:
Timestamp:
17/03/2012 00:49:40 (12 years ago)
Author:
thomasg
Message:

Fin correction typo et orthographe V2 du document

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/workshop-foss4g/equality.rst

    r52 r62  
    77-------- 
    88 
    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 nuos contenterons ici de la définition fournie plus bas. Pour illustrer ces fonctions, nous utiliseront les 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. 
    1010 
    1111.. image:: ./equality/polygon-table.png 
     
    1616 
    1717  CREATE TABLE polygons (name varchar, poly geometry); 
    18    
    19   INSERT INTO polygons VALUES  
     18 
     19  INSERT INTO polygons VALUES 
    2020    ('Polygon 1', 'POLYGON((-1 1.732,1 1.732,2 0,1 -1.732, 
    2121        -1 -1.732,-2 0,-1 1.732))'), 
     
    2727        2 0,1.5 -0.866,1 -1.732,0 -1.732,-1 -1.732,-1.5 -0.866, 
    2828        -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, 
    3030        -2 1.732,-2 -1.732))'); 
    31          
     31 
    3232   SELECT Populate_Geometry_Columns(); 
    3333 
     
    3535 
    3636Exactement égaux 
    37 ^^^^^^^^^^^^^^^^^^ 
     37^^^^^^^^^^^^^^^^ 
    3838 
    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é. 
     39L'é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é. 
    4040 
    4141.. code-block:: sql 
     
    4747.. image:: ./equality/start14.png 
    4848 
    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. 
     49Dans 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. 
    5050 
    51 Spatiallement égaux 
    52 ^^^^^^^^^^^^^^^ 
     51Spatialement égaux 
     52^^^^^^^^^^^^^^^^^^ 
    5353 
    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'équivalent des géométries. 
     54Comme 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. 
    5555 
    5656.. code-block:: sql 
    5757 
    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) 
    5959      THEN 'Spatially Equal' ELSE 'Not Equal' end 
    6060    FROM polygons as a, polygons as b; 
     
    6262.. image:: ./equality/start15.png 
    6363 
    64 Ces résultats sont plus proches de notre compréhension intuitive de l'égalité. Les polygones de 1 à 4 sont cosidé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. 
     64Ces 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. 
    6565 
    6666Égalité des étendues 
    6767^^^^^^^^^^^^^^^^^^^^^ 
    6868 
    69 L'égalité exacte nécessite, dans le pire des cas, de comparer chaqu'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. 
     69L'é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. 
    7070 
    7171.. code-block:: sql 
    7272 
    73   SELECT a.name, b.name, CASE WHEN a.poly = b.poly  
     73  SELECT a.name, b.name, CASE WHEN a.poly = b.poly 
    7474      THEN 'Equal Bounds' ELSE 'Non-equal Bounds' end 
    7575    FROM polygons as a, polygons as b; 
     
    7777.. image:: ./equality/start17.png 
    7878 
    79 Comme vous pouvez le constater, toutes les géométries égales ont aussi une étendue égales. 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. 
     79Comme 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. 
    8080 
Note: See TracChangeset for help on using the changeset viewer.