Les types géométriques point
, box
,
lseg
, line
, path
,
polygon
et circle
ont un large ensemble des
fonctions et opérateurs de support natifs, affichés dans Tableau 9.35, Tableau 9.36 et Tableau 9.37.
Tableau 9.35. Opérateurs géométriques
Opérateur Description Exemple(s) |
---|
Ajoute les coordonnées du deuxième
|
Concatène deux chemins ouverts (renvoie NULL si un des chemins est fermé).
|
Soustrait les coordonnées du deuxième
|
Multiplie chaque point du premier argument avec le second
|
Divise chaque point du premier argument par le deuxième
|
Calcule la longueur totale.
Disponible pour les types
|
Calcule le point central.
Disponible pour les types
|
Renvoie le nombre de points.
Disponible pour les types
|
Calcule le point d'intersection, ou NULL s'il n'y en a pas.
Disponible pour les types
|
Calcule l'intersection de deux boîtes, ou NULL s'il n'y en a pas.
|
Calcule le point le plus proche du premier objet à partir du deuxième
objet. Disponible pour ces paires de types :
(
|
Calcule la distance entre les objets. Disponible pour tous les types
géométriques sauf
|
Est-ce que le premier objet contient le second ?
Disponible pour ces paires de types :
(
|
Est-ce que le premier objet est contenu dans le second ?
Disponibles pour ces paires de types :
(
|
Est-ce que ces objets se surchargent ? (Un point en commun rend ceci vrai.)
Disponible pour
|
Est-ce que le premier objet est strictement à gauche du second ?
Disponible pour
|
Est-ce que le premier objet est strictement à droite du second ?
Disponible pour
|
Est-ce que le premier objet ne s'étend pas à droite du second ?
Disponible pour
|
Est-ce que le premier objet ne s'étend pas à gauche du second ?
Disponible pour
|
Est-ce que le premier objet se trouve strictement en dessous du second ?
Disponible pour
|
Est-ce que le premier objet se trouve strictement au-dessus du second ?
Disponible pour
|
Est-ce que le premier objet ne s'étend pas au dessus du second ?
Disponible pour
|
Est-ce que le premier objet ne s'étend pas en dessous du second ?
Disponible pour
|
Est-ce que le premier objet est en-dessous du second (les coins peuvent se toucher) ?
|
Est-ce que le premier objet se trouve strictement en dessous du second ?
(Cet opérateur est mal nommé ; cela devrait être
|
Est-ce que le premier objet se trouve au dessus du second (les coins peuvent se toucher) ?
|
Est-ce que le première objet est strictement au dessus du second ?
(Cet opérateur est mal nommé ; cela devrait être
|
Est-ce que ces objets s'intersectent ?
Disponible pour ces paires de types :
(
|
La lign est-elle horizontale ?
|
Les points sont-ils alignés horizontalement (autrement dit, même coordonnée y) ?
|
La ligne est-elle verticale ?
|
Les points sont-ils alignés verticalement (autrement dit, même coordonnée x) ?
|
Les lignes sont-elles perpendiculaires ?
|
Les lignes sont-elles parallèles ?
|
Ces objets sont-ils les mêmes ?
Disponible pour
|
[a] Faire une « Rotation » d'une boîte avec ces opérateurs déplace seulement ses coins : la boîte est toujours considérée avoir des côtés parallèles sur les axes. De ce fait, la taille de la boîte n'est pas préservée, bien qu'une vraie rotation le ferait. |
Notez que l'opérateur « same as », ~=
,
représente la notion habituelle d'égalité pour les types
point
, box
, polygon
et
circle
. Certains types géométriques ont aussi un opérateur
=
mais =
compare seulement des
aires égales. Les autres opérateurs de comparaison
scalaires (<=
et ainsi de suite), si disponibles
pour ces types, comparent aussi des aires.
Avant PostgreSQL 8.2, les opérateurs de
confinement @>
et <@
étaient
respectivement appelés ~
et @
. Ces
noms sont toujours disponibles mais sont obsolètes et finiront par être
supprimés.
Tableau 9.36. Fonctions géométriques
Tableau 9.37. Fonctions de conversion de type géométrique
Il est possible d'accéder aux deux nombres composants d'un
point
comme si le point était un tableau avec les index 0 et
1. Par exemple, si t.p
est une colonne
point
, alors SELECT p[0] FROM t
récupère
la coordonnée X et UPDATE t SET p[1] = ...
modifie la
coordonnée Y. De la même façon, une valeur de type box
ou
lseg
peut être traitée comme un tableau de deux valeurs
point
.