Accesseurs spatiaux pour ST_Geometry
Les accesseurs spatiaux renvoient la propriété d'une géométrie. Certains accesseurs permettent de déterminer les propriétés suivantes d'une entité ST_Geometry :
Dimensionnalité
Les dimensions d'une géométrie sont les coordonnées minimales (aucune, x, y) requises pour définir l'étendue spatiale de la géométrie.
Une géométrie peut avoir une dimension de 0, 1 ou 2.
Ces dimensions sont les suivantes :
- 0 — N'a ni longueur ni surface
- 1 - A une longueur (x ou y)
- 2 - Contient une surface (x et y)
Les sous-types de point et multi-points ont une dimension de 0. Les points représentent des entités à zéro dimension pouvant être modélisées avec une seule coordonnée, alors que les objets multi-points représentent des données devant être modélisées avec une grappe de coordonnées non connectées.
Les sous-types de chaîne de lignes et multilinestring ont une dimension de 1. Ils stockent des entités telles que des segments de route, des cours d'eau ramifiés et toute autre entité de nature linéaire.
Les sous-types polygon et multipolygon ont une dimension de 2. Il s'agit de peuplements forestiers, de parcelles, de plans d'eau et d'autres entités ayant un périmètre qui délimite une surface définissable pouvant être restituée par le type de données polygon ou multipolygon.
La dimension est importante non seulement comme propriété du sous-type mais également pour déterminer la relation spatiale entre deux entités. La dimension de l'entité ou des entités résultantes indique si l'opération a réussi ou non. Les dimensions des entités sont examinées pour déterminer leur mode de comparaison.
La fonction ST_Dimension permet d'évaluer la dimension d'une géométrie, elle part d'une entité ST_Geometry et renvoie sa dimension comme nombre entier. Reportez-vous à la rubrique ST_Dimension pour découvrir la syntaxe et un exemple d'utilisation de cette fonction.
Les coordonnées d'une géométrie ont également des dimensions. Si une géométrie a uniquement des coordonnées x et y, la dimension des coordonnées est 2. Si une géométrie a des coordonnées x, y et z, la dimension des coordonnées est 3. Si une géométrie a des coordonnées x, y, z et m, la dimension des coordonnées est 4.
Vous pouvez utiliser la fonction ST_CoordDim pour déterminer les dimensions présentes dans une géométrie.
Coordonnées z
Certaines géométries ont une altitude ou une profondeur associée, une troisième dimension. Chacun des points qui forment la géométrie d'une entité peut comprendre une coordonnée z facultative qui représente une altitude ou une profondeur par rapport à la surface de la terre.
Le prédicat ST_Is3D part d'un élément ST_Geometry et renvoie 1 (TRUE) si la fonction a des coordonnées z et 0 (FALSE) sinon.
Vous pouvez déterminer la coordonnée z d'un point à l'aide de la fonction ST_Z.
La fonction ST_MaxZ renvoie la coordonnée z maximale et la fonction ST_MinZ renvoie la coordonnée z minimale d'une géométrie.
Mesures
Les mesures sont des valeurs attribuées à chaque coordonnée. Elles servent pour les applications de référencement linéaire et de segmentation dynamique. Par exemple, les localisations des bornes kilométriques situées le long d'une autoroute peuvent contenir des mesures indiquant leur position. La valeur peut représenter toute donnée stockable comme nombre à double précision.
Le prédicat ST_IsMeasured part d'une géométrie et renvoie 1 (TRUE) si elle contient des mesures et 0 (FALSE) sinon. (Utilisé uniquement avec l'implémentation Oracle de ST_Geometry.)
Vous pouvez découvrir la valeur de mesure d'un point à l'aide de la fonction ST_M.
Type de géométrie
Le type de géométrie fait référence au type d'entité géométrique. Il s'agit notamment des entités suivantes :
- Points et multi-points
- Lignes et multilignes
- Polygones et multipolygones
ST_Geometry est une superclasse qui peut stocker différents sous-types. Pour déterminer le sous-type d'une géométrie, utilisez la fonction ST_GeometryType ou ST_Entity (Oracle uniquement).
Ensemble de points (sommets) et nombre de points
Une géométrie peut avoir zéro points ou plus. Une géométrie est considérée vide si elle a zéro points. Le sous-type point est la seule géométrie limitée à zéro ou un point ; tous les autres sous-types peuvent en comprendre zéro ou plus.
ST_Point
Un objet ST_Point est une géométrie à zéro dimension, occupant une seule localisation dans l'espace de coordonnées. Un objet ST_Point a une seule valeur de coordonnée x,y, est toujours simple et a une limite NULL. Les objets ST_Point permettent de définir des entités telles que les puits de pétrole, les points de repère ou les sites de prélèvement d'échantillons d'eau.
Parmi les fonctions applicables uniquement au type de données ST_Point, citons :
- ST_X - Renvoie la valeur de coordonnée x d'un type de données ponctuel comme nombre à double précision
- ST_Y - Renvoie la valeur de coordonnée y d'un type de données ponctuel comme nombre à double précision
- ST_Z- Renvoie la valeur de coordonnée z d'un type de données ponctuel comme nombre à double précision
- ST_M - Renvoie la valeur de coordonnée m d'un type de données ponctuel comme nombre à double précision
ST_MultiPoint
Un objet ST_MultiPoint est un ensemble d'éléments ST_Point et, comme ses éléments, a une dimension de 0. Un objet ST_MultiPoint est simple si ses éléments occupent tous des coordonnées d'espace différentes. La limite d'un objet ST_MultiPoint est NULL. Les objets ST_MultiPoint permettent de définir par exemple des réseaux de diffusion aérienne ou des foyers de déclaration d'une maladie.
Longueur et surface
La longueur et la surface sont des caractéristiques mesurables des géométries. Les objets de chaîne de lignes et les éléments des objets multilinestring sont unidimensionnels et ont comme caractéristique la longueur. Les objets polygon et les éléments des objets multipolygon sont des surfaces bidimensionnelles et présentent donc une surface mesurable. Vous pouvez utiliser les fonctions ST_Length et ST_Area pour déterminer ces propriétés. Les unités de mesure varient selon le stockage des données.
ST_LineString
Un objet ST_LineString est un objet linéaire stocké comme une séquence de points définissant un chemin interpolé linéaire. L'objet ST_LineString est simple s'il n'intersecte pas son intérieur. Les extrémités (la limite) d'un objet ST_LineString fermé occupent le même point dans l'espace. Un objet ST_LineString est une boucle s'il est à la fois fermé et simple. Parmi les propriétés héritées de la superclasse ST_Geometry, les objets ST_LineString présentent une longueur. Les objets ST_LineString permettent généralement de définir des entités linéaires telles que les routes, les rivières et les lignes à haute tension.
Les extrémités forment normalement la limite d'un objet ST_LineString, sauf s'il est fermé auquel cas la limite est NULL. L'intérieur d'un objet ST_LineString est le chemin continu entre les extrémités, sauf s'il est fermé auquel cas l'intérieur est continu.
Parmi les fonctions applicables aux objets ST_LineString, citons :
- ST_StartPoint - Renvoie le premier point de l'objet ST_LineString donné
- ST_EndPoint - Renvoie le dernier point d'un objet ST_LineString
- ST_PointN - Part d'un objet ST_LineString et de l'index d'un point énième et renvoie ce point
- ST_Length - Renvoie la longueur d'un objet ST_LineString comme nombre à double précision
- ST_NumPoints - Evalue un objet ST_LineString et renvoie le nombre de points de sa séquence comme nombre entier
- ST_IsRing - Prédicat qui renvoie 1 (TRUE) si l'objet ST_LineString donné est une boucle et 0 (FALSE) dans le cas contraire
- ST_IsClosed - Prédicat qui renvoie 1 (TRUE) si l'objet ST_LineString donné est fermé et 0 (FALSE) dans le cas contraire
L'illustration ci-dessous montre des exemples d'objets ST_LineString : (1) est un objet ST_LineString simple, non fermé ; (2) est un objet ST_LineString non simple, non fermé ; (3) est un objet ST_LineString fermé, simple et donc une boucle ; enfin, (4) est un objet ST_LineString fermé, non simple - ce n'est pas une boucle.
ST_MultiLineString
Un objet ST_MultiLineString est un ensemble d'éléments ST_LineString. Les objets ST_MultiLineString sont simples s'ils ne s'intersectent qu'aux extrémités des éléments ST_LineString. Les objets ST_MultiLineString sont non simples si les intérieurs des éléments ST_LineString s'intersectent.
La limite d'un objet ST_MultiLineString est constituée par les extrémités non intersectées des éléments ST_LineString. La limite d'un objet ST_MultiLineString est NULL si toutes les extrémités de tous les éléments sont intersectées. En plus des propriétés héritées de la superclasse ST_Geometry, les objets ST_MultiLineString présentent une longueur. Les objets ST_MultiLineString permettent de définir des entités linéaires discontinues, telles que des cours d'eau ou des réseaux routiers.
L'illustration suivante montre des exemples d'objets ST_MultiLineString : (1) est un objet ST_MultiLineString simple dont la limite est constituée par les quatre extrémités de ses deux éléments ST_LineString. (2) est un objet ST_MultiLineString simple car seules les extrémités des éléments ST_LineString s'intersectent. La limite est constituée par les deux extrémités non intersectées. (3) est un objet ST_MultiLineString non simple, car l'intérieur de l'un de ses éléments ST_LineString est intersecté. La limite de cet objet ST_MultiLineString est constituée par les trois extrémités non intersectées. (4) est un objet ST_MultiLineString simple non fermé. Il n'est pas fermé car ses éléments ST_LineString ne sont pas fermés. Il est simple car aucun des intérieurs des éléments ST_LineString n'est intersecté. (5) est un objet ST_MultiLineString unique, simple et fermé. Il est fermé car tous ses éléments sont fermés. Il est simple car aucun de ses éléments n'intersecte les intérieurs.
Les fonctions applicables aux objets ST_MultiLineString comprennent ST_Length et ST_IsClosed.
La fonction ST_Length évalue un objet ST_MultiLineString et renvoie la longueur cumulée de tous ses éléments ST_LineString comme nombre à double précision.
Le prédicat ST_IsClosed renvoie 1 (TRUE) si l'objet ST_MultiLineString donné est fermé et 0 (FALSE) sinon.
ST_Polygon
Un objet ST_Polygon est une surface bidimensionnelle stockée comme une séquence de points définissant sa boucle de contour extérieur et 0 ou plus boucles intérieures. Les objets ST_Polygon sont toujours simples. Les objets ST_Polygon définissent des entités ayant une étendue spatiale, telle que les parcelles, les plans d'eau et les zones de compétence juridique.
L'illustration ci-dessous montre des exemples d'objets ST_Polygon : (1) est un objet ST_Polygon dont la limite est définie par une boucle extérieure. (2) est un objet ST_Polygon dont la limite est définie par une boucle extérieure et deux boucles intérieures. La surface à l'intérieur des boucles intérieures fait partie de l'extérieur de l'objet ST_Polygon. (3) est un objet ST_Polygon légal, car les boucles s'intersectent en un seul point tangent.
La boucle extérieure et toutes les boucles intérieures définissent la limite d'un objet ST_Polygon, et l'espace situé entre les boucles définit l'intérieur de l'objet ST_Polygon. Les boucles d'un objet ST_Polygon peuvent s'intersecter en un point tangent mais ne peuvent se croiser. En plus des autres propriétés héritées de la superclasse ST_Geometry, les objets ST_Polygon présentent une surface.
Parmi les fonctions applicables à un objet ST_Polygon, citons :
- ST_Area - Renvoie la surface d'un objet ST_Polygon comme nombre à double précision
- ST_Centroid - Renvoie un objet ST_Point représentant le centre de l'enveloppe de l'objet ST_Polygon
- ST_ExteriorRing - Renvoie la boucle extérieure d'un objet ST_Polygon comme objet ST_LineString
- ST_InteriorRingN - Evalue un objet ST_Polygon et un index et renvoie la énième boucle intérieure comme objet ST_LineString
- ST_NumInteriorRing - Renvoie le nombre de boucles intérieures d'un objet ST_Polygon
- ST_PointOnSurface - Renvoie un objet ST_Point nécessairement situé dans la surface de l'objet ST_Polygon donné
ST_MultiPolygon
La limite d'un objet ST_MultiPolygon est la longueur cumulée des boucles extérieures et intérieures de ses éléments. L'intérieur d'un objet ST_MultiPolygon est défini par les intérieurs cumulés de ses éléments ST_Polygon. La limite d'un objet ST_MultiPolygon ne peut s'intersecter qu'en un point tangent. En plus des propriétés héritées de la superclasse ST_Geometry, les objets ST_MultiPolygon présentent une longueur. Les objets ST_MultiPolygon définissent des entités telles qu'une strate forestière ou une parcelle discontinue, par exemple une chaîne d'îlots du Pacifique.
L'illustration suivante montre des exemples d'objets ST_MultiPolygon : (1) est un objet ST_MultiPolygon avec deux éléments ST_Polygon. Sa limite est définie par les deux boucles extérieures et les trois boucles intérieures. (2) est un objet ST_MultiPolygon avec deux éléments ST_Polygon. Sa limite est définie par les deux boucles extérieures et les deux boucles intérieures. Les deux éléments ST_Polygon s'intersectent en un point tangent.
Les fonctions applicables aux objets ST_MultiPolygon comprennent ST_Area, ST_Centroid et ST_PointOnSurface.
La fonction ST_Area renvoie un nombre à double précision représentant la valeur ST_Area cumulée des éléments ST_Polygon d'un objet ST_MultiPolygon.
La fonction ST_Centroid renvoie un objet ST_Point qui est le centre de l'enveloppe d'un objet ST_MultiPolygon.
La fonction ST_PointOnSurface évalue un objet ST_MultiPolygon et renvoie un objet ST_Point nécessairement situé dans la surface de l'un de ses éléments ST_Polygon.
Nombre de géométries simples dans une géométrie multi-parties
Les géométries multi-parties sont composées de géométries individuelles.
Il est possible de déterminer le nombre de géométries individuelles comprises dans une géométrie multi-parties, telles qu'un objet ST_MultiPoint, ST_MultiLineString ou ST_MultiPolygon. Pour cela, utilisez le prédicat ST_NumGeometries. Cette fonction renvoie le nombre d'éléments individuels d'un ensemble de géométries.
Avec la fonction ST_GeometryN, vous pouvez déterminer quelle géométrie dans la géométrie multi-parties existe à la position N, N étant un nombre que vous fournissez avec la fonction. Par exemple, si vous souhaitez retourner le troisième point d'une géométrie multi-points, vous devez inclure 3 quand vous exécutez la fonction.
Intérieur, limite, extérieur
Toutes les géométries occupent une position dans l'espace, définie par leurs intérieurs, leurs limites et leurs extérieurs. L'extérieur d'une géométrie est l'ensemble de l'espace non occupé par la géométrie. L'intérieur est l'espace occupé par la géométrie. La limite d'une géométrie est la localisation entre son intérieur et son extérieur. Le code hérite directement des propriétés intérieures et extérieures ; toutefois, la propriété de limite diffère pour chaque code.
Utilisez la fonction ST_Boundary pour déterminer la limite du ST_Geometry source. Reportez-vous à la rubrique ST_Boundary pour découvrir la syntaxe et un exemple.
Simple ou non simple
Certains sous-types ST_Geometry sont toujours simples, tels que ST_Point ou ST_Polygon. Toutefois, les sous-types ST_LineString, ST_MultiPoint et ST_MultiLineString peuvent être simples ou non simples. Ils sont simples s'ils obéissent à l'ensemble des règles topologiques qui leur sont imposées et non simple sinon.
Certaines règles topologiques incluent les éléments suivants :
- Un objet ST_LineString est simple s'il n'intersecte pas son intérieur et non simple sinon.
- Un objet ST_MultiPoint est simple si ses deux éléments occupent des espaces de coordonnées différents (ont des coordonnées x,y différents) et non simple sinon.
- Un objet ST_MultiLineString est simple si aucun des intérieurs de ses éléments n'est intersecté par son propre intérieur et non simple si les intérieurs de ses éléments s'intersectent.
Le prédicat ST_IsSimple permet de déterminer si un ST_LineString, ST_MultiPoint, ou ST_MultiLineString est simple ou non simple. ST_IsSimple part d'un objet ST_Geometry et renvoie 1 (TRUE) si le ST_Geometry est simple et 0 (FALSE) s'il ne l'est pas. Reportez-vous à la rubrique ST_IsSimple pour découvrir la syntaxe et un exemple d'utilisation de cette fonction.
Vide ou non vide
Une géométrie est vide si elle n'a pas de points. Une géométrie vide a une enveloppe, une limite, un intérieur et un extérieur de valeur nulle. Une géométrie vide est toujours simple. Les objets linestring et multilinestring vides ont une longueur de 0. Les objets polygon et multipolygon vides ont une surface de 0.
Le prédicat ST_IsEmpty permet de déterminer si une géométrie est vide. Il analyse un objet ST_Geometry et retourne 1 (TRUE) si ST_Geometry est vide et 0 (FALSE) dans le cas contraire. Reportez-vous à la rubrique ST_IsEmpty pour découvrir la syntaxe et un exemple d'utilisation de cette fonction.
Fermé/Boucle
Les géométries de type linestring peuvent être fermées et/ou être des boucles. Les objets linestring peuvent être fermés sans être des boucles. Vous pouvez déterminer si un linestring est fermé en utilisant le prédicat ST_IsClosed ; il renvoie TRUE si les deux extrémités du linestring s'intersectent. Les boucles sont des objets linestring fermés et simples. Le prédicat ST_IsRing permet de tester si un objet linestring est vraiment une boucle ; il renvoie TRUE si l'objet linestring est fermé et simple.
Reportez-vous aux rubriques ST_IsClosed et ST_IsRing pour découvrir la syntaxe et des exemples.
Enveloppe
Chaque géométrie a une enveloppe. L'enveloppe d'une géométrie est la géométrie de son emprise, formée par ses coordonnées x,y minimales et maximales. S'agissant des géométries de point, les coordonnées x,y minimales et maximales étant identiques, un rectangle (ou enveloppe) est créé autour de ces coordonnées. Dans le cas des géométries de ligne, les extrémités de la ligne représentent deux côtés de l'enveloppe. Les deux autres côtés sont créés juste au-dessus et au-dessous de la ligne.
La fonction ST_Envelope part d'un objet ST_Geometry et renvoie un objet ST_Geometry représentant l'enveloppe de l'objet source. Reportez-vous à la rubrique ST_Envelope pour découvrir la syntaxe et un exemple.
Pour trouver les coordonnées x,y individuelles minimales et maximales d'une géométrie, utilisez les fonctions ST_MinX, ST_MinY, ST_MaxX et ST_MaxY.
Système de référence spatiale
Le système de référence spatiale identifie la matrice de transformation de coordonnées de chaque géométrie. Il est composé d'un système de coordonnées, d'une résolution et d'une tolérance.
Tous les systèmes de référence spatiale connus de la géodatabase sont stockés dans la table spatial_references.
Deux fonctions permettent d'obtenir des informations sur les systèmes de référence spatiale des géométries : ST_SRID et ST_EqualSRS.
La fonction ST_SRID part d'un objet ST_Geometry et renvoie son identifiant de référence spatiale comme nombre entier.
La fonction ST_EqualSRS détermine si les systèmes de référence spatiale de deux classes d'entités différentes sont identiques ou non.
Pour découvrir la syntaxe et des exemples de ces fonctions, consultez les rubriques ST_SRID et ST_EqualSRS.
Pour plus d'informations sur les références spatiales, reportez-vous à la rubrique Propriétés d'une référence spatiale. Pour un SGBD IBM, reportez-vous au Guide de l'utilisateur IBM DB2 Spatial Extender et Geodetic Extender ou au Guide de l'utilisateur du module IBM Informix Spatial DataBlade.
Taille des entités (PostgreSQL uniquement)
Les entités (enregistrements spatiaux dans une table) acceptent un certain espace de stockage en octets. Vous pouvez utiliser la fonction ST_GeoSize pour déterminer la taille de chaque entité dans une table.