Tous les produits
Search
Centre de documentation

Hologres:PostGIS spatial functions

Dernière mise à jour :Aug 11, 2026

PostGIS étend les capacités de Hologres en ajoutant des types de données, des fonctions et des opérateurs dédiés aux données spatiales. Utilisez cette extension pour stocker, interroger et analyser des données géographiques : filtres par zone englobante, recherches de proximité, vérifications d'intersection de polygones ou calculs de distance.

Hologres prend en charge la version 3.0.0 de PostGIS. À partir de la version V1.3 de Hologres, la plupart des fonctions PostGIS s'exécutent sur le moteur de requête Hologres (HQE), développé par Alibaba Cloud, qui offre de meilleures performances. Sur les versions antérieures, l'exécution repose sur le moteur de requête PostgreSQL (PQE).

Limites

  • Les champs de type geometry ou geography ne peuvent pas servir de clés primaires. Privilégiez une clé de substitution de type entier.

  • Les index spatiaux ne sont pas pris en charge. Pour les jeux de données volumineux, appliquez des préfiltres basés sur la zone englobante (par exemple ST_MakeBox2D combiné à ST_Covers) avant d'utiliser des prédicats spatiaux plus coûteux, afin de réduire la portée de l'analyse.

  • Sur les instances Hologres antérieures à la version V1.3, toutes les fonctions PostGIS s'exécutent via PQE. Les performances peuvent être inférieures à celles offertes par HQE.

Installer l'extension PostGIS

Exécutez l'instruction suivante en tant que superutilisateur pour installer PostGIS dans une base de données. L'installation s'effectue au niveau de chaque base de données : répétez cette opération pour chacune des bases nécessitant la prise en charge des données spatiales.

CREATE EXTENSION IF NOT EXISTS postgis;
Il est impossible d'installer PostGIS dans le schéma pg_catalog.

Pour vérifier l'installation, exécutez la commande suivante :

SELECT postgis_full_version();

En cas de succès, le système renvoie une chaîne de version telle que POSTGIS="3.0.0 ...".

Pour supprimer l'extension :

DROP EXTENSION postgis;
Important

N'utilisez pas DROP EXTENSION postgis CASCADE. L'option CASCADE supprime tous les objets dépendants, y compris les données PostGIS, les données bitmap dynamiques (roaring bitmap), les données Proxima, les journaux binaires, les données BSI ainsi que les métadonnées associées (tables, vues, données serveur). Cette action est irréversible.

Créer et interroger une table geometry

Dans Hologres, PostGIS prend en charge deux types de données spatiales : geometry (coordonnées planes/cartésiennes) et geography (coordonnées sphériques longitude/latitude). Pour plus de détails sur le type geography, consultez la documentation PostGIS sur geography.

Le type geometry est le plus couramment utilisé. Les étapes suivantes expliquent comment créer une table geometry et exécuter des requêtes spatiales.

1. Créer une table geometry

Lors de la création d'une table, vous pouvez spécifier un sous-type geometry. Sous-types pris en charge : Point, MultiPoint, LineString, MultiLineString, Polygon, MultiPolygon.

Sans sous-type :

CREATE TABLE holo_gis_1 (
  id   INT,
  geom geometry,
  PRIMARY KEY (id)
);

Avec un sous-type et un identifiant de système de référence spatiale (SRID) :

CREATE TABLE holo_gis_2 (
  id   INT,
  geom geometry(point, 4326),
  PRIMARY KEY (id)
);

Dans cet exemple, le sous-type est Point et le SRID est 4326 (WGS 84). Si aucun SRID n'est indiqué, la valeur par défaut est 0. Pour en savoir plus sur les SRID, reportez-vous à la documentation PostGIS.

2. Insérer des données spatiales

-- Without SRID
INSERT INTO holo_gis_1 VALUES (1, ST_GeomFromText('point(116 39)'));

-- With SRID 4326
INSERT INTO holo_gis_2 VALUES (1, ST_GeomFromText('point(116 39)', 4326));

Pour plus d'informations sur les fonctions spatiales, consultez Fonctions spatiales.

3. Interroger des données spatiales

Après l'insertion des données, plusieurs types de requêtes sont possibles.

Requête par plage rectangulaire

Renvoie tous les points situés dans une zone englobante.

Sans SRID :

SELECT st_astext(geom)
FROM holo_gis_1
WHERE ST_Covers(
  ST_MakeBox2D(ST_Point(116, 39), ST_Point(117, 40)),
  geom
);

Avec SRID :

SELECT st_astext(geom)
FROM holo_gis_2
WHERE ST_Covers(
  ST_SetSRID(ST_MakeBox2D(ST_Point(116, 39), ST_Point(117, 40)), 4326),
  geom
);

Ces deux requêtes renvoient le résultat suivant :

st_astext
-------------
POINT(116 39)

Vérification d'intersection avec un polygone

Pour identifier les points situés à l'intérieur ou sur la limite d'un polygone, utilisez ST_Covers. La syntaxe est identique à celle de la requête par plage rectangulaire présentée ci-dessus : ST_MakeBox2D génère un polygone rectangulaire dont la limite est incluse dans le test de couverture.

Sans SRID :

SELECT st_astext(geom)
FROM holo_gis_1
WHERE ST_Covers(
  ST_MakeBox2D(ST_Point(116, 39), ST_Point(117, 40)),
  geom
);

Avec SRID :

SELECT st_astext(geom)
FROM holo_gis_2
WHERE ST_Covers(
  ST_SetSRID(ST_MakeBox2D(ST_Point(116, 39), ST_Point(117, 40)), 4326),
  geom
);

Ces deux requêtes renvoient le résultat suivant :

st_astext
-------------
POINT(116 39)

Fonctions spatiales

PostGIS fournit des fonctions permettant de convertir et d'analyser les valeurs geometry. La syntaxe de ces fonctions utilise les paramètres suivants :

  • geom : une valeur geometry ou une expression évaluée comme geometry

  • precision : INTEGER ; précision des coordonnées comprise entre 1 et 20 ; valeur par défaut 15

  • index : INTEGER ; indice basé sur 1, sauf indication contraire

  • srid : INTEGER ; identifiant du système de référence spatiale

La colonne Required engine indique le moteur de requête chargé d'exécuter chaque fonction :

Engine When it applies Performance
HQE (Hologres Query Engine) Hologres V1.3 et versions ultérieures Plus élevée — optimisée pour les charges de travail analytiques
PQE (PostgreSQL Query Engine) Toutes les versions ; requis pour certaines fonctions Moins élevée — mode de compatibilité

Pour la spécification complète des fonctions PostGIS, consultez la documentation de référence PostGIS.

Constructeurs de geometry

Toutes les fonctions de ce groupe nécessitent HQE dans Hologres V1.3.

Function Syntax Returns Description
ST_LineFromMultiPoint ST_LineFromMultiPoint(geom) GEOMETRY Crée une ligne brisée (linestring) à partir d'une géométrie multipoint, en conservant l'ordre des points. La géométrie renvoyée conserve le même SRID que l'entrée.
ST_MakeEnvelope ST_MakeEnvelope(xmin, ymin, xmax, ymax)ST_MakeEnvelope(xmin, ymin, xmax, ymax, srid) GEOMETRY (POINT, LINESTRING ou POLYGON) Crée une géométrie à partir des coordonnées des coins. Renvoie un point si les coordonnées se réduisent à un point unique, une ligne brisée si elles forment une ligne, ou un polygone dans les autres cas. Si un SRID est fourni, la géométrie résultante utilise ce SRID.
ST_MakeLine ST_MakeLine(geom1, geom2) GEOMETRY (LINESTRING) Crée une ligne brisée à partir de deux géométries d'entrée.
ST_MakePoint ST_MakePoint(x, y) GEOMETRY (POINT) Crée un point à partir de valeurs de coordonnées.
ST_Point ST_Point(x, y) GEOMETRY (POINT) Crée un point à partir de valeurs de coordonnées.
ST_Polygon ST_Polygon(linestring, srid) GEOMETRY (POLYGON) Crée un polygone dont l'anneau extérieur correspond à la ligne brisée d'entrée, avec le SRID indiqué.

Accesseurs de geometry

Toutes les fonctions de ce groupe nécessitent HQE dans Hologres V1.3.

Function Syntax Returns Description
GeometryType GeometryType(geom) VARCHAR Renvoie le nom du sous-type de la géométrie d'entrée sous forme de chaîne.
ST_Boundary ST_Boundary(geom) GEOMETRY Renvoie la limite de la géométrie d'entrée. Une géométrie vide renvoie l'entrée telle quelle ; un point ou un multipoint non vide renvoie une collection de géométries vide ; une ligne brisée renvoie un multipoint constitué de ses points limites ; un polygone sans anneaux intérieurs renvoie une ligne brisée fermée ; un polygone avec anneaux intérieurs ou un multipolygone renvoie une multiligne constituée de tous les anneaux limites.
ST_Dimension ST_Dimension(geom) INTEGER Renvoie la dimension intrinsèque du sous-type de géométrie.
ST_Envelope ST_Envelope(geom) GEOMETRY Renvoie la zone englobante minimale de la géométrie d'entrée. Renvoie un point si la zone se réduit à un point, une ligne brisée à deux points si elle est unidimensionnelle, ou un polygone orienté dans le sens horaire dans les autres cas. La géométrie renvoyée conserve le même SRID que l'entrée.
ST_ExteriorRing ST_ExteriorRing(geom) GEOMETRY (LINESTRING) Renvoie l'anneau extérieur d'un polygone sous forme de ligne brisée fermée.
ST_GeometryN ST_GeometryN(geom, index) GEOMETRY Renvoie la géométrie située à l'indice donné (basé sur 1). Pour les géométries simples (point, ligne brisée, polygone) avec l'indice 1, renvoie la géométrie elle-même ; sinon, renvoie null. Pour les collections, renvoie l'élément correspondant à l'indice.
ST_GeometryType ST_GeometryType(geom) VARCHAR Renvoie le nom du sous-type de la géométrie d'entrée sous forme de chaîne.
ST_InteriorRingN ST_InteriorRingN(geom, index) GEOMETRY (LINESTRING) Renvoie l'anneau intérieur d'un polygone à la position d'indice donnée sous forme de ligne brisée fermée.
ST_IsClosed ST_IsClosed(geom) BOOLEAN Renvoie true si la géométrie est fermée. Un point ou un multipoint est toujours fermé. Une ligne brisée est fermée lorsque ses points de départ et d'arrivée coïncident. Un polygone est fermé lorsque tous ses anneaux sont non vides et que leurs points de départ et d'arrivée coïncident.
ST_IsCollection ST_IsCollection(geom) BOOLEAN Renvoie true si la géométrie est une GEOMETRYCOLLECTION, un MULTIPOINT, une MULTILINESTRING ou un MULTIPOLYGON.
ST_IsEmpty ST_IsEmpty(geom) BOOLEAN Renvoie true si la géométrie ne contient aucun point.
ST_IsPolygonCCW ST_IsPolygonCCW(geom) BOOLEAN Renvoie true si le polygone d'entrée est orienté dans le sens antihoraire. Renvoie également true pour les points, les lignes brisées, les multipoints et les multilignes, ainsi que pour les collections de géométries dont tous les éléments sont orientés dans le sens antihoraire.
ST_IsSimple ST_IsSimple(geom) BOOLEAN Renvoie true si la géométrie ne présente aucune anomalie géométrique, telle qu'une auto-intersection.
ST_NPoints ST_NPoints(geom) INTEGER Renvoie le nombre de points contenus dans la géométrie.
ST_NRings ST_NRings(geom) INTEGER Renvoie le nombre d'anneaux de la géométrie.
ST_NumGeometries ST_NumGeometries(geom) INTEGER Renvoie le nombre d'éléments d'une collection de géométries.
ST_NumInteriorRings ST_NumInteriorRings(geom) INTEGER Renvoie le nombre d'anneaux intérieurs d'un polygone.
ST_NumPoints ST_NumPoints(geom) INTEGER Renvoie le nombre de points contenus dans la géométrie.
ST_PointN ST_PointN(geom, index) GEOMETRY (POINT) Renvoie le point situé à l'indice donné dans une ligne brisée. Les indices négatifs comptent à partir de la fin : -1 renvoie le dernier point.
ST_Points ST_Points(geom) GEOMETRY (MULTIPOINT) Renvoie tous les points non vides de la géométrie sous forme de multipoint. Les points dupliqués, y compris les points de début et de fin des anneaux, sont conservés.
ST_StartPoint ST_StartPoint(geom) GEOMETRY Renvoie le premier point d'une ligne brisée. La géométrie renvoyée conserve le même SRID que l'entrée.
ST_X ST_X(point) DOUBLE Renvoie la coordonnée X d'un point.
ST_Y ST_Y(point) DOUBLE Renvoie la coordonnée Y d'un point.

Éditeurs de geometry

Toutes les fonctions de ce groupe nécessitent HQE dans Hologres V1.3.

Function Syntax Returns Description
ST_AddPoint ST_AddPoint(geom1, geom2) GEOMETRY Renvoie une ligne brisée à laquelle un point a été ajouté.
ST_Multi ST_Multi(geom) GEOMETRY (MULTIPOINT, MULTILINESTRING, MULTIPOLYGON ou GEOMETRYCOLLECTION) Convertit une géométrie vers son type multi correspondant. Si l'entrée est déjà un type multi ou une collection, renvoie une copie.
ST_RemovePoint ST_RemovePoint(geom, index) GEOMETRY Renvoie une ligne brisée dont le point à l'indice donné (basé sur zéro) a été supprimé. La géométrie renvoyée conserve le même SRID que l'entrée.
ST_Reverse ST_Reverse(geom) GEOMETRY Inverse l'ordre des sommets d'une géométrie linéaire ou surfacique. Pour un point ou un multipoint, renvoie une copie. Pour une collection, inverse les sommets de chaque élément.
ST_SetPoint ST_SetPoint(geom1, index, geom2) GEOMETRY Renvoie une ligne brisée dont le point à l'indice donné est remplacé par les coordonnées du point d'entrée.

Validation de geometry

Function Syntax Returns Required engine Description
ST_IsValid ST_IsValid(geom) BOOLEAN PQE Renvoie true si la géométrie est valide selon la spécification OGC.

Fonctions de système de référence spatiale

Toutes les fonctions de ce groupe nécessitent HQE dans Hologres V1.3.

Function Syntax Returns Description
ST_SetSRID ST_SetSRID(geom, srid) GEOMETRY Renvoie la géométrie d'entrée avec son SRID mis à jour vers la valeur indiquée. Ne reprojettes pas les coordonnées.
ST_SRID ST_SRID(geom) INTEGER Renvoie le SRID de la géométrie d'entrée.

Entrée de geometry

Function Syntax Returns Required engine Description
ST_GeomFromText ST_GeomFromText(wkt_string)ST_GeomFromText(wkt_string, srid) GEOMETRY PQE Construit une géométrie à partir de sa représentation textuelle connue (WKT).

Sortie de geometry

Toutes les fonctions de ce groupe nécessitent HQE dans Hologres V1.3.

Function Syntax Returns Description
ST_AsBinary ST_AsBinary(geom) BYTEA Renvoie la représentation binaire connue (WKB) de la géométrie, encodée sous forme de chaîne hexadécimale utilisant les caractères ASCII 0 à 9 et A à F.
ST_AsEWKB ST_AsEWKB(geom) BYTEA Renvoie la représentation binaire connue étendue (EWKB) de la géométrie.
ST_AsEWKT ST_AsEWKT(geom) VARCHAR Renvoie la représentation textuelle connue étendue (EWKT) de la géométrie.
ST_AsGeoJSON ST_AsGeoJSON(geom)ST_AsGeoJSON(geom, precision) VARCHAR Renvoie la représentation GeoJSON de la géométrie.
ST_AsText ST_AsText(geom)ST_AsText(geom, precision) VARCHAR Renvoie la représentation WKT de la géométrie.

Prédicats de relation spatiale

La plupart des fonctions de ce groupe s'exécutent sur PQE. ST_DWithin_S2 s'exécute sur HQE (Hologres V2.0.8 et versions ultérieures).

Function Syntax Returns Required engine Description
ST_Contains ST_Contains(geom1, geom2) BOOLEAN PQE Renvoie true si chaque point de geom2 se trouve dans geom1 et que leurs intérieurs s'intersectent. Équivalent à ST_Within(geom2, geom1).
ST_ContainsProperly ST_ContainsProperly(geom1, geom2) BOOLEAN PQE Renvoie true si les deux géométries sont non vides et que tous les points de geom2 se situent à l'intérieur (et non sur la limite) de geom1.
ST_CoveredBy ST_CoveredBy(geom1, geom2) BOOLEAN PQE Renvoie true si chaque point de geom1 se trouve dans geom2. Équivalent à ST_Covers(geom2, geom1).
ST_Covers ST_Covers(geom1, geom2) BOOLEAN PQE Renvoie true si chaque point de geom2 se trouve dans geom1. Équivalent à ST_CoveredBy(geom2, geom1).
ST_Crosses ST_Crosses(geom1, geom2) BOOLEAN N/A Renvoie true si les deux géométries s'intersectent.
ST_Disjoint ST_Disjoint(geom1, geom2) BOOLEAN N/A Renvoie true si les deux géométries ne partagent aucun point.
ST_DWithin ST_DWithin(geom1, geom2, threshold) BOOLEAN PQE Renvoie true si la distance euclidienne entre les deux géométries ne dépasse pas le seuil indiqué.
ST_DWithin_S2 ST_DWithin_S2(x1, y1, x2, y2, threshold) BOOLEAN HQE (V2.0.8) Renvoie true si la distance sphérique entre deux emplacements géographiques est inférieure ou égale au threshold (unité : mètres). Paramètres dans l'ordre : longitude de l'emplacement 1, latitude de l'emplacement 1, longitude de l'emplacement 2, latitude de l'emplacement 2, seuil de distance. Les valeurs d'entrée ne peuvent pas être des constantes.
ST_Equals ST_Equals(geom1, geom2) BOOLEAN PQE Renvoie true si les deux géométries possèdent des ensembles de points égaux et que leurs intérieurs s'intersectent.
ST_Intersects ST_Intersects(geom1, geom2) BOOLEAN PQE Renvoie true si les deux géométries partagent au moins un point.
ST_Touches ST_Touches(geom1, geom2) BOOLEAN PQE Renvoie true si les deux géométries se touchent, c'est-à-dire qu'elles s'intersectent mais ne partagent aucun point intérieur.
ST_Within ST_Within(geom1, geom2) BOOLEAN PQE Renvoie true si chaque point de geom1 se trouve dans geom2 et que leurs intérieurs s'intersectent. Équivalent à ST_Contains(geom2, geom1).

Fonctions de mesure

Function Syntax Returns Required engine Description
ST_Angle ST_Angle(geom1, geom2, geom3)ST_Angle(geom1, geom2, geom3, geom4) DOUBLE PQE Renvoie l'angle horaire en radians dans l'intervalle [0, 2π). Avec trois points, mesure la rotation de P1 vers P3 autour de P2. Avec quatre points, mesure l'angle entre les droites orientées P1–P2 et P3–P4 ; renvoie null si P1 est égal à P2 ou si P3 est égal à P4.
ST_Area ST_Area(geom) DOUBLE HQE (V1.3) Renvoie la surface cartésienne de la géométrie dans les mêmes unités que le système de coordonnées. Renvoie 0 pour les points, les lignes brisées et leurs types multi. Pour les collections, renvoie la somme des surfaces de tous les éléments.
ST_Azimuth ST_Azimuth(point1, point2) DOUBLE HQE (V1.3) Renvoie l'azimut cartésien basé sur le nord défini par deux points.
ST_Distance ST_Distance(geom1, geom2) DOUBLE HQE (V1.3) Renvoie l'angle central sphérique entre deux géométries.
ST_Distance_Sphere_S2 ST_Distance_Sphere_S2(x1, y1, x2, y2) DOUBLE HQE (V2.0.8) Renvoie la distance sphérique entre deux emplacements géographiques en mètres. Paramètres dans l'ordre : longitude de l'emplacement 1, latitude de l'emplacement 1, longitude de l'emplacement 2, latitude de l'emplacement 2. Plage de latitude valide : [−90, +90]. Plage de longitude valide : [−180, +180]. Les valeurs d'entrée ne peuvent pas être des constantes.
ST_Length ST_Length(geom) DOUBLE HQE (V1.3) Renvoie la longueur cartésienne d'une géométrie linéaire dans les mêmes unités que le système de coordonnées. Renvoie 0 pour les points, les multipoints et les géométries surfaciques. Pour les collections, renvoie la longueur totale.
ST_Perimeter ST_Perimeter(geom) DOUBLE HQE (V1.3) Renvoie le périmètre cartésien (longueur de la limite) d'une géométrie surfacique dans les mêmes unités que le système de coordonnées. Renvoie 0 pour les points, les multipoints et les géométries linéaires. Pour les collections, renvoie la somme des périmètres de tous les éléments.

Fonction de superposition

Function Syntax Returns Required engine Description
ST_Intersection ST_Intersection(geom1, geom2) GEOMETRY HQE (V1.3) Renvoie l'intersection géométrique de deux géométries.

Fonctions de traitement de geometry

Function Syntax Returns Required engine Description
ST_Buffer ST_Buffer(geography, float8) GEOMETRY PQE Renvoie la géométrie représentant tous les points situés à la distance indiquée de la géographie d'entrée.
ST_ConvexHull ST_ConvexHull(geom) GEOMETRY HQE (V1.3) Renvoie l'enveloppe convexe de tous les points non vides de la géométrie d'entrée.
ST_Simplify ST_Simplify(geom, tolerance) GEOMETRY HQE (V1.3) Renvoie une copie simplifiée de la géométrie en utilisant l'algorithme Ramer-Douglas-Peucker avec la tolérance indiquée. La topologie peut ne pas être préservée.

Fonctions de zone englobante

Toutes les fonctions de ce groupe s'exécutent sur PQE.

Function Syntax Returns Description
ST_XMax ST_XMax(geom) DOUBLE Renvoie la coordonnée X maximale de la géométrie.
ST_XMin ST_XMin(geom) DOUBLE Renvoie la coordonnée X minimale de la géométrie.
ST_YMax ST_YMax(geom) DOUBLE Renvoie la coordonnée Y maximale de la géométrie.
ST_YMin ST_YMin(geom) DOUBLE Renvoie la coordonnée Y minimale de la géométrie.

Fonction de référencement linéaire

Function Syntax Returns Required engine Description
ST_LineInterpolatePoint ST_LineInterpolatePoint(geom, fraction) GEOMETRY (POINT) HQE (V1.3) Renvoie le point situé à une distance fractionnaire le long de la ligne, mesurée depuis le début. Par exemple, fraction=0.5 renvoie le point médian.

Bonnes pratiques pour l'utilisation des fonctions spatiales

Pour des exemples complets illustrant les modèles d'analyse géographique courants, consultez Utiliser des fonctions spatiales pour interroger des données.