6.1. Fonctions OpenGIS



 Table des matières

6.1.1. Fonctions de gestion
6.1.2. Fonctions "relationelles"
6.1.3. Fonctions de traitement géométrique
6.1.4. Accès aux caractéristiques géométriques
6.1.5. Constructeurs géométriques

6.1.1. Fonctions de gestion

AddGeometryColumn(varchar, varchar, varchar, integer, varchar, integer)

Syntax : AddGeometryColumn(<nom_du_schema>, <nom_de_la_table>, <nom_de_la_colonne>, <srid>, <type>, <dimension>). Ajouter une colonne géométrique aux attributs d'une table existante. Le nom du schéma est le nom du schéma de la table (inutilisé pour les installations de PostgreSQL ne supportant pas les schémas). Le SRID doit être une valeur entière faisant référence à une entrée de la table spatial_ref_sys. Le type doit être une chaine de caractères en majuscule correspondant au type géométrique, par exemple, POLYGON ou MULTILINESTRING.

DropGeometryColumn(varchar, varchar, varchar)

Syntax : DropGeometryColumn(<nom_du_schema>, <nom_de_la_table>, <nom_de_la_colonne>). Supprimer une colonne géométrique d'une table spatiale. Notez que le nom_du_schéma devra correspondre au champ f_schema_name du tuple correspondant dans la table geometry_columns.

SetSRID(geometry, integer)

Attribut au SRID sur une géométrie une valeur entière particulière. Utile pour construire des cadres limites pour des requêtes.

haut de la page | table des matières

6.1.2. Fonctions "relationelles"

Distance(geometry, geometry)

Renvoie la distance cartésienne entre deux géométries dans l'unité de projection.

Equals(geometry, geometry)

(Effectué par le module GEOS) : retourne 1 (vrai) si les géométries passées en paramètres sont "spatialement égales". Utilisez ceci pour un meilleur résultat que l'opération '='. equals('LINESTRING(0 0, 10 10)','LINESTRING(0 0, 5 5, 10 10)') est vrai.
OGC SPEC s2.1.1.2

Disjoint(geometry, geometry)

(Effectué par le module GEOS) : retourne 1 (vrai) si les géométries sont spatialement disjointes.
Ne pas appeler avec une GeometryCollection en argument.
NOTE : c'est la version "permissive" qui retourne un booléen, pas un entier.
OGC SPEC s2.1.1.2 //s2.1.13.3 - a.Relate(b, 'FF*FF****')

Intersects(geometry, geometry)

(Effectué par le module GEOS) : retourne 1 (vrai) si les géométries "s'intersectent spatialement"
Ne pas appeler avec une GeometryCollection en argument.
NOTE : c'est la version "permissive" qui retourne un booléen, pas un entier.
OGC SPEC s2.1.1.2 //s2.1.13.3 - Intersects(g1, g2 ) --> Not (Disjoint(g1, g2 ))

Touches(geometry, geometry)

(Effectué par le module GEOS) : retourne 1 (vrai) si les géométries se "touchent spatialement".
Ne pas appeler avec une GeometryCollection en argument.
NOTE : c'est la version "permissive" qui retourne un booléen, pas un entier.
OGC SPEC s2.1.1.2 // s2.1.13.3- a.Touches(b) -> (I(a) intersection I(b) = {empty set} ) and (a intersection b) not empty

Crosses(geometry, geometry)

(Effectué par le module GEOS) : retourne 1 (vrai) si les géométries se "croisent spatialement".
Ne pas appeler avec une GeometryCollection en argument.
NOTE : c'est la version "permissive" qui retourne un booléen, pas un entier.
OGC SPEC s2.1.1.2 // s2.1.13.3 - a.Relate(b, 'T*T******')

Within(geometry A, geometry B)

(Effectué par le module GEOS) : retourne 1 (vrai) si la géométrie A est "spatialement inclue" dans la géométrie B.
Ne pas appeler avec une GeometryCollection en argument.
NOTE : c'est la version "permissive" qui retourne un booléen, pas un entier.
OGC SPEC s2.1.1.2 // s2.1.13.3 - a.Relate(b, 'T*F**F***')

Overlaps(geometry, geometry)

(Effectué par le module GEOS) : retourne 1 (vrai) si les géométries se superposent spatialement.
Ne pas appeler avec une GeometryCollection en argument.
NOTE : c'est la version "permissive" qui retourne un booléen, pas un entier.
OGC SPEC s2.1.1.2 // s2.1.13.3

Contains(geometry A, geometry B)

(Effectué par le module GEOS) : retourne 1 (vrai) si la géométrie A "contient spatialement" la géométrie B.
Ne pas appeler avec une GeometryCollection en argument.
NOTE : c'est la version "permissive" qui retourne un booléen, pas un entier.
OGC SPEC s2.1.1.2 // s2.1.13.3 - same as within(geometry B, geometry A)


Relate(geometry, geometry, intersectionPatternMatrix)

(Effectué par le module GEOS) : retourne 1 (vrai) si cette géométries est spatialement reliée à une autre géométrie, en testant l'intersections entre l'intérieur, la limite et l'extérieur des deux géométries comme spécifié par les valeurs dans l'intersectionPatternMatrix.
Ne pas appeler avec une GeometryCollection en argument.
NOTE : c'est la version "permissive" qui retourne un booléen, pas un entier.
OGC SPEC s2.1.1.2 // s2.1.13.3

Relate(geometry, geometry)

(Effectué par le module GEOS) : retourne la DE-9IM (la neuvième matrice d'intersection dimentionellement étendue)
Ne pas appeler avec une GeometryCollection en argument.
NOTE : c'est la version "permissive" qui retourne un booléen, pas un entier.
pas dans les specs de l'OGC, mais implémenté. voir s2.1.13.2

haut de la page | table des matières

6.1.3. Fonctions de traitement géométrique

Centroid(geometry)

Renvoie le barycentre de l'entité géométrique sous forme de point. Le calcul sera plus précis si vous utilisez le module GEOS (mis en place au moment de la compilation).

Area(geometry)

Renvoie la superficie de l'entité géométrique s'il s'agit d'un polygone ou d'un multi-polygone.

Length(geometry)

Renvoie la longueur d'un segment dans son système de référencement courant. Synonyme de length2d().
OGC SPEC 2.1.5.1

PointOnSurface(geometry)

Renvoie un point situé en surface.
Implémenté grâce à GEOS.
OGC SPEC 3.2.14.2 and 3.2.18.2 -

Boundary(geometry)

Renvoie le contour fermé du graphe de cet objet géométrique (geometry). Le graphe (combinatorial boundary) se définit comme décrit aux sections 3.12.3.2 des spécifications OGC. Comme le résultat de cette opération est un contour fermé, et par conséquent topologiquement fermé, le contour résultant peut se représenter au moyen des primitives géométriques décrites à la section 3.1.2.2. des spécifications OGC.
Exécuté par le module GEOS.
OGC SPEC s2.1.1.1

Buffer(geometry, double, [integer])

Renvoie un objet géométrique qui représente tous les points dont la distance à l'objet géométrique est inférieure ou égale à la distance fixée. Les calculs se font dans le système de référencement courant de cet objet géométrique. Le troisième paramètre optionnel fixe le nombre de segments à utiliser pour fournir une approximation du cercle quadratique (par défaut 8 ).
Exécuté par le module GEOS.
Ne l'appelez jamais avec une GeometryCollection en argument.
OGC SPEC s2.1.1.3

ConvexHull(geometry)

Renvoie un objet de type geometry qui représente la partie convexe de la géométrie passée en argument.
Exécuté par le module GEOS.
OGC SPEC s2.1.1.3

Intersection(geometry, geometry)

Renvoie un objet géométrique qui représente l'ensemble d'intersection des objets géométriques désignés.
Exécuté par le module GEOS.
Ne l'appelez jamais avec une GeometryCollection en argument
OGC SPEC s2.1.1.3

SymDifference(geometry A, geometry B)

Renvoie un objet géométrique qui représente l'ensemble d'exclusion de l'objet géométrique A avec l'objet géométrique B.
Ne l'appelez jamais avec une GeometryCollection en argument.
OGC SPEC s2.1.1.3

Difference(geometry A, geometry B)

Renvoie un objet géométrique qui représente l'ensemble de différence entre l'objet géométrique A et l'objet géométrique B.
Exécuté par le module GEOS.
Ne l'appelez jamais avec une GeometryCollection en argument.
OGC SPEC s2.1.1.3

GeomUnion(geometry, geometry)

Renvoie un objet géométrique qui représente l'ensemble d'union des objets géométriques désignés.
Exécuté par le module GEOS.
Ne l'appelez jamais avec une GeometryCollection en argument.
NOTE : initialement nommé "union", cette fonction a été renommé GeomUnion car Union est un mot-clef SQL.
OGC SPEC s2.1.1.3

GeomUnion(geometry set)

Renvoie un objet géométrique qui représente l'union de l'ensemble des objets géométriques pour un ensemble donné.
Exécuté par le module GEOS.
Ne l'appelez jamais avec une GeometryCollection en argument.
Non défini de façon explicite dans les OGC SPEC

MemGeomUnion(geometry set)

Identique à la fonction ci-dessus, mais travaille en utilisant moins de mémoire et plus de temps de calcul du processeur.

haut de la page | table des matières

6.1.4. Accès aux caractéristiques géométriques

AsText(geometry)

Renvoie la représentation textuelle de l'objet géométrique. Par exemple : POLYGON(0 0,0 1,1 1,1 0,0 0)
OGC SPEC s2.1.1.1

AsBinary(geometry)

Renvoie la géométrie au format binaire de l'OGC, en utilisant l'encodage endian (small endian/big endian) du serveur sur lequel la base de données tourne. C'est utile dans le cas de parseurs binaires, pour extraire des données de la base sans avoir à les convertir en chaines de caractères.
OGC SPEC s2.1.1.1 - voir aussi asBinary(,'XDR') et asBinary(,'NDR')

SRID(geometry)

Renvoie l'entier SRID du système de référence spatial de l'objet géométrique.
OGC SPEC s2.1.1.1

Dimension(geometry)

La dimension propre à l'objet géométrique, qui doit être inférieure ou égale à la dimension de ses coordonnées. OGC SPEC s2.1.1.1 - renvoie 0 pour des points, 1 pour des lignes, 2 pour des polygones, et la plus grande dimension trouvée parmi les composants d'une GEOMETRYCOLLECTION.

select dimension('GEOMETRYCOLLECTION(LINESTRING(1 1,0 0),POINT(0 0)');

 dimension
-----------
 1
Envelope(geometry)

Renvoie un POLYGON représentant le cadre limite de l'objet géométrique.
OGC SPEC s2.1.1.1 - Le cadre limite minimale de cet objet géométrique, retournée sous forme de géométrie. Le polygone est défini par les angles du cadre limite ((MINX, MINY), (MAXX, MINY), (MAXX, MAXY), (MINX, MAXY), (MINX, MINY)).
NOTE : PostGIS ajoutera des coordonnées Zmin/Zmax aussi.

IsEmpty(geometry)

Renvoie vrai si la géométrie est vide. Si c'est vrai, Geometry représente alors l'ensemble vide - i.e. GEOMETRYCOLLECTION(EMPTY).
OGC SPEC s2.1.1.1

IsSimple(geometry)

Renvoie vrai si l'objet geometry ne comporte pas d'anomalies, telle qu'une auto-intersection ou une auto-tangence de l'objet.
Exécuté par le module GEOS
OGC SPEC s2.1.1.1

IsClosed(geometry)

Renvoie vrai si les points de départ et d'arrivée de l'objet géométrique coïncident.

IsRing(geometry)

Renvoie vrai si le contour est fermé (StartPoint ( ) = EndPoint ( )) et si le contour est simple (ne passe pas plus d'une fois par le même point).
Exécuté par le module GEOS
OGC spec 2.1.5.1

NumGeometries(geometry)

Si la géométrie est une GEOMETRYCOLLECTION (or MULTI*) renvoie le nombre d'objets géométriques, autrement renvoie NULL.

GeometryN(geometry,int)

Renvoie le nième objet géométrique si la géométrie est une GEOMETRYCOLLECTION, MULTIPOINT, MULTILINESTRING ou MULTIPOLYGON.
Sinon, renvoie NULL.
Note : l'index débute à 1conformément aux spécifications OGC depuis la version 0.8.0. Les versions antérieures débutaient à 0.

NumPoints(geometry)

Trouve et renvoie le nombre de points de la première ligne géométrique. Renvoie NULL s'il n'y a pas de ligne dans la géométrie.

PointN(geometry,integer)

Renvoie le nième point de la première ligne de la géométrie. Renvoie NULL s'il n'y a pas de ligne dans la géométrie.

Note : l'index débute à 1 conformément aux spécifications OGC depuis la version 0.8.0. Les versions antérieures débutaient à 0.

ExteriorRing(geometry)

Renvoie le pourtour extérieur de la géométrie d'un polygone. Retourne NULL si l'objet n'est pas un polygone.

NumInteriorRings(geometry)

Retourne le nombre de pourtours intérieurs du premier polygone de la géométrie. Renvoie NULL s'il n'y a aucun polygone dans la géométrie.

NumInteriorRing(geometry)

Équivalent à NumInteriorRings(geometry). Les spécifications OpenGIS donnent les deux appellations sans lever l'ambiguïté sur le nom réel de la fonction, nous fournissons par conséquent les deux appellations.

InteriorRingN(geometry,integer)

Renvoie le nième pourtour intérieur de la géométrie du polygone. Renvoie NULL si la géométrie n'est pas un polygone, ou si la valeur N ne se trouve pas dans l'intervalle considéré.

Note : l'index débute à 1conformément aux spécifications OGC depuis la version 0.8.0. Les versions antérieures débutaient à 0.

EndPoint(geometry)

Renvoie le dernier point d'une ligne géométrique en tant que point.

StartPoint(geometry)

Renvoie le premier point d'une ligne géométrique en tant que point.

GeometryType(geometry)

Renvoie le type géométrique sous forme de chaine. Par exemple : LINESTRING, POLYGON, MULTIPOINT, etc.
OGC SPEC s2.1.1.1 - Renvoie le nom du sous-type géométrique instanciable dont la géométrie fait partie. Le nom du sous-type géométrique instanciable est renvoyé sous forme de chaine.

X(geometry)

Renvoie la coordonnée X du point. L'objet en entrée doit être un point.

Y(geometry)

Renvoie la coordonnée Y du point. L'objet en entrée doit être un point.

Z(geometry)

Renvoie la coordonnée Z du point, ou NULL si la valeur n'est pas disponible. L'objet en entrée doit être un point.

M(geometry)

Renvoie la coordonnée M du point, ou NULL si la valeur n'est pas disponible. L'objet en entrée doit être un point.
Note : cela ne fait pas (encore) partie des spécifications OGC, mais on les donne ici afin de compléter la liste de fonctions d'extraction de coordonnées ponctuelles.

haut de la page | table des matières

6.1.5. Constructeurs géométriques

GeomFromText(text,[<srid>]) :
Construit une géométrie à partir d'un WKT et d'un SRID donné.
OGC SPEC 3.2.6.2 - l'option SRID correspond à la mise en conformité
PointFromText(text,[<srid>]) :
Construit une géométrie à partir d'un WKT et d'un SRID donné. Si aucun SRID n'est passé en paramètre, la valeur utilisée sera -1.
OGC SPEC 3.2.6.2 - l'option SRID correspond à la mise en conformité
Retourne une erreur si le WKT n'est pas un POINT.
LineFromText(text,[<srid>]) :
Construit une géométrie à partir d'un WKT et d'un SRID donné. Si aucun SRID n'est donné, la valeur utilisée sera -1.
OGC SPEC 3.2.6.2 - l'option SRID correspond à la mise en conformité
Retourne une erreur si le WKT n'est pas une LINE.
LinestringFromText(text,[<srid>]) :
Construit une géométrie à partir d'un WKT et d'un SRID donné. Si aucun SRID n'est donné, la valeur utilisée sera -1.
Retourne une erreur si le WKT n'est pas une LINE.
PolyFromText(text,[<srid>]) :
Construit une géométrie à partir d'un WKT et d'un SRID donné. Si aucun SRID n'est donné, la valeur utilisée sera -1.
OGC SPEC 3.2.6.2 - l'option SRID correspond à la mise en conformité
Retourne une erreur si le WKT n'est pas un polygone
PolygonFromText(text,[<srid>]) :
Construit une géométrie à partir d'un WKT et d'un SRID donné. Si aucun SRID n'est donné, la valeur utilisée sera -1.
correspond à la mise en conformité
Retourne une erreur si le WKT n'est pas un POLYGON.
MPointFromText(text,[<srid>]) :
Construit une géométrie à partir d'un WKT et d'un SRID donné. Si aucun SRID n'est donné, la valeur utilisée sera -1.
OGC SPEC 3.2.6.2 - l'option SRID correspond à la mise en conformité
Retourne une erreur si le WKT n'est pas un MULTIPOINT.
MLineFromText(text,[<srid>]) :
Construit une géométrie à partir de WKT avec un SRID donné. Si aucun SRID n'est donné, la valeur utilisée sera -1.
OGC SPEC 3.2.6.2 - l'option SRID correspond à la mise en conformité
Retourne une erreur si le WKT n'est pas un MULTILINESTRING.
MPolyFromText(text,[<srid>]) :
Construit une géométrie à partir d'un WKT et d'un SRID donné. Si aucun SRID n'est donné, la valeur utilisée sera -1.
OGC SPEC 3.2.6.2 - l'option SRID correspond à la mise en conformité
Retourne une erreur si le WKT n'est pas un MULTIPOLYGON.
GeomCollFromText(text,[<srid>]) :
Construit une géométrie à partir d'un WKT et d'un SRID donné. Si aucun SRID n'est donné, la valeur utilisée sera -1.
OGC SPEC 3.2.6.2 - l'option SRID correspond à la mise en conformité
Retourne une erreur si le WKB n'est pas un GEOMETRYCOLLECTION.
GeomFromWKB(bytea,[<srid>]) :
Construit une géométrie à partir d'un WKB et d'un SRID donné. Si aucun SRID n'est donné, la valeur utilisée sera -1.
OGC SPEC 3.2.6.2 - l'option SRID correspond à la mise en conformité
GeomFromWKB(bytea,[<srid>]) :
Construit une géométrie à partir d'un WKB et d'un SRID donné. Si aucun SRID n'est donné, la valeur utilisée sera -1.
OGC SPEC 3.2.7.2 - l'option SRID correspond à la mise en conformité
PointFromWKB(bytea,[<srid>]) :
Construit une géométrie à partir d'un WKB et d'un SRID donné. Si aucun SRID n'est donné, la valeur utilisée sera -1.
OGC SPEC 3.2.7.2 - l'option SRID correspond à la mise en conformité
Retourne une erreur si le WKB n'est pas un POINT.
LineFromWKB(bytea,[<srid>]) :
Construit une géométrie à partir d'un WKB et d'un SRID donné. Si aucun SRID n'est donné, la valeur utilisée sera -1.
OGC SPEC 3.2.7.2 - l'option SRID correspond à la mise en conformité
Retourne une erreur si le WKB n'est pas une LINESTRING.
LinestringFromWKB(bytea,[<srid>]) :
Construit une géométrie à partir d'un WKB et d'un SRID donné. Si aucun SRID n'est donné, la valeur utilisée sera -1.
correspond à la mise en conformité
Retourne une erreur si le WKB n'est pas une LINESTRING.
PolyFromWKB(bytea,[<srid>]) :
Construit une géométrie à partir d'un WKB et d'un SRID donné. Si aucun SRID n'est donné, la valeur utilisée sera -1.
OGC SPEC 3.2.7.2 - l'option SRID correspond à la mise en conformité
Retourne une erreur si le WKB n'est pas un POLYGON.
PolygonFromWKB(bytea,[<srid>]) :
Construit une géométrie à partir de WKB avec un SRID donné. Si aucun SRID n'est donné, on prend par défaut la valeur -1.
correspond à la mise en conformité
Retourne une erreur si le WKB n'est pas un POLYGON.
MPointFromWKB(bytea,[<srid>]) :
Construit une géométrie à partir d'un WKB et d'un SRID donné. Si aucun SRID n'est donné, la valeur utilisée sera -1.
OGC SPEC 3.2.7.2 - l'option SRID correspond à la mise en conformité
Retourne une erreur si le WKB n'est pas un MULTIPOINT.
MLineFromWKB(bytea,[<srid>]) :
Construit une géométrie à partir d'un WKB et d'un SRID donné. Si aucun SRID n'est donné, on prend par défaut la valeur -1.
OGC SPEC 3.2.7.2 - l'option SRID correspond à la mise en conformité
Retourne une erreur si le WKB n'est pas un MULTILINESTRING.
MPolyFromWKB(bytea,[<srid>]) :
Construit une géométrie à partir d'un WKB et d'un SRID donné. Si aucun SRID n'est donné, la valeur utilisée sera -1.
OGC SPEC 3.2.7.2 - l'option SRID correspond à la mise en conformité
Retourne une erreur si le WKB n'est pas un MULTIPOLYGON.
GeomCollFromWKB(bytea,[<srid>]) :
Construit une géométrie à partir d'un WKB et d'un SRID donné. Si aucun SRID n'est donné, on prend par défaut la valeur -1.
OGC SPEC 3.2.7.2 - l'option SRID correspond à la mise en conformité
Retourne une erreur si le WKB n'est pas un GEOMETRYCOLLECTION.
BdPolyFromText(text WKT, integer SRID) :
Construit un polygone à partir d'une collection quelconque de polylignes fermées en tant que représentation texte MultiLineString.
Retroune une erreur si le WKB n'est pas un MULTILINESTRING. Retourne une erreur si la sortie est un MULTIPOLYGON; utilisez BdMPolyFromText dans ce cas, ou voyez BuildArea() pour une approche spécifique à PostGIS.
OGC SFSQL 1.1 - 3.2.6.2
Disponibilité : 1.1.0 - requiert GEOS >= 2.1.0.
BdMPolyFromText(text WKT, integer SRID) :
Construit un MULTIPOLYGON à partir d'une collection quelconque de polylignes fermées en tant que représentation texte MultiLineString.
Retourne une erreur si le WKT n'est pas un MULTILINESTRING. Forcez la sortie en MULTIPOLYGON même si le résultat ne comportte qu'un seul POLYGON; utilisez BdPolyFromText si vous êtes sûr qu'un seul POLYGON sortira de l'opération, ou voyez BuildArea() pour une approche spécifique à PostGIS.
OGC SFSQL 1.1 - 3.2.6.2
Disponibilité : 1.1.0 - requiert GEOS >= 2.1.0.

haut de la page | table des matières