Les types de données géométriques représentent des objets à deux dimensions. Le Tableau 8.20 liste les types disponibles dans PostgreSQL.
Tableau 8.20. Types géométriques
Nom | Taille de stockage | Description | Représentation |
---|---|---|---|
point | 16 octets | Point du plan | (x,y) |
line | 24 octets | Ligne infinie | {A,B,C} |
lseg | 32 octets | Segment de droite fini | [(x1,y1),(x2,y2)] |
box | 32 octets | Boîte 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> (point central et rayon) |
Pour tous ces types, les coordonnées individuelles sont enregistrées comme
des nombres double precision
(float8
).
Un large ensemble de fonctions et d'opérateurs permettent d'effectuer différentes opérations géométriques, comme l'échelonnage, la translation, la rotation, la détermination des intersections. Elles sont expliquées dans la Section 9.11.
Les points sont les briques fondamentales des types géométriques.
Les valeurs de type point
sont indiquées à l'aide d'une des
syntaxes suivantes :
(x
,y
)x
,y
où 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.
Les lignes sont représentées par l'équation linéaire
A
x + B
y + C
= 0,
où A
et B
ne valent
pas zéro tous les deux. Les valeurs de type line
sont fournies
et récupérées sous la forme suivante :
{A
,B
,C
}
Il est également possible d'utiliser n'importe laquelle des formes suivantes pour la saisie :
[ (x1
,y1
) , (x2
,y2
) ] ( (x1
,y1
) , (x2
,y2
) ) (x1
,y1
) , (x2
,y2
)x1
,y1
,x2
,y2
où
(
et
x1
,y1
)(
sont deux points différents sur la ligne.
x2
,y2
)
Les segments de ligne sont représentés par des paires de points qui sont
les points finaux du segment. Les valeurs de type lseg
sont
précisées en utilisant une des syntaxes suivantes :
[ (x1
,y1
) , (x2
,y2
) ] ( (x1
,y1
) , (x2
,y2
) ) (x1
,y1
) , (x2
,y2
)x1
,y1
,x2
,y2
où
(
et
x1
,y1
)(
sont les points aux extrémités du segment.
x2
,y2
)
Les segments de ligne sont affichés en utilisant la première syntaxe.
Les boîtes (rectangles) sont représentées par les paires de points des coins opposés de la boîte selon une des syntaxes suivantes :
( (x1
,y1
) , (x2
,y2
) ) (x1
,y1
) , (x2
,y2
)x1
,y1
,x2
,y2
où
(
et
x1
,y1
)(
sont les coins opposés du rectangle.
x2
,y2
)
Les rectangles sont affichés selon la deuxième syntaxe.
Les deux coins opposés peuvent être fournis en entrée, mais les valeurs seront réordonnées pour stocker les coins en haut à droite et en bas à gauche, dans cet ordre.
Les chemins ( type path
)
sont représentés par des listes de points connectés.
Ils 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 comme connectés.
Les valeurs de type path
sont saisies selon 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 droite 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 trois
à cinq, un chemin fermé est utilisé.
Les chemins sont affichés selon la première ou la seconde syntaxe appropriée.
Les polygones (type polygon
) sont représentés par des
listes de points (les vertex du polygone). Ils sont très similaires à
des chemins fermés ; la différence sémantique essentielle est qu'un
polygone est considéré comme incluant l'aire à l'intérieur alors que ce
n'est pas le cas pour un chemin.
Une différence d'implémentation importante entre les polygones et les chemins est que la représentation enregistrée d'un polygone inclut sa boite la plus petite. Ceci accélère certaines opérations de recherche, bien que le calcul de la boîte ajoute une surcharge lors de la construction de nouveaux polygones.
Les valeurs de type polygon
sont saisies selon 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 droite qui forment les limites du polygone.
Les polygones sont affichés selon la première syntaxe.
Les cercles (type circle
) sont représentés par un point
central et un rayon. Les valeurs de type circle
sont saisies
selon une des syntaxes suivantes :
< (x
,y
) ,r
> ( (x
,y
) ,r
) (x
,y
) ,r
x
,y
,r
où
(
est le point central et x
,y
)r
le rayon du cercle.
Les cercles sont affichés selon la première syntaxe.