PostgreSQLLa base de données la plus sophistiquée au monde.

8.7. Types géométriques

Les types de données géométriques représentent des objets à deux dimensions. Le Tableau 8.16, « Types géométriques » liste les types disponibles dans PostgreSQL™. Le type le plus fondamental, le point, forme la base pour tous les autres types.

Tableau 8.16. Types géométriques

Nom Taille de stockage Représentation Description
point 16 octets Point du plan (x,y)
line 32 octets Ligne infinie (pas entièrement implémenté) ((x1,y1),(x2,y2))
lseg 32 octets Segment de droite fini ((x1,y1),(x2,y2))
box 32 octets Boite rectangulaire ((x1,y1),(x2,y2))
path 16+16n octets Chemin fermé (similaire à un polygone) ((x1,y1),...)
path 16+16n octets Chemin ouvert [(x1,y1),...]
polygon 40+16n octets Polygone (similaire à un chemin fermé) ((x1,y1),...)
circle 24 octets Cercle <(x,y),r> (centre et rayon)

Un large ensemble de fonctions et d'opérateurs permettent d'effectuer différentes opérations géométriques, comme l'agrandissement, la translation, la rotation, la détermination des intersections. Elles sont expliquées dans la Section 9.10, « Fonctions et opérateurs géométriques ».

8.7.1. Points

Les points sont les blocs fondamentaux pour construire les types géométriques. Les valeurs de type point sont spécifiées en utilisant les syntaxes suivantes :

( x , y )
  x , y

x et y sont les coordonnées respectives sous forme de nombre à virgule flottante.

Les points sont affichés en utilisant la première syntaxe.

8.7.2. Segments de droite

Les segments de droite (lseg) sont représentés sous forme de paires de points en utilisant une des syntaxes suivantes :

[ ( x1 , y1 ) , ( x2 , y2 ) ]
 ( ( x1 , y1 ) , ( x2 , y2 ) )
  ( x1 , y1 ) , ( x2 , y2 )
    x1 , y1   ,   x2 , y2

(x1,y1) et (x2,y2) sont les points aux extrémités du segment.

Les segments de droites sont affichés en utilisant la première syntaxe.

8.7.3. Boîtes

Les boites (rectangles) sont représentées par paires de points qui sont les coins opposés de la boîte en utilisant une des syntaxes suivante :

( ( x1 , y1 ) , ( x2 , y2 ) )
  ( x1 , y1 ) , ( x2 , y2 )  
    x1 , y1   ,   x2 , y2

(x1,y1) et (x2,y2) sont les coins opposés du rectangle.

Les rectangles sont affichés en utilisant la deuxième syntaxe.

Tous les coins opposés peuvent être saisis, mais les valeurs seront réordonnées pour stocker les coins en haut à droite, et en bas à gauche, dans cet ordre.

8.7.4. Chemins

Les chemins ( type path ) sont représentés par des listes de points connectés. Les chemins peuvent être ouverts, si le premier et le dernier point ne sont pas considérés comme connectés, ou fermés, si le premier et le dernier point sont considérés connectés.

Les valeurs de type path sont entrées avec une des syntaxes suivantes :

 [ ( x1 , y1 ) , ... , ( xn , yn ) ]
 ( ( x1 , y1 ) , ... , ( xn , yn ) )
   ( x1 , y1 ) , ... , ( xn , yn )
   ( x1 , y1   , ... ,   xn , yn )
     x1 , y1   , ... ,   xn , yn

où les points sont les extrémités des segments de droites qui forment le chemin. Les crochets ([]) indiquent un chemin ouvert alors que les parenthèses (()) indiquent un chemin fermé. Quand les parenthèses externes sont omises, comme dans les syntaxes 3 à 5, il est supposé qu'il s'agit d'un chemin fermé.

Les chemins sont affichés avec la première syntaxe.

8.7.5. Polygones

Les polygones ( type polygon) sont représentés par des ensembles de points (les vertex du polygone). Ils devraient probablement être considérés comme des chemins fermés, mais ils sont stockés différemment et ont leurs propres routines de manipulation.

Les valeurs de type polygon sont saisies avec une des syntaxes suivantes :

( ( x1 , y1 ) , ... , ( xn , yn ) )
  ( x1 , y1 ) , ... , ( xn , yn )  
  ( x1 , y1   , ... ,   xn , yn )  
    x1 , y1   , ... ,   xn , yn    

où les points sont les extrémités des segments de droites qui forment les limites du polygone.

Les polygones sont affichés en utilisant la première syntaxe.

8.7.6. Cercles

Les cercles (type circle) sont représentés par le point central et le rayon. Les valeurs de type circle sont saisies avec une des syntaxes suivantes :

< ( x , y ) , r >
( ( x , y ) , r )
  ( x , y ) , r  
    x , y   , r  

(x,y) est le centre et r est le rayon du cercle.

Les cercles sont affichés en utilisant la première syntaxe.