Qu'est-ce que le type de stockage ST_Geometry ?

Le type de données ST_Geometry est un type de données définies par l'utilisateur qui vous permet de définir des colonnes qui stockent des données spatiales.

ST_Geometry est un résumé, une super classe non instanciée. Toutefois, ses sous-classes peuvent être instanciées. Un type de données instancié peut être défini comme une colonne de tableau pouvant accueillir des valeurs de son type.

Bien que vous puissiez définir une colonne en tant que type ST_Geometry, vous n'insérez pas de valeurs ST_Geometry dans la colonne puisqu'elle ne peut pas être instanciée. Vous insérez plutôt les valeurs de la sous-classe.

Le diagramme suivant montre la hiérarchie du type de données ST_Geometry et de ses sous-classes. Notez que ST_Curve, ST_Surface, ST_MultiCurve et ST_MultiSurface sont définis pour être des types non-instanciés. Aucun constructeur n'est défini pour ces types.

Objet ST_Geometry
La superclasse ST_Geometry et ses sous-classes

Sous-classes

Les sous-classe de ST_Geometry sont divisées en deux catégories : sous-classes de géométrie de base et sous-classe d'ensembles homogènes. Les géométries de base comprennent les objets ST_Point, ST_LineString et ST_Polygon, alors que les ensembles homogènes comprennent les objets ST_MultiPoint, ST_MultiLineString et ST_MultiPolygon. Comme ces noms l'indiquent, les ensembles homogènes sont des ensembles de géométries de base. En plus des propriétés communes aux géométries de base, les ensembles homogènes disposent également de quelques propriétés propres.

Chaque sous-classe stocke le type de géométrie que son nom indique ; par exemple, ST_MultiPoint stocke des multi-points. Chaque sous-classe dispose de fonctions particulières permettant d'obtenir des informations sur la sous-classe. Le tableau ci-dessous présente un résumé des sous-classes, leurs descriptions et des exemples de fonctions permettant d'obtenir des informations sur les sous-classes.

Sous-type

Description

Fonctions utilisées avec le sous-type

ST_Point

  • Géométrie à zéro dimension, occupant une seule localisation dans l'espace de coordonnées
  • Dispose d'une seule valeur de coordonnée x,y, est toujours simple et a une limite de valeur NULL
  • Permet de définir des entités telles que les puits de pétrole, les points de repère et les altitudes

  • ST_X — Renvoie la valeur de coordonnée x d'un point comme nombre à double précision
  • ST_Y — Renvoie la valeur de coordonnée y d'un point comme nombre à double précision
  • ST_Z — Renvoie la valeur de coordonnée z d'un point comme nombre à double précision
  • ST_M — Renvoie la valeur de coordonnée m d'un point comme nombre à double précision

ST_LineString

  • Objet linéaire stocké comme séquence de points définissant un chemin interpolé linéaire
  • Les objets ST_LineString ont une longueur.
  • 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.
  • 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.
  • 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.

  • ST_StartPoint — Renvoie le premier point d'une chaîne de lignes
  • ST_EndPoint — Renvoie le dernier point d'une chaîne de lignes
  • ST_PointN — Part d'une chaîne de lignes et de l'index d'un point énième et renvoie ce point
  • ST_Length — Renvoie la longueur d'une chaîne de lignes comme nombre à double précision
  • ST_NumPoints — Renvoie le nombre de points d'une séquence de chaîne de lignes comme nombre entier
  • ST_IsRing — Renvoie 1 (TRUE) si une chaîne de lignes est une boucle ou 0 (FALSE) sinon
  • ST_IsClosed — Renvoie 1 (TRUE) si une chaîne de lignes est fermée ou 0 (FALSE) sinon

ST_Polygon

  • 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
  • Un objet ST_Polygon dispose d'une surface et est toujours simple.
  • 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.
  • Définit des parcelles, des plans d'eau et d'autres entités ayant une étendue spatiale

  • ST_Area — Renvoie la surface d'un polygone comme nombre à double précision
  • ST_ExteriorRing — Renvoie la boucle extérieure d'un polygone comme chaîne de lignes
  • ST_NumInteriorRing — Renvoie le nombre de boucles intérieures que contient un polygone
  • ST_InteriorRingN — Part d'un polygone et d'un index et renvoie la énième boucle intérieure comme chaîne de lignes
  • ST_Centroid — Renvoie un point qui est le centre de l'enveloppe du polygone
  • ST_PointOnSurface — Renvoie un point nécessairement situé dans la surface du polygone

ST_MultiPoint

  • Ensemble d'éléments ST_Point
  • A une dimension de 0
  • Un objet ST_MultiPoint est simple si ses éléments occupent tous des espaces de coordonnées différents.
  • La limite d'un objet ST_MultiPoint est NULL.
  • Définit des objets tels qu'un réseau de diffusion aérienne ou les foyers de déclaration d'une maladie.

ST_MultiLineString

  • Ensemble d'éléments ST_LineString
  • Les objets ST_MultiLineString ont une longueur.
  • 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.
  • L'objet ST_MultiLineString est fermé si tous ses éléments ST_LineString sont fermés.
  • La limite d'un objet ST_MultiLineString est NULL si toutes les extrémités de tous les éléments sont intersectées.
  • Permet de définir des entités telles qu'un cours d'eau ou un réseau routier

  • ST_Length — Renvoie la longueur cumulée de tous les éléments ST_LineString d'un multilinestring comme nombre à double précision
  • ST_IsClosed — Renvoie 1 (TRUE) si le multilinestring est fermé ou 0 (FALSE) sinon

ST_MultiPolygon

  • Ensemble de polygones
  • Les objets ST_MultiPolygon ont une surface.
  • 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.
  • Définit des entités telles qu'une strate forestière ou une parcelle discontinue, par exemple une chaîne d'îlots du Pacifique.

  • ST_Area — Renvoie la surface ST_Area cumulée des éléments polygones d'un multipolygone comme nombre à double précision
  • ST_Centroid — Renvoie un point qui est le centre de l'enveloppe du multipolygone
  • ST_PointOnSurface — Renvoie un point nécessairement situé dans la surface de l'un des éléments polygones du multipolygone

Sous-types ST_Geometry

Notez que chaque sous-classe hérite des propriétés de la superclasse ST_Geometry mais possède également des propriétés qui lui sont propres. Les fonctions applicables au type de données ST_Geometry acceptent l'ensemble des types de données de sous-classe. Toutefois, certaines fonctions ont été définies au niveau de la sous-classe et acceptent uniquement certaines sous-classes. Par exemple, la fonction ST_GeometryN n'accepte en entrée que des valeurs de sous-type ST_MultiLinestring, ST_MultiPoint ou ST_MultiPolygon.

La fonction ST_GeometryType permet d'identifier la sous-classe d'un type ST_Geometry. La fonction ST_GeometryType part d'un ST_Geometry et renvoie la sous-classe instanciée sous forme d'une chaîne de caractères. La fonction ST_NumGeometries permet de connaître le nombre d'éléments de géométrie de base compris dans un ensemble homogène ; elle part d'un ensemble homogène et renvoie le nombre d'éléments de géométrie de base qu'il contient.


3/6/2012