Changeset 38 for trunk/workshop-foss4g/spatial_relationships.rst
- Timestamp:
- 26/09/2011 16:47:24 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/workshop-foss4g/spatial_relationships.rst
r22 r38 1 1 .. _spatial_relationships: 2 2 3 Partie 10 : relations spatiales3 Partie 10 : Les relations spatiales 4 4 ================================= 5 5 6 Jusqu'à maintenant nous n'avons utilisé que des fonctions qui permettent de mesurer (:command:`ST_Area`, :command:`ST_Length`), de serialiser (:command:`ST_GeomFromText`) ou désérialiser (:command:`ST_AsGML`) des géométries. Ces fonctions ont en commun de fonctionner uniquementsur une géométrie à la fois.6 Jusqu'à maintenant nous avons utilisé uniquement des fonctions qui permettent de mesurer (:command:`ST_Area`, :command:`ST_Length`), de sérialiser (:command:`ST_GeomFromText`) ou désérialiser (:command:`ST_AsGML`) des géométries. Ces fonctions sont toutes utilisées sur une géométrie à la fois. 7 7 8 Les base de données spatiales sont puissantes car elle ne font pas que stoquer les géométries, elle ont aussi la faculté devérifier les *relations entre les géométries*.8 Les base de données spatiales sont puissantes car elle ne se contentent pas de stocker les géométries, elle peuvent aussi vérifier les *relations entre les géométries*. 9 9 10 Pour les questions comme "Quel est le plus proche garage à vélo prêt du par k ?" ou "Ou est l'intersection du métros avec telle rue ?" nous devrons comparer les géométries représentant les garage à vélo, les rues et les lignes de métros.10 Pour les questions comme "Quel est le plus proche garage à vélo prêt du parc ?" ou "Ou est l'intersection du métro avec telle rue ?", nous devrons comparer les géométries représentant les garage à vélo, les rues et les lignes de métro. 11 11 12 12 Le standard de l'OGC définit l'ensemble suivant de fonctions pour comparer les géométries. … … 15 15 --------- 16 16 17 :command:`ST_Equals(geometry A, geometry B)` test l'égalité spatiale de deux géométries.17 :command:`ST_Equals(geometry A, geometry B)` teste l'égalité spatiale de deux géométries. 18 18 19 19 .. figure:: ./spatial_relationships/st_equals.png 20 20 :align: center 21 21 22 ST_Equals retourne TRUE si les deux géométries sont du même type ,ont des coordonnées x.y identiques.22 ST_Equals retourne TRUE si les deux géométries sont du même type et ont des coordonnées x.y identiques. 23 23 24 24 PremiÚrement, essayons de récupérer la représentation d'un point de notre table ``nyc_subway_stations``. Nous ne prendrons que l'entrée : 'Broad St'. … … 36 36 Broad St | 0101000020266900000EEBD4CF27CF2141BC17D69516315141 | POINT(583571 4506714) 37 37 38 Maintenant, copiez / collez la valeur affich erpour tester la fonction :command:`ST_Equals`:38 Maintenant, copiez / collez la valeur affichée pour tester la fonction :command:`ST_Equals`: 39 39 40 40 .. code-block:: sql … … 50 50 .. note:: 51 51 52 La représentation du point n'est pas vraiment compréhensible (``0101000020266900000EEBD4CF27CF2141BC17D69516315141``) mais c'est exactement la représentation des coordonnées. Pour tester l'égalité, utiliserce format est nécessaire.52 La représentation du point n'est pas vraiment compréhensible (``0101000020266900000EEBD4CF27CF2141BC17D69516315141``) mais c'est exactement la représentation des coordonnées. Pour tester l'égalité, l'utilisation de ce format est nécessaire. 53 53 54 54 … … 56 56 ------------------------------------------------------ 57 57 58 :command:`ST_Intersects`, :command:`ST_Crosses`, et :command:`ST_Overlaps` test si l'intérieur des géométries s'intersect, se croise ou se chevauche.58 :command:`ST_Intersects`, :command:`ST_Crosses`, et :command:`ST_Overlaps` teste si l'intérieur des géométries s'intersecte, se croise ou se chevauche. 59 59 60 60 .. figure:: ./spatial_relationships/st_intersects.png 61 61 :align: center 62 62 63 :command:`ST_Intersects(geometry A, geometry B)` retourne t (TRUE) si l'intersection ne r énvoit pas un ensemble vide de résultats. Intersects retourne le résultat exactement inverse de la fonction disjoint.63 :command:`ST_Intersects(geometry A, geometry B)` retourne t (TRUE) si l'intersection ne renvoit pas un ensemble vide de résultats. Intersects retourne le résultat exactement inverse de la fonction disjoint. 64 64 65 65 .. figure:: ./spatial_relationships/st_disjoint.png … … 71 71 :align: center 72 72 73 Pour les comparaisons de couples de types multipoint/polygon, multipoint/linestring, linestring/linestring, linestring/polygon, et linestring/multipolygon, :command:`ST_Crosses(geometry A, geometry B)` retourne t (TRUE) si les résultats de l'intersection 74 75 For multipoint/polygon, multipoint/linestring, linestring/linestring, linestring/polygon, and linestring/multipolygon comparisons, :command:`ST_Crosses(geometry A, geometry B)` returns t (TRUE) if the intersection results in a geometry whose dimension is one less than the maximum dimension of the two source geometries and the intersection set is interior to both source geometries. 73 Pour les comparaisons de couples de types multipoint/polygon, multipoint/linestring, linestring/linestring, linestring/polygon, et linestring/multipolygon, :command:`ST_Crosses(geometry A, geometry B)` retourne t (TRUE) si les résultats de l'intersection est à l'intérieur des deux géométries. 76 74 77 75 .. figure:: ./spatial_relationships/st_overlaps.png … … 99 97 ---------- 100 98 101 :command:`ST_Touches` test si deux géométries se touchent en leur contour extérieur, mais leur contours intérieurne s'intersectent pas99 :command:`ST_Touches` teste si deux géométries se touchent en leur contours extérieurs, mais leur contours intérieurs ne s'intersectent pas 102 100 103 101 .. figure:: ./spatial_relationships/st_touches.png 104 102 :align: center 105 103 106 :command:`ST_Touches(geometry A, geometry B)` retourn TRUE soit si les contours des géométries s'intersectent ou si l'un des contours intérieur de l'une intersecte le contour extérieur de l'autre.104 :command:`ST_Touches(geometry A, geometry B)` retourn TRUE soit si les contours des géométries s'intersectent ou si l'un des contours intérieurs de l'une intersecte le contour extérieur de l'autre. 107 105 108 106 ST_Within et ST_Contains … … 114 112 :align: center 115 113 116 :command:`ST_Within(geometry A , geometry B)` retourne TRUE si la premiÚre géométrie sest complÚtement contenue dans l'autre. ST_Within test l'exact opposé au résultat de ST_Contains.114 :command:`ST_Within(geometry A , geometry B)` retourne TRUE si la premiÚre géométrie est complÚtement contenue dans l'autre. ST_Within test l'exact opposé au résultat de ST_Contains. 117 115 118 :command:`ST_Contains(geometry A, geometry B)` retourne TRUE si la seconde géométrie sest complÚtement contenue dans la premiÚre géométrie.116 :command:`ST_Contains(geometry A, geometry B)` retourne TRUE si la seconde géométrie est complÚtement contenue dans la premiÚre géométrie. 119 117 120 118 … … 122 120 -------------------------- 123 121 124 Une question qui arrive fréquemment dans le domaine du SIG est "trouver tout les trucs qui se trouve à une distance X de cet autre truc".122 Une question fréquente dans le domaine du SIG est "trouver tout les éléments qui se trouvent à une distance X de cet autre élément". 125 123 126 La fonction :command:`ST_Distance(geometry A, geometry B)` calcule la *plus courte* distance entre deux géo émétries. Cela est pratique pour récupérer la distance entre les objets.124 La fonction :command:`ST_Distance(geometry A, geometry B)` calcule la *plus courte* distance entre deux géométries. Cela est pratique pour récupérer la distance entre les objets. 127 125 128 126 .. code-block:: sql … … 136 134 3 137 135 138 Pour tester si deux ob ets sont à la même distance d'un autre, la fonction :command:`ST_DWithin` fournit une test tirant proffit des indexes. Cela est trÚs utile pour répondre au questions du genre : "Combien d'arbre se situedans un buffer de 500 mÚtres autour de cette route ?". Vous n'avez pas à calculer le buffer, vous avez simplement besoin de tester la distance entre les géométries.136 Pour tester si deux objets sont à la même distance d'un autre, la fonction :command:`ST_DWithin` fournit un test tirant profit des indexes. Cela est trÚs utile pour répondre a une question telle que: "Combien d'arbre se situent dans un buffer de 500 mÚtres autour de cette route ?". Vous n'avez pas à calculer le buffer, vous avez simplement besoin de tester la distance entre les géométries. 139 137 140 138 .. figure:: ./spatial_relationships/st_dwithin.png 141 139 :align: center 142 140 143 En utilisant de nouveau notre station de métro sBroad Street, nous pouvons trouver les rues voisines (à 10 mÚtres de) de la station :141 En utilisant de nouveau notre station de métro Broad Street, nous pouvons trouver les rues voisines (à 10 mÚtres de) de la station : 144 142 145 143 .. code-block:: sql … … 170 168 `ST_Contains(geometry A, geometry B) <http://postgis.org/docs/ST_Contains.html>`_ : retourne TRUE si aucun des points de B n'est à l'extérieur de A, et au moins un point de l'intérieur de B est à l'intérieur de A. 171 169 172 `ST_Crosses(geometry A, geometry B) <http://postgis.org/docs/ST_Crosses.html>`_ : retourne TRUE si la géométrie A a certains, mais pas la totalité de,ses points à l'intérieur de B.170 `ST_Crosses(geometry A, geometry B) <http://postgis.org/docs/ST_Crosses.html>`_ : retourne TRUE si la géométrie A a certains, mais pas la totalité, de ses points à l'intérieur de B. 173 171 174 172 `ST_Disjoint(geometry A , geometry B) <http://postgis.org/docs/ST_Disjoint.html>`_ : retourne TRUE si les gémétries nes s'intersectent pas - elles n'ont aucun point en commun.
Note: See TracChangeset
for help on using the changeset viewer.