Postgis 3.4 FR
Postgis 3.4 FR
Postgis 3.4 FR
0dev
Contents
1 Introduction 1
1.1 Comité de direction du projet (Project Steering Committee) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Contributeurs cœur actuels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.3 Anciens contributeurs cœur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.4 Autres contributeurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2 Installation de PostGIS 6
2.1 Version courte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.2 Compilation et installation depuis les sources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.2.1 Obtenir les Sources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.2.2 Pré requis à l’installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.2.3 Configuration de la compilation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.2.4 Compiler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.2.5 Compiler les Extensions PostGIS et les déployer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.2.6 Tests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.2.7 Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.3 Installation et utilisation de l’extension address standardize . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.4 Installation, mise à jour et chargement de données pour le géocodeur Tiger . . . . . . . . . . . . . . . . . . . . . 16
2.4.1 Tiger Geocoder Activation de votre base de données PostGIS . . . . . . . . . . . . . . . . . . . . . . . 16
2.4.2 Utilisation de l’Extension Address Standardizer avec le Geocodeur Tiger . . . . . . . . . . . . . . . . . 19
2.4.3 Outils nécessaires pour charger des données tiger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.4.4 Mise à jour du géocoder Tiger et de ses données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.5 Problèmes courants pendant l’installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3 Administration de PostGIS 22
3.1 Optimisation des performances . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.1.1 Démarrage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.1.2 Temps d’exécution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.2 Configurer la prise en charge du raster . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.3 Création de bases de données spatiales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.3.1 Base de données spatiale en utilisant EXTENSION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Manuel PostGIS 3.4.0dev iii
5 Requêtes spatiales 59
5.1 Déterminer les relations spatiales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
5.1.1 Modèle à 9 intersections dimensionnellement étendu . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
5.1.2 Relations spatiales nommées . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
5.1.3 Relations spatiales générales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
5.2 Utilisation des index spatiaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
5.3 Exemples de SQL spatial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
7 Référence PostGIS 71
7.1 Types de données PostGIS Geometry/Geography/Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
7.1.1 box2d . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
7.1.2 box3d . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
7.1.3 geometry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
7.1.4 geometry_dump . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
Manuel PostGIS 3.4.0dev v
7.1.5 geography . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
7.2 Fonctions de gestion des tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
7.2.1 AddGeometryColumn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
7.2.2 DropGeometryColumn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
7.2.3 DropGeometryTable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
7.2.4 Find_SRID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
7.2.5 Populate_Geometry_Columns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
7.2.6 UpdateGeometrySRID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
7.3 Constructeurs de géométries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
7.3.1 ST_Collect . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
7.3.2 ST_LineFromMultiPoint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
7.3.3 ST_MakeEnvelope . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
7.3.4 ST_MakeLine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
7.3.5 ST_MakePoint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
7.3.6 ST_MakePointM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
7.3.7 ST_MakePolygon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
7.3.8 ST_Point . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
7.3.9 ST_PointZ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
7.3.10 ST_PointM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
7.3.11 ST_PointZM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
7.3.12 ST_Polygon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
7.3.13 ST_TileEnvelope . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
7.3.14 ST_HexagonGrid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
7.3.15 ST_Hexagon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
7.3.16 ST_SquareGrid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
7.3.17 ST_Square . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
7.3.18 ST_Letters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
7.4 Fonctions d’accès aux géométries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
7.4.1 GeometryType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
7.4.2 ST_Boundary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
7.4.3 ST_BoundingDiagonal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
7.4.4 ST_CoordDim . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
7.4.5 ST_Dimension . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
7.4.6 ST_Dump . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
7.4.7 ST_DumpPoints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
7.4.8 ST_DumpSegments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
7.4.9 ST_DumpRings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
7.4.10 ST_EndPoint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
7.4.11 ST_Envelope . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
Manuel PostGIS 3.4.0dev vi
7.10.1.14 = . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
7.10.1.15 >> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266
7.10.1.16 @ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
7.10.1.17 @(geometry,box2df) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268
7.10.1.18 @(box2df,geometry) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269
7.10.1.19 @(box2df,box2df) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270
7.10.1.20 |&> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270
7.10.1.21 |>> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
7.10.1.22 ~ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272
7.10.1.23 ~(geometry,box2df) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
7.10.1.24 ~(box2df,geometry) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
7.10.1.25 ~(box2df,box2df) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
7.10.1.26 ~= . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275
7.10.2 Opérateurs de distance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276
7.10.2.1 <-> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276
7.10.2.2 |=| . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
7.10.2.3 <#> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279
7.10.2.4 <<->> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280
7.10.2.5 <<#>> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280
7.11 Relations spatiales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
7.11.1 Relations topologiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
7.11.1.1 ST_3DIntersects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
7.11.1.2 ST_Contains . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282
7.11.1.3 ST_ContainsProperly . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286
7.11.1.4 ST_CoveredBy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288
7.11.1.5 ST_Covers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289
7.11.1.6 ST_Crosses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290
7.11.1.7 ST_Disjoint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292
7.11.1.8 ST_Equals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293
7.11.1.9 ST_Intersects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294
7.11.1.10 ST_LineCrossingDirection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296
7.11.1.11 ST_OrderingEquals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299
7.11.1.12 ST_Overlaps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300
7.11.1.13 ST_Relate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303
7.11.1.14 ST_RelateMatch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305
7.11.1.15 ST_Touches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306
7.11.1.16 ST_Within . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308
7.11.2 Relations de distance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310
7.11.2.1 ST_3DDWithin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310
Manuel PostGIS 3.4.0dev xi
8 Topologie 504
8.1 Les types associés à "Topology" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 504
8.1.1 getfaceedges_returntype . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 504
8.1.2 TopoGeometry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 505
8.1.3 validatetopology_returntype . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 505
8.2 Domaines de topologie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 506
8.2.1 TopoElement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 506
8.2.2 TopoElementArray . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 506
8.3 Gestion de la topologie et de TopoGeometry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 507
8.3.1 AddTopoGeometryColumn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 507
8.3.2 RenameTopoGeometryColumn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 508
8.3.3 DropTopology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 508
8.3.4 RenameTopology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 509
8.3.5 DropTopoGeometryColumn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 509
8.3.6 Populate_Topology_Layer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 510
8.3.7 TopologySummary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 511
8.3.8 ValidateTopology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 512
Manuel PostGIS 3.4.0dev xvi
A Annexes 869
A.1 PostGIS 3.4.0beta2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 869
A.1.1 New features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 869
A.1.2 Enhancements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 870
A.1.3 Breaking Changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 870
Abstract
PostGIS est une extension du système de base de PostgreSQL données relationnel-objet qui permet de stocker des objets SIG
(Système d’Information Géographique) dans la base. PostGIS comporte un support des index spatiaux R-Tree basé sur GiST et
des fonctions d’analyse et de traitement des objets SIG.
Ce travail est soumis à une licence Creative Commons Attribution-Share Alike 3.0 License. Vous pouvez
utiliser ce matériel comme bon vous semble, mais nous vous demandons de mentionner le projet PostGIS et, dans la mesure du
possible, d’ajouter un lien vers https://postgis.net.
Manuel PostGIS 3.4.0dev 1 / 870
Chapter 1
Introduction
PostGIS est une extension spatiale pour la base de données relationnelle PostgreSQL. Elle a été créée par Refractions Research
Inc, sous la forme d’un projet de recherche sur les technologies de base de données spatiales. Refractions est une société de
conseil en SIG et base de données basée à Victoria, British Columbia, Canada, et spécialisée en intégration de données et
développement logiciel.
PostGIS est désormais un projet de la OSGeo Foundation. PostGIS est développé et financé par de nombreux développeurs et
organismes FOSS4G dans le monde entier, qui bénéficient de manière significative de ses fonctionnalités et de sa polyvalence.
Le groupe de développement du projet PostGIS a en charge la maintenance et l’amélioration de PostGIS pour un meilleur
support de fonctionnalités importantes en SIG, dans les domaines des standards OGC et SQL/MM, des constructions topologiques
avancées (couvertures, surfaces, réseaux), des sources de données pour les outils graphiques de bureautique pour la visualisation
et l’édition des donnée SIG, ainsi que dans le domaine des outils web.
Le comité de direction du projet (PSC) coordonne la direction générale, les cycles de publication, la documentation et les efforts
spécifiques pour le projet PostGIS. De plus, le PSC fournit un support général aux utilisateurs, accepte et approuve les patches
de la communauté PostGIS et vote sur divers points concernant PostGIS, tels que les accès commit pour les développeurs, les
nouveaux membres du PSC ou les changements majeurs d’API.
Raúl Marín Rodríguez Support MVT, Correction de bugs, Améliorations des performances et de la stabilité, Nettoyage du
GitHub, Alignement de PostGIS avec les publications PostgreSQL
Regina Obe Maintenance du robot de build, Build de production et expérimental pour Windows, documentation, Alignement
de PostGIS avec les publications PostgreSQL, support X3D, support du géocoder TIGER, fonctions de gestion.
Darafei Praliaskouski Améliorations des index, correction de bugs et améliorations des fonctions geometry/geography, SFC-
GAL, raster, nettoyage de GitHub, maintenance du robot de build.
Paul Ramsey (Directeur) Co-fondateur de PostGIS. Maintenance générale, maintenance des Geography, maintenance des in-
dex Geography et Geometry (index 2D, 3D, nD et tout index spatial), structures internes des Geometry, intégration des
fonctionnalités GEOS et alignement avec les publications GEOS, alignement de PostGIS avec les publications PostgreSQL,
loader/dumper, IHM de chargement Shapefile.
Sandro Santilli Maintenance et correction de bugs, maintenance du robot de build, gestion du miroir git, fonctions de gestions,
intégration des fonctionnalités GEOS et alignement avec les publications GEOS, support des topologies, raster et fonctions
de l’API bas-niveau.
Manuel PostGIS 3.4.0dev 2 / 870
Nicklas Avén Améliorations et ajouts de fonctions de distance (notamment fonctions de distance 3D et relations), format de
sortie Tiny WKB (TWKB) et support utilisateur
Dan Baston Ajout de fonctions sur le clustering de géométries, améliorations sur les algorithmes sur les géométries, améliora-
tions GEOS et support utilisateur
Martin Davis Améliorations GEOS et documentation
Björn Harrtell Fonctions MapBox Vector Tile et GeoBuf. Tests Gogs et expérimentations GitLab.
Bborie Park Ancien membre du PSC. Développement raster, intégration avec GDAL, loader raster, support utilisateur, correc-
tion de bugs, tests sur divers systèmes d’exploitation (Slackware, Mac, Windows, et autres)
Mark Cave-Ayland Ancien membre du PSC. Coordination de l’effort de correction de bugs et de maintenance, sélectivité
et liaisons des index spatiaux, loader/dumper, IHM de chargement Shapefile, intégration et amélioration de nouvelles
fonctions.
Jorge Arévalo Développement Raster, support du driver GDAL, outil de chargement
Olivier Courtin (Émérite) Fonctions d’entrée/sortie XML (KML,GML) et fonctions GeoJSON, support 3D et correction de
bugs.
Chris Hodgson Ancien membre du PSC. Développement général, maintenance du site et du robot de build, gestion de l’incubation
OSGeo
Mateusz Loskot Support de CMake pour PostGIS, a développé le loader raster original en python et les fonctions d’API bas-
niveau raster
Kevin Neufeld Ancien membre du PSC. Documentation et outils pour la documentation, maintenance du robot de build, support
utilisateur avancé sur le newsgroup PostGIS, et maintenance et améliorations des fonctions PostGIS.
Dave Blasby Développeur originel et co-fondateur de PostGIS. Dave a écrit les objets côté serveur, les liaisons des index, et de
nombreuses fonctions d’analyse côté serveur.
Jeff Lounsbury Développement originel de l’outil de chargement/export de shapefiles.
Mark Leslie Maintenance générale et développement de fonctions du noyau PostGIS. Amélioration du support des courbes.
Interface graphique de chargement des shapefiles.
Pierre Racine Architecte de l’implémentation raster de PostGIS. Architecture globale raster, prototypage, support au développe-
ment
• City of Helsinki
• Clever Elephant Solutions
• Cooperativa Alveo
• Deimos Space
• Faunalia
• Geographic Data BC
• Hunter Systems Group
• ISciences, LLC
• Kontur
• Lidwala Consulting Engineers
• LISAsoft
• Logical Tracking & Tracing International AG
• Maponics
• Michigan Tech Research Institute
• Natural Resources Canada
• Norwegian Forest and Landscape Institue
• Norwegian Institute of Bioeconomy Research (NIBIO)
• OSGeo
• Oslandia
• Palantir Technologies
• Paragon Corporation
• R3 GIS
• Refractions Research
• Regione Toscana - SITA
• Safe Software
• Sirius Corporation plc
• Stadt Uster
• UC Davis Center for Vectorborne Diseases
• Université Laval
• U.S. Department of State (HIU)
• Zonar Systems
Campagnes de financement participatif Les campagnes de financement participatif sont des campagnes que nous organisons
pour financer des fonctionnalités très demandées qui peuvent servir à une large communauté. Chaque campagne est centrée
sur une fonctionnalité, ou un lot de fonctionnalités. Chaque sponsor apporte une petite fraction du financement nécessaire,
et avec assez de personnes et d’organisations contribuant, nous obtenons les fonds nécessaires pour payer le travail qui
aidera la communauté. Si vous pensez qu’une fonctionnalité pourrait être co-financée par de nombreux acteurs, vous
pouvez poster votre idée sur le newsgroup PostGIS et ensemble nous pourrons la réaliser.
PostGIS 2.0.0 a été la première version où cette stratégie a été testée. Nous avons utilisé PledgeBank et avons eu deux
campagnes de financement réussies.
postgistopology - Plus de 10 sponsors ont contribué chacun 250USD pour créer la fonction toTopoGeometry et sortir le
support de la topologie dans la version 2.0.0. Ce fut une réussite.
postgis64windows - Plus de 20 sponsors ont contribué chacun 100USD pour le support PostGIS 64-bit sur Windows. Ce
fut une réussite.
Manuel PostGIS 3.4.0dev 5 / 870
Bibliothèques de base importantes GEOS, la bibliothèque pour les opérations sur les géometries
GDAL (Geospatial Data Abstraction Library), la bibliothèque utilisée pour propulser la plupart des fonctionnalités raster
introduites dans PostGIS 2. En retour, les améliorations requises dans GDAL pour supporter PostGIS sont reversées dans
le projet GDAL.
PROJ, la bibliothèque gérant les projections cartographiques
Enfin, mais non des moindres, le projet de SGBD PostgreSQL, géant sur les épaules duquel PostGIS s’appuie. La rapidité
et flexibilité de PostGIS serait impossible sans l’extensibilité, le planificateur de requêtes, les index GiST et les nombreuses
fonctionnalités SQL que fournit PostgreSQL.
Manuel PostGIS 3.4.0dev 6 / 870
Chapter 2
Installation de PostGIS
Pour compiler, en supposant que toutes les dépendances soient dans votre chemin de recherche :
tar -xvfz postgis-3.4.0dev.tar.gz
cd postgis-3.4.0dev
./configure
make
make install
Une fois PostGIS installé, il est nécessaire de l’activer (Section 3.3) ou de le mettre à jour (Section 3.4) dans chaque base de
données où vous voulez l’utiliser.
Note
La plupart des systèmes d’exploitation dispose de paquets pré-compilés de PostgreSQL/PostGIS. La compilation est
réellement nécessaire uniquement pour disposer des toutes dernières fonctionnalités ou pour les responsables de
paquets PostGIS.
Cette section décrit le processus générique de compilation. Si vous compilez pour Windows ou d’autres systèmes
d’exploitation, vous trouverez des instructions plus détaillées dans les wiki de la communauté guides de compilation et
PostGIS Dev Wiki.
Les paquets pré-compilés pour de multiples systèmes d’exploitation sont listés dans PostGIS Pre-built Packages
Pour les utilisateurs Windows, des versions stables sont disponibles sur Stackbuilder ou sur le site de téléchargement
PostGIS Windows. Des compilations expérimentales incluant les dernières fonctionnalités sont disponibles. Ces com-
pilations sont généralement mises à jour une ou deux fois par semaines, ou chaque fois qu’une nouvelle fonctionnalité
intéressante est ajoutée. Vous pouvez les utiliser pour suivre l’avancée des versions de PostGIS
Le module PostGIS est une extensions pour le serveur backend PostgreSQL. Par conséquent, PostGIS 3.4.0dev nécessite l’ensemble
des entêtes du serveur PostgreSQL pour pouvoir être compilé. PostGIS peut être compilé pour les versions PostgreSQL 12 à 16.
Les versions précédentes de PostgreSQL ne sont pas supportées.
Référez-vous aux guides d’installation de PostgreSQL si vous ne l’avez pas encore installé : https://www.postgresql.org .
Manuel PostGIS 3.4.0dev 7 / 870
Note
Pour les fonctionnalités de GEOS, quand vous installez PostgreSQL, vous aurez peut-être besoin de lier explicitement
PostgreSQL avec la bibliothèque standard C++ :
LDFLAGS=-lstdc++ ./configure [YOUR OPTIONS HERE]
Ceci est une solution de contournement d’exceptions C++ d’interactions bugués dans des outils de développements
plus ancien. Si vous tombez sur ce genre de problèmes (backend soudainement fermé ou des choses similaires)
essayez cette astuce. Cela nécessite de recompiler votre PostgreSQL du début, bien sur.
Les étapes suivantes résument la configuration et la compilation des sources PostGIS. Elles ont été rédigées pour les utilisateurs
sous Linux et ne fonctionneront pas pour Windows et Mac.
• PostgreSQL 12 - 16. A complete installation of PostgreSQL (including server headers) is required. PostgreSQL is available
from https://www.postgresql.org .
Pour une matrice complète de compatibilité PostgreSQL/PostGIS et PostGIS/GEOS, référez-vous à https://trac.osgeo.org/-
postgis/wiki/UsersWikiPostgreSQLPostGIS
• Un compilateur GNUC C (gcc). D’autres compilateurs ANSI C peuvent être utilisés, mais la compilation avec gcc est source
de moins de problèmes.
• GNU Make (gmake ou make). Sur beaucoup de systemes, GNU make est la version par défaut de make. Vous pouvez
vérifier la version de make avec la commande make -v. D’autres versions de make peuvent ne pas être compatibles avec le
Makefile de PostGIS.
• Proj, bibliothèque de reprojection. Proj 6.1 ou supérieur est nécessaire. La bibliothèque Proj est utilisée pour fournir le support
de reprojection de coordonnées dans PostGIS. Proj est disponible au téléchargement depuis https://proj.org/ .
• GEOS geometry library, version 3.6 or greater, but GEOS 3.12+ is required to take full advantage of all the new functions and
features. GEOS is available for download from https://libgeos.org .
Manuel PostGIS 3.4.0dev 8 / 870
• LibXML2, version 2.5.x ou supérieur. LibXML2 est actuellement utilisée dans certaines fonctions d’import (ST_GeomFromGML
et ST_GeomFromKML). LibXML2 est disponible au téléchargement depuis https://gitlab.gnome.org/GNOME/libxml2/-/-
releases.
• JSON-C, version 0.9 ou supérieure. JSON-C est utilisé pour l’import GeoJSON avec la fonction ST_GeomFromGeoJson.
JSON-C est disponible depuis https://github.com/json-c/json-c/releases/.
• GDAL, version 2+ nécessaire, 3+ de préférence. GDAL est nécessaire pour le support raster. https://gdal.org/download.html.
• Si vous compilez avec PostgreSQL+JIT, LLVM version >=6 est nécessaire https://trac.osgeo.org/postgis/ticket/4125.
Optionnel
• GDAL (pseudo optionnel) vous pouvez l’omettre seulement si vous ne voulez pas du support raster. Pensez également à activer
les pilotes que vous souhaitez utiliser, comme décrit dans Section 3.2.
• GTK (GTK+2.0, 2.8+) pour compiler le chargeur de shape file shp2pgsql-gui. http://www.gtk.org/ .
• SFCGAL, version 1.3.1 (ou supérieur), 1.4.1 ou supérieur est recommandé et nécessaire pour utiliser l’ensemble des fonction-
nalités. SFCGAL peut être utilisée pour fournir des fonctions additionnelles d’analyses avancées 2D et 3D dans PostGIS cf
Section 7.21. Pour utiliser SFCGAL au lieu de GEOS pour certaines fonctions 2D disponibles dans les deux bibliothèques
(comme ST_Intersection et ST_Area, par exemples), la variable de configuration PostgreSQL postgis.backend vous per-
met de choisir quel backend utiliser lorsque SFCGAL est installé (GEOS par default). Note : SFCGAL 1.2 nécessite CGAL
4.3 ou supérieur et Boost 1.54 (cf. https://oslandia.gitlab.io/SFCGAL/dev.html) https://gitlab.com/Oslandia/SFCGAL/.
• Pour compiler Section 11.1, vous aurez également besoin de PCRE http://www.pcre.org (qui est généralement déjà installé
sur les systèmes nix). Section 11.1 sera automatiquement compilé s’il détecte une bibliothèque PCRE, ou si vous passez un
--with-pcre-dir=/path/to/pcre valide pendant la configuration.
• Pour permettre d’utiliser ST_AsMVT, la bibliothèque protobuf-c 1.1.0 ou supérieur (pour l’utilisation) et le compilateur protoc-
c (pour la compilation) sont nécessaires. Également, pkg-config est nécessaire pour vérifier la version minimale correcte de
protobuf-c. Voir protobuf-c. Par défaut, PostGIS utilise Wagyu pour valider les polygones MVT plus rapidement, ce qui
nécessite un compilateur c++11. Ceci utilisera les CXXFLAGS et le même compilateur que l’installation PostgreSQL. Pour
désactiver cela et utiliser GEOS à la place, utilisez la variable --without-wagyu pendant l’étape de configuration.
• CUnit (CUnit). Nécessaire pour les tests de régression. http://cunit.sourceforge.net/
• DocBook (xsltproc) est nécessaire pour générer la documentation. Docbook est disponible depuis le site http://www.docbook.org/-
.
• DBLatex (dblatex) est nécessaire pour générer la documentation au format PDF. DBLatex est disponible depuis http://dblatex.source
.
• ImageMagick (convert) est nécessaire pour générer les images de la documentation. ImageMagick is available from
http://www.imagemagick.org/ .
Comme pour la plupart des installations linux, la première étape est de générer le Makefile qui sera utilisé pour compiler le code
source. Ceci est réalisée en lançant le script shell
./configure
Sans paramètre supplémentaire, cette commande tentera de localiser automatiquement les composants requis et les bibliothèques
nécessaires à la compilation de PostGIS. Bien que cela soit l’utilisation la plus commune de la commande ./configure, vous
pouvez également ajouter différents paramètres à ce script. Par exemple, vous pouvez définir l’emplacement de bibliothèques ou
de programmes si ceux-ci ne sont pas localisés à un emplacement standard.
La liste suivante présente les options les plus courantes. Pour consulter la liste complète utilisez l’option --help ou --help=short.
Manuel PostGIS 3.4.0dev 9 / 870
--with-library-minor-version À partir de PostGIS 3.0, les fichiers de bibliothèque générés par défaut n’auront plus la version
mineur dans le nom de fichier. Ceci signifie que les libs PostGIS 3 se termineront par postgis-3. Ceci a été fait
pour faciliter l’usage de pg_upgrade, avec la contrainte que vous ne pouvez installer qu’une seule version de PostGIS 3
sur votre serveur. Pour basculer sur l’ancien comportement et avoir des fichiers qui incluent la version mineure : e.g.
postgis-3.0, ajoutez ce paramètre dans la commande de configuration.
--prefix=PREFIX Cela correspond à l’emplacement où les exécutables et librairies de PostGIS seront installés. Par défaut, cet
emplacement est le même que celui de l’installation de PostgreSQL.
Caution
Ce paramètre est actuellement défectueux : le paquet s’installe uniquement dans le répertoire d’installation de
PostgreSQL. Le suivi de ce bug est disponible depuis http://trac.osgeo.org/postgis/ticket/635 .
--with-pgconfig=FILE PostgreSQL fournit l’utilitaire pg_config permettant aux extensions comme PostGIS de localiser le
répertoire d’installation de PostgreSQL. Utiliser ce paramètre (--with-pgconfig=/path/to/pg_config) pour spécifier une
installation particulière de PostgreSQL pour laquelle PostGIS doit être compilée.
--with-gdalconfig=FILE GDAL, une des bibliothèques requises pour le support des rasters. gdal-config pour permettre au
logiciel de localiser le répertoire d’installation de GDAL. Utiliser ce paramètre (--with-gdalconfig=/path/to/gdal-config)
pour spécifier un répertoire d’installation particulier de GDAL qui sera utilisé pour compiler PostGIS.
--with-geosconfig=FILE GEOS, une des bibliothèques requises, fournit un utilitaire appelé geos-config permettant aux logiciels
de localiser le répertoire d’installation de GEOS. Utiliser ce paramètre (--with-geosconfig=/path/to/geos-config) pour
spécifier le repertoire de GEOS qui sera utilisé pour la compilation de PostGIS.
--with-xml2config=FILE LibXML est la bibliothèque requise pour les traitements GML/KML. Elle est normalement auto dé-
tectée en cas d’installation normale, mais si ce n’est pas le cas ou si vous voulez utiliser une version spécifique, vous
devez spécifier l’emplacement du fichier de configuration xml2-config pour permettre de localiser l’emplacement de
la bibliothèque LibXML. Utiliser ce paramètre ( >--with-xml2config=/path/to/xml2-config) pour spécifier le répertoire
de LibXML qui sera utilisé pour la compilation de PostGIS.
--with-projdir=DIR Proj4 est la bibliothèque de reprojection nécessaire à PostGIS. Utilisez ce paramètre (--with-projdir=/path/to/proj
pour spécifier le répertoire de Proj qui sera utilisé pour la compilation de PostGIS.
--with-sfcgal=PATH Par défaut, PostGIS ne contiendra pas le support sfcgal sans cet argument. PATH est un argument optionnel
permettant de préciser un chemin alternatif vers sfcgal-config.
--without-phony-revision Désactive la mise à jour de postgis_revision.h à partir du HEAD courant du dépôt git.
Note
Si vous avez téléchargé PostGIS depuis le dépôt du code , la première étape est d’exécuter le script
./autogen.sh
Ce script générera le script configure qui est utilisé pour personnaliser votre installation de PostGIS.
Si vous avez obtenu PostGIS comme archive, lancer la commande ./autogen.sh n’est pas nécessaire puisque config-
ure a déjà été généré.
2.2.4 Compiler
Une fois le Makefile généré, compiler PostGIS est aussi simple que lancer
make
La dernière ligne de la sortie doit être "PostGIS was built successfully. Ready to install."
À partir de PostGIS v1.4.0, toutes les fonctions ont leur commentaire généré à partir de la documentation. Si vous souhaitez
installer ces commentaires dans votre base de données spatiale plus tard, exécutez la commande suivante, qui nécessite doc-
book. Les fichiers de commentaires pour PostGIS postgis_comments.sql et pour les autres paquets raster_comments.sql, topol-
ogy_comments.sql sont aussi inclus dans le paquet tar.gz de la distribution, dans le répertoire doc, il est donc inutile d’utiliser
cette commande si vous installez depuis l’archive tar. Les commentaires sont aussi inclus par l’installation via CREATE EX-
TENSION.
make comments
Introduit dans PostGIS 2.0. Cela génère un mémo en html disponible pour une référence rapide ou pour les étudiants. La compi-
lation nécessite xsltproc et génèrera 4 fichiers dans le répertoire doc topology_cheatsheet.html, tiger_geocoder_
cheatsheet.html, raster_cheatsheet.html, postgis_cheatsheet.html
Vous pouvez télécharger des pré-compilations disponibles en HTML et PDF à partir de PostGIS / PostgreSQL Study Guides
make cheatsheets
Les extensions PostGIS sont compilées et installées automatiquement si vous utilisez PostgreSQL 9.1+.
Si vous compilez à partir des dépôts des sources, vous devez compiler les descriptions de fonction d’abord. Ceci est compilé si
vous avez docbook installé. Vous pouvez également compiler manuellement avec cette commande :
make comments
Compiler les commentaires n’est pas nécessaire si vous avez compilé à partir d’une release d’archive puisque ceux-ci sont des
pré-compilations packagés avec le tar ball.
Les extensions devraient être automatiquement compilées lors du make install. Vous pouvez, si nécessaire, compiler à partir des
répertoires d’extensions ou copier les fichiers si vous en avez besoin sur un serveur différent.
cd extensions
cd postgis
make clean
make
export PGUSER=postgres #overwrite psql variables
make check #to test before install
make install
# to test extensions
make check RUNTESTFLAGS=--extension
Manuel PostGIS 3.4.0dev 11 / 870
Note
make check utilise psql pour faire tourner les tests, et peut donc utiliser les variables d’environnement psql. Les
variables classiques utiles à définir sont PGUSER,PGPORT, and PGHOST. Voir variables d’environnement psql
Les fichiers extensions seront toujours les mêmes pour les mêmes versions de PostGIS et PostgreSQL indépendamment de l’OS,
par conséquent il n’y a pas de problème à copier les fichiers extensions d’un OS à un autre du moment que vous avez les binaires
PostGIS déjà installés sur vos serveurs.
Si vous voulez installer les extensions manuellement sur un serveur différent séparé de votre développement, vous devez copier
les fichiers suivants à partir du répertoire extension dans le répertoire PostgreSQL / share / extension de votre
installation PostgreSQL ainsi que les binaires nécessaires pour une version correcte de PostGIS si vous ne les avez pas déjà sur
le serveur.
• Ceux-ci sont les fichiers de contrôle qui renvoie les informations telles que la version de l’extension à installer si non spécifié.
postgis.control, postgis_topology.control.
• Tous les fichiers dans le répertoire /sql de chaque extension. Notez que ceux-ci nécessitent d’être copiées à la racine du réper-
toire share/extension de PostgreSQL extensions/postgis/sql/*.sql, extensions/postgis_topology/sql/
*.sql
Une fois fait, vous devez voir postgis, postgis_topology comme extensions disponibles dans PgAdmin -> extensions.
Si vous utilisez psql, vous pouvez vérifier que les extensions sont installées en lançant cette requête :
SELECT name, default_version,installed_version
FROM pg_available_extensions WHERE name LIKE 'postgis%' or name LIKE 'address%';
Si vous avez l’extension installée dans la base de données que vous interrogez, vous verrez la mention dans la colonne installed_ver
Si vous n’obtenez aucun enregistrement , cela signifie que vous n’avez pas d’extension postgis installés sur le serveur. PgAdmin
III 1.14+ fournira aussi cette information dans la section extensions dans l’arbre de l’explorateur de la base de données et
autorisera même la mise à jour ou la désinstallation par clic-droit.
Si vous avez les extensions disponibles, vous pouvez installer les extensions postgis dans votre base de données de votre choix
soit en utilisant l’interface d’extension de PgAdmin ou lançant ces commandes SQL :
CREATE EXTENSION postgis;
CREATE EXTENSION postgis_raster;
CREATE EXTENSION postgis_sfcgal;
CREATE EXTENSION fuzzystrmatch; --needed for postgis_tiger_geocoder
--optional used by postgis_tiger_geocoder, or can be used standalone
CREATE EXTENSION address_standardizer;
CREATE EXTENSION address_standardizer_data_us;
CREATE EXTENSION postgis_tiger_geocoder;
CREATE EXTENSION postgis_topology;
Avec psql, vous pouvez contrôler les versions installées ainsi que les schémas d’installation.
Manuel PostGIS 3.4.0dev 12 / 870
\connect mygisdb
\x
\dx postgis*
Warning
Les tables d’extension spatial_ref_sys, layer, topology ne peuvent pas être explicitement sauvegardées.
Elles peuvent être uniquement sauvegardées quand les extensions respectives postgis ou postgis_topology
sont sauvegardées, ce qui semble seulement arriver quand vous sauvegardez l’ensemble de la base. À partir de
PostGIS 2.0.1, seulement les enregistrements des srid non packagés avec PostGIS sont sauvegardés quand la base
de données est sauvegardée. Par conséquent, ne vous attendez pas à ce vos modifications persistent si vous changez
les srids que nous fournissons. Créez un ticket si vous trouvez un problème. Les structures des tables d’extensions ne
sont jamais sauvegardées puisque créées avec CREATE EXTENSION et sont supposées être identiques à version
égale d’une extension. Ce comportement fait partie du modèle actuel d’extensions de PostgreSQL, nous ne pouvons
donc rien faire à ce sujet.
Si vous avez installé la version 3.4.0dev sans utiliser le système d’extensions, il est possible de l’activer via les commandes
suivantes pour packager les fonctions dans leurs extensions respectives. L’installation via `unpackaged` a été supprimé dans
PostgreSQL 13, nous vous invitons donc à basculer sur une installation utilisant le système d’extensions avant de migrer à
PostgreSQL 13.
CREATE EXTENSION postgis FROM unpackaged;
CREATE EXTENSION postgis_raster FROM unpackaged;
CREATE EXTENSION postgis_topology FROM unpackaged;
CREATE EXTENSION postgis_tiger_geocoder FROM unpackaged;
2.2.6 Tests
Note
Si vous avez configuré PostGIS en utilisant un emplacement non standard de PostgreSQL, GEOS, ou Proj4, vous
pourrez avoir besoin d’ajouter l’emplacement des bibliothèques à la variable d’environnement LD_LIBRARY_PATH.
Caution
Pour le moment, make check repose sur les variables d’environnement PATH et PGPORT lors de la réalisation des
vérifications - il n’utilise pas la version de PostgreSQL qui a pu être définie en utilisant la paramètre de configuration
--with-pgconfig. Assurez vous donc de modifier votre PATH pour correspondre l’installation de PostgreSQL détectée
durant la configuration ou préparez vous à gérer des maux de tête à venir.
Si réussi, make check sortira les résultats de près de 500 tests. Les résultats seront similaires à la sortie ci-dessous (avec de
nombreuses lignes omises) :
CUnit - A unit testing framework for C - Version 2.1-3
http://cunit.sourceforge.net/
.
.
.
.
.
.
Running tests
.
.
.
.
.
.
Running tests
.
.
.
Run tests: 13
Failed: 0
.
Manuel PostGIS 3.4.0dev 14 / 870
.
.
.
.
.
Running tests
.
.
.
-- topology regress
.
.
.
Running tests
.
.
.
Run tests: 51
Failed: 0
.
.
.
=====================
All 4 tests passed.
=====================
Le géocodeur tiger nécessite d’avoir les extensions postgis et fuzzystrmatch installée sur l’instance PostgreSQL. Les tests de
l’extension address_standardizer seront lancés si PostGIS est compilé avec le support address_standardizer :
cd extensions/postgis_tiger_geocoder
make install
make installcheck
=====================
All 2 tests passed.
=====================
2.2.7 Installation
Si vous avez déjà lancé la commande make comments pour générer les fichiers postgis_comments.sql, raster_
comments.sql, installer le fichier sql en lançant
make comments-install
Note
postgis_comments.sql, raster_comments.sql, topology_comments.sql ont été séparés de la
compilation initiale et des cibles de l’installation depuis qu’ils sont dépendant de xsltproc.
L’extension address_standardizer était précédemment livrée sous forme d’un paquet séparé nécessitant son propre
téléchargement. Depuis la version 2.2 de PostGIS, cette extension est intégrée. Pour de plus amples informations sur cette
extension, sa configuration, son utilisation, se référer à Section 11.1.
Ce normalisateur d’adresses peut être utilisé avec l’extension PostGIS tiger en remplacement de Normalize_Address. Se référer
à la page Section 2.4.2 pour mettre en place ce remplacement. Il peut également être utilisé pour fabriquer son propre géocodeur
ou pour normaliser des adresses pour les comparer plus facilement.
Le normalisateur d’adresses se base sur PCRE, généralement installé sur les systèmes Nix. Il peut également être téléchargé ici :
http://www.pcre.org. Durant la phase Section 2.2.3, si PCRE est détecté, le normalisateur d’adresses sera automatiquement com-
pilé. Pour utiliser une installation personnalisée de PCRE, passer le paramètre --with-pcredir=/chemin/vers/pcre
dans la commande configure, où /chemin/vers/pcre est le répertoire contenant les sous-répertoires pcre include et lib.
Pour les utilisateurs de Windows®, les versions 2.1 et supérieures de PostGIS sont livrées avec l’extension address_standardizer.
Il n’est donc pas besoin de compiler cette extension. La commande CREATE EXTENSION suffit.
Une fois installée, vous pouvez vous connecter à votre base de données et lancer le SQL :
CREATE EXTENSION address_standardizer;
L’extension géocodeur Tiger peut ne pas être distribué avec votre installation de PostGIS. Si vous n’avez pas l’extension
géocodeur Tiger, ou si vous souhaitez utiliser une version plus récente de celle de votre installation, vous pouvez utiliser les
fichiers share/extension/postgis_tiger_geocoder.* depuis les paquets disponibles à Windows Unreleased Ver-
sions, dans la section pour votre version de PostgreSQL. Même si ces paquets sont pour Windows, les fichiers d’extension
postgis_tiger_geocoder fonctionneront quel que soit votre système d’exploitation car c’est une extension en SQL/plpgsql.
1. Ces instructions supposent que l’extension postgis_tiger_geocoder soit déjà installée dans votre installation PostgreSQL.
Manuel PostGIS 3.4.0dev 17 / 870
2. Connectez-vous à la base de données avec psql ou PgAdmin (ou tout autre client) et lancez la commande SQL suivante.
Note : Si l’installation se déroule sur une base de données contenant déjà PostGIS, la première étape n’est pas nécessaire.
Si l’extension fuzzystrmatch est déjà installée, la seconde étape n’est pas nécessaire non plus.
CREATE EXTENSION postgis;
CREATE EXTENSION fuzzystrmatch;
CREATE EXTENSION postgis_tiger_geocoder;
--this one is optional if you want to use the rules based standardizer ( ←-
pagc_normalize_address)
CREATE EXTENSION address_standardizer;
Si l’extension postgis_tiger_geocoder est déjà installée et que vous souhaitez la mettre à jour, lancez :
ALTER EXTENSION postgis UPDATE;
ALTER EXTENSION postgis_tiger_geocoder UPDATE;
Si vous avez modifié tiger.loader_platform ou tiger.loader_variables, vous devrez peut être les mettre
à jour.
3. Pour tester l’installation, lancez cette commande SQL sur la base de données :
SELECT na.address, na.streetname,na.streettypeabbrev, na.zip
FROM normalize_address('1 Devonshire Place, Boston, MA 02109') AS na;
4. Créez un nouvel enregistrement dans la table tiger.loader_platform contenant les chemins vers les exécutables
et le serveur.
Par exemple, pour créer un profil nommé debbie suivant la convention sh, vous feriez :
INSERT INTO tiger.loader_platform(os, declare_sect, pgbin, wget, unzip_command, psql, ←-
path_sep,
loader, environ_set_command, county_process_command)
SELECT 'debbie', declare_sect, pgbin, wget, unzip_command, psql, path_sep,
loader, environ_set_command, county_process_command
FROM tiger.loader_platform
WHERE os = 'sh';
Et modifiez les chemins dans la colonne declare_sect pour les faire correspondre aux chemins des programmes pg, unzip,
shp2pgsql, psql, etc. sur le serveur Debbie.
Si vous ne modifiez pas la table loader_platform, elle contiendra des chemins par défaut pour les programmes, et
vous aurez à modifier les scripts après leur génération.
5. Depuis PostGIS 2.4.1, le chargement des données de "ZIP Code Tabulation Area" zcta5 a été modifié pour charger les
données actuelles zcta5, celui-ci est inclus dans Loader_Generate_Nation_Script si activé. Le chargement est désactivé
par défaut car cela prend du temps (20 à 60 minutes), occupe de l’espace disque, et n’est pas souvent utile.
Pour l’activer, exécutez :
UPDATE tiger.loader_lookuptables SET load = true WHERE table_name = 'zcta520';
Si disponible, la fonction Geocode peut l’utiliser lorsqu’un filtre de frontière est utilisé avec des codes zips. La fonction
Reverse_Geocode l’utilise si l’adresse retournée n’a pas de code zip, ce qui arrive souvent avec le géocodage inverse sur
des autoroutes.
6. Créez un répertoire nommé gisdata à la racine du serveur ou de la machine locale si le réseau entre les deux est
suffisamment rapide. Ce répertoire contiendra les fichiers tiger téléchargés et traités. Pour changer ce répertoire, modifier
le champ staging_fold dans la table tiger.loader_variables.
Manuel PostGIS 3.4.0dev 18 / 870
7. Créez un répertoire nommé temp dans le répertoire gisdata (ou dans le répertoire que vous avez configuré dans le champ
staging_fold). Ce répertoire contiendra les données tiger extraites.
8. Puis exécutez la fonction SQL Loader_Generate_Nation_Script, pour vous assurer que votre libellé de profil personnalisé
est utilisé, et sauvegardez le script dans un fichier .sh ou .bat. Par exemple pour générer le script de chargement d’une
nation :
psql -c "SELECT Loader_Generate_Nation_Script('debbie')" -d geocoder -tA
> /gisdata/nation_script_load.sh
10. Lorsque vous avez terminé d’exécuter les scripts, vous devriez avoir trois tables dans votre schéma tiger_data, avec
des données déjà remplies. Vous pouvez confirmer cela avec les requêtes suivantes, à exécuter dans psql ou pgAdmn
SELECT count(*) FROM tiger_data.county_all;
count
-------
3235
(1 row)
count
-------
56
(1 row)
11. Par défaut, les tables correspondant à bg, tract, tabblock20 ne sont pas chargées. Ces tables ne sont pas utilisées par
le géocodeur, mais sont typiquement utilisées pour les statistiques de population. Si vous souhaitez charger ces données
lors du chargement des états, exécutez la requête suivante.
UPDATE tiger.loader_lookuptables SET load = true WHERE load = false AND lookup_name IN ←-
('tract', 'bg', 'tabblock20');
Autrement, il est possible de charger juste ces tables après le chargement des données sur les états en utilisant le Loader_Generate_C
12. Pour chaque état dont vous voulez charger les données, générez un script d’état Loader_Generate_Script.
Warning
NE GÉNÉREZ PAS le script d’état avant d’avoir chargé les données de nation, car le script d’état utilise la liste
des comtés chargés par le script de nation.
13.
psql -c "SELECT Loader_Generate_Script(ARRAY['MA'], 'debbie')" -d geocoder -tA
> /gisdata/ma_load.sh
15. Après le chargement des données, ou lors d’une pause dans le chargement, il peut être utile de lancer analyze sur toutes les
tables tiger pour mettre à jour les statistiques (y compris les statistiques héritées)
SELECT install_missing_indexes();
vacuum (analyze, verbose) tiger.addr;
vacuum (analyze, verbose) tiger.edges;
vacuum (analyze, verbose) tiger.faces;
vacuum (analyze, verbose) tiger.featnames;
vacuum (analyze, verbose) tiger.place;
vacuum (analyze, verbose) tiger.cousub;
vacuum (analyze, verbose) tiger.county;
vacuum (analyze, verbose) tiger.state;
vacuum (analyze, verbose) tiger.zip_lookup_base;
vacuum (analyze, verbose) tiger.zip_state;
vacuum (analyze, verbose) tiger.zip_state_loc;
Une des plaintes les plus récurrentes concerne la fonction Normalize_Address, qui normalise l’adresse avant de la géocoder.
La normalisation est loin d’être parfaite, et corriger ces imperfections consomme énormément de ressources. Par conséquent,
nous avons intégré un autre projet qui a un moteur de standardisation d’adresses bien meilleur. Pour utiliser ce nouveau ad-
dress_standardizer, compilez l’extension en suivant Section 2.3 et installez l’extension dans votre base de données.
Une fois que vous avez installé cette extension dans la même base de données où vous avez installé postgis_tiger_geocoder,
vous pouvez utiliser Pagc_Normalize_Address à la place de Normalize_Address. Cette extension ne dépend pas de Tiger, et peut
donc être utilisée avec d’autres sources de données telles que des adresses internationales. L’extension de géocodage Tiger est
installée avec ses propres versions spécifiques de rules table ( tiger.pagc_rules) , gaz table (tiger.pagc_gaz), et lex
table (tiger.pagc_lex). Vous pouvez les améliorer et ajouter des règles pour avoir de meilleurs résultats de géocodage pour
vos besoins spécifiques.
Le processus de chargement télécharge les données du site web census pour respectivement les fichiers nation, état demandé,
extrait les fichiers, puis charge chaque état dans son ensemble de tables état. Chaque table state hérite de la table définie dans le
schéma tiger, il est suffisant d’interroger ces tables pour accéder à toutes les données et supprimer un ensemble de table state
n’importe quand en utilisant Drop_State_Tables_Generate_Script si vous devez recharger un état ou si vous en avez plus besoin.
Dans l’objectif de charger des données vous avez besoin des outils suivants :
Si vous mettez à jour depuis tiger_2010, vous aurez besoin d’abord de générer et exécuter le Drop_Nation_Tables_Generate_Script.
Avant de charger les données d’états, vous devez charger les données de nation via Loader_Generate_Nation_Script. Celui-ci
va générer un script de chargement pour vous. Loader_Generate_Nation_Script est une étape à exécuter une seule fois, pour la
mises à jour (depuis des données tiger précédentes) ou pour de nouvelles installations.
Pour charger les données d’états, voir Loader_Generate_Script pour générer un script pour charger les données pour votre plate-
forme et les états que vous souhaitez. Note : vous pouvez les charger peu à peu, vous n’avez pas besoin de tout charger d’un
coup. Vous pouvez les charger lorsque vous en avez besoin.
Après que les états que vous désirez aient été chargé, assurez vous de lancer la commande :
Manuel PostGIS 3.4.0dev 20 / 870
SELECT install_missing_indexes();
Puis supprimez toutes les tables nation et chargez les nouvelles. Générez un script de suppression avec la requête SQL comme
détaillée dans Drop_Nation_Tables_Generate_Script
SELECT drop_nation_tables_generate_script();
Pour unix/linux
SELECT loader_generate_nation_script('sh');
Reportez-vous à Section 2.4.1 pour savoir comment exécuter le script de génération. Cette opération ne doit être effectuée qu’une
seule fois.
Note
Vous pouvez avoir un mix de différentes années dans vos tables d’états et vous pouvez les mettre à jour indépendam-
ment. Avant de mettre à jour un état, vous devez d’abord supprimer l’année précédente dans les tables d’états pour
cet état en utilisant Drop_State_Tables_Generate_Script.
Il y a plusieurs choses à vérifier quand votre installation ou mise à jour ne va pas dans la direction souhaitée.
1. Vérifiez que vous avez installé PostgreSQL 12 ou plus récent et que vous êtes en train de compiler avec la même version
du code source de PostgreSQL que la version qui fonctionne. Un mélange peut arriver lorsque votre distribution (Linux) a
déjà une version de PostgreSQL installée ou que vous avez oublié que vous avez déjà installée une version. PostGIS fonc-
tionnera uniquement avec PostgreSQL 12 ou plus récent, et des messages d’erreurs étranges et inhabituelles en résultera si
vous utilisez une version plus ancienne. Pour vérifier la version de PostgreSQL qui fonctionne, connectez vous à la base
en utilisant psql et lancez la requête :
SELECT version();
Si vous utilisez une distribution basé sur les RPM, vous pouvez vérifier l’existence de paquets pré-installés en utilisant la
commande rpm comme suit : rpm -qa | grep postgresql
2. Si votre mise à jour plante, assurez vous de la présence de PostGIS dans la nouvelle base de données.
Manuel PostGIS 3.4.0dev 21 / 870
SELECT postgis_full_version();
Vérifiez également que le script configure a correctement détecté les chemins et versions de PostgreSQL, de la bibliothèque
Proj.4 et de la blibliothèque GEOS.
1. La sortie du configure est utilisée pour générer le fichier postgis_config.h. Vérifiez que les variables POSTGIS_PGSQL_VE
POSTGIS_PROJ_VERSION et POSTGIS_GEOS_VERSION ont été définies correctement.
Manuel PostGIS 3.4.0dev 22 / 870
Chapter 3
Administration de PostGIS
Le réglage des performances de PostGIS est similaire à celui de n’importe quelle charge de travail PostgreSQL. La seule consid-
ération supplémentaire est que les géométries et les rasters sont généralement de grande taille, donc les optimisations liées à la
mémoire ont généralement plus d’impact sur PostGIS que sur d’autres types de requêtes PostgreSQL.
Pour plus de détails sur l’optimisation de PostgreSQL, reportez-vous à Tuning your PostgreSQL Server.
Pour PostgreSQL 9.4+, la configuration peut être définie au niveau du serveur sans toucher à postgresql.conf ou postgresql.au
en utilisant la commande ALTER SYSTEM.
ALTER SYSTEM SET work_mem = '256MB';
-- this forces non-startup configs to take effect for new connections
SELECT pg_reload_conf();
-- show current setting value
-- use SHOW ALL to see all settings
SHOW work_mem;
En plus des paramètres de Postgres, PostGIS a quelques paramètres personnalisés qui sont listés dans Section 7.24.
3.1.1 Démarrage
shared_buffers
max_worker_processes Ce paramètre n’est disponible que pour PostgreSQL 9.4+. Pour PostgreSQL 9.6+, ce paramètre a une
importance supplémentaire car il contrôle le nombre maximum de processus que vous pouvez avoir pour les requêtes parallèles.
work_mem - définit la taille de la mémoire utilisée pour les opérations de tri et les requêtes complexes.
• Ajuster à la baisse pour de nombreux utilisateurs simultanés ou une faible mémoire vive.
• Si vous avez beaucoup de mémoire vive et peu de développeurs :
SET work_mem TO '256MB';
max_parallel_workers_per_gather
Ce paramètre n’est disponible que pour PostgreSQL 9.6+ et n’affecte que PostGIS 2.3+, puisque seul PostGIS 2.3+ supporte les
requêtes parallèles. Si ce paramètre est supérieur à 0, certaines requêtes telles que celles impliquant des fonctions de relation
comme ST_Intersects peuvent utiliser plusieurs processus et s’exécuter plus de deux fois plus rapidement. Si vous avez
beaucoup de processeurs à disposition, vous devriez changer la valeur de ce paramètre pour autant de processeurs que vous avez.
Assurez-vous également d’augmenter max_worker_processes à une valeur au moins égale à ce nombre.
Si vous activez la prise en charge du raster, vous devriez lire ce qui suit afin de bien la configurer.
À partir de PostGIS 2.1.3, tous les pilotes raster, et la prise en charge des rasters hors-connexion (out-of-db) est désactivé
par défaut. Pour les activer, vous devez définir les variables d’environnement suivantes dans l’environnement du serveur
: POSTGIS_GDAL_ENABLED_DRIVERS and POSTGIS_ENABLE_OUTDB_RASTERS. Depuis PostGIS 2.2, vous pouvez
utiliser la méthode plus générique en définissant les Section 7.24 correspondantes.
Si vous souhaitez activer le raster hors connexion :
POSTGIS_ENABLE_OUTDB_RASTERS=1
Si la variable a n’importe quelle autre valeur, ou si elle n’a pas de valeur, le support du raster hors-connexion sera désactivé.
Pour utiliser tous les pilotes GDAL disponibles dans votre installation GDAL, définissez la variable d’environnement via
POSTGIS_GDAL_ENABLED_DRIVERS=ENABLE_ALL
Manuel PostGIS 3.4.0dev 24 / 870
Si vous souhaitez activer une liste de pilotes spécifiques, définissez la variable d’environnement via :
POSTGIS_GDAL_ENABLED_DRIVERS="GTiff PNG JPEG GIF XYZ"
Note
Si vous êtes sous Windows, ne pas mettre de guillemets autour de la liste des pilotes
La définition des variables d’environnement dépend de votre système d’exploitation. Sous Ubuntu ou Debian avec PostgreSQL
installé via apt-postgresql, la méthode conseillée est d’éditer le fichier de configuration /etc/postgresql/10/main/environmen
où 10 est la version de PostgreSQL et main est le groupe de bases de données (cluster).
Sous Windows, si vous fonctionnez en tant que service, vous pouvez définir des variables système que, pour Windows 7,
vous pouvez atteindre en cliquant avec le bouton droit de la souris sur Ordinateur->Propriétés Paramètres système avancés
ou, dans l’explorateur, en naviguant jusqu’à Panneau de configuration\Tous les éléments du panneau de
configuration\Système. Cliquez ensuite sur Paramètres système avancés ->Avancé->Variables d’environnement et
ajoutez de nouvelles variables système.
Après avoir changé les variables d’environnement, vous devrez redémarrer le service PostgreSQL pour prendre en compte les
changements.
Si vous utilisez PostgreSQL 9.1+ et avez compilé et installé les modules extensions/postgis, vous pouvez transformer une base
de données en base de données spatiale en utilisant le mécanisme EXTENSION.
L’extension cœur postgis inclus le support des types geometry et geography, la table spatial_ref_sys ainsi que toutes les fonctions
et commentaires. Les supports de raster et topologie sont fournis par des extensions dédiées.
Exécutez les requêtes SQL suivantes dans la base de données où vous souhaitez activer le support spatial :
CREATE EXTENSION IF NOT EXISTS plpgsql;
CREATE EXTENSION postgis;
CREATE EXTENSION postgis_raster; -- OPTIONAL
CREATE EXTENSION postgis_topology; -- OPTIONAL
Note
Cette méthode n’est en générale nécessaire que si vous ne pouvez pas ou ne voulez pas que PostGIS soit installé dans
le répertoire des extensions PostgreSQL (par exemple pour des tests, du développement, ou dans un environnement
restreint).
L’ajout des objets et définitions des fonctions PostGIS dans votre base de données se fait en chargeant plusieurs fichiers sql
présents dans [prefix]/share/contrib, cet emplacement est celui qui a été défini durant la phase de compilation.
Les objets au cœur de PostGIS (types geometry et geography, et les fonctions associées) sont dans le script postgis.sql. Les
objets raster sont dans le script rtpostgis.sql. Les objets de topologie sont dans le script topology.sql.
Pour avoir la liste complète des définitions des systèmes de coordonnées EPSG, vous pouvez aussi charger le script spatial_
ref_sys.sql pour remplir la table spatial_ref_sys. Cela permettre d’utiliser la fonction ST_Transform() pour effectuer
des reprojections sur les géométries.
Manuel PostGIS 3.4.0dev 25 / 870
Si vous souhaitez ajouter les commentaires sur les fonctions PostGIS, vous pouvez les trouver dans le script postgis_
comments.sql. Vous pouvez accéder aux commentaires d’une fonction en tapant \dd [nom_de_la_fonction] depuis un
terminal psql.
Exécutez les commandes Shell suivantes dans votre terminal :
DB=[yourdatabase]
SCRIPTSDIR= `pg_config --sharedir`/contrib/postgis-3.3/
# Core objects
psql -d ${DB} -f ${SCRIPTSDIR}/postgis.sql
psql -d ${DB} -f ${SCRIPTSDIR}/spatial_ref_sys.sql
psql -d ${DB} -f ${SCRIPTSDIR}/postgis_comments.sql # OPTIONAL
La mise à jour des bases de données spatiales existantes peut s’avérer délicate car elle nécessite le remplacement ou l’introduction
de nouvelles définitions d’objets PostGIS.
Malheureusement, toutes les définitions ne peuvent pas être facilement remplacées dans une base de données active, de sorte que
la meilleure solution consiste parfois à effectuer un processus de dump/rechargement.
PostGIS propose une procédure SOFT UPGRADE pour les versions mineures ou les corrections de bugs, et une procédure
HARD UPGRADE pour les versions majeures.
Avant d’essayer de mettre à jour PostGIS, il est toujours utile de sauvegarder vos données. Si vous utilisez l’option -Fc pour
pg_dump, vous serez toujours en mesure de restaurer le dump lors d’un HARD UPGRADE.
Si vous avez installé votre base de données en utilisant des extensions, vous devrez également mettre à jour en utilisant le
modèle d’extension. Si vous avez installé votre base de données à l’aide de l’ancien script SQL, il vous est conseillé de passer à
l’extension car le script n’est plus pris en charge.
3.4.1.1 Mise à niveau progressive (Soft upgrade) 9.1+ utilisant des extensions
Si vous avez installé PostGIS à l’origine avec des extensions, vous devez également effectuer une mise à jour en utilisant des
extensions. Faire une mise à jour mineure avec les extensions est assez facile.
Si vous utilisez PostGIS 3 ou une version supérieure, vous devez utiliser la fonction PostGIS_Extensions_Upgrade pour passer à
la dernière version que vous avez installée.
SELECT postgis_extensions_upgrade();
Si vous utilisez PostGIS 2.5 ou une version inférieure, procédez comme suit :
ALTER EXTENSION postgis UPDATE;
SELECT postgis_extensions_upgrade();
-- This second call is needed to rebundle postgis_raster extension
SELECT postgis_extensions_upgrade();
Manuel PostGIS 3.4.0dev 26 / 870
Si plusieurs versions de PostGIS sont installées et que vous ne souhaitez pas mettre à niveau vers la dernière version, vous pouvez
spécifier explicitement la version comme suit :
ALTER EXTENSION postgis UPDATE TO "3.4.0dev";
ALTER EXTENSION postgis_topology UPDATE TO "3.4.0dev";
Vous devrez alors sauvegarder votre base de données, en créer une nouvelle comme décrit dans Section 3.3.1, puis restaurer votre
sauvegarde sur cette nouvelle base de données.
Si vous obtenez un message du type :
Version "3.4.0dev" of extension "postgis" is already installed
Dans ce cas, tout est déjà à jour et vous pouvez l’ignorer en toute sécurité. Sauf vous essayez de passer d’une version de
développement à la suivante (qui ne reçoit pas de nouveau numéro de version) ; dans ce cas, vous pouvez ajouter "next" à la
chaîne de caractères de la version, et la prochaine fois, vous devrez à nouveau supprimer le suffixe "next" :
ALTER EXTENSION postgis UPDATE TO "3.4.0devnext";
ALTER EXTENSION postgis_topology UPDATE TO "3.4.0devnext";
Note
Si vous avez installé PostGIS à l’origine sans spécifier de version, vous pouvez souvent ignorer la réinstallation de
l’extension postgis avant la restauration puisque la sauvegarde a juste exécuté CREATE EXTENSION postgis et
récupère donc la dernière version la plus récente lors de la restauration.
Note
Si vous mettez à jour l’extension PostGIS à partir d’une version antérieure à 3.0.0, vous aurez une nouvelle extension
postgis_raster que vous pouvez abandonner en toute sécurité, si vous n’avez pas besoin du support raster. Vous
pouvez abandonner l’extension comme suit :
DROP EXTENSION postgis_raster;
3.4.1.2 Mise à niveau progressive (Soft Upgrade) Pre 9.1+ ou sans extensions
Cette section ne s’applique qu’à ceux qui ont installé PostGIS sans utiliser d’extensions. Si vous avez des extensions et que vous
essayez de faire une mise à jour avec cette approche, vous obtiendrez des messages comme :
can't drop ... because postgis extension depends on it
NOTE : si vous passez de PostGIS 1.* à PostGIS 2.* ou de PostGIS 2.* antérieur à r7409, vous ne pouvez pas utiliser cette
procédure mais devrez plutôt faire une HARD UPGRADE.
Après la compilation et l’installation (make install), vous devriez trouver un ensemble de fichiers *_upgrade.sql dans les
dossiers d’installation. Vous pouvez les lister avec :
ls `pg_config --sharedir`/contrib/postgis-3.4.0dev/*_upgrade.sql
La même procédure s’applique aux extensions raster, topologie et sfcgal, avec des fichiers de mise à niveau nommés respec-
tivement rtpostgis_upgrade.sql, topology_upgrade.sql et sfcgal_upgrade.sql. Si vous en avez besoin
:
psql -f rtpostgis_upgrade.sql -d your_spatial_database
Note
Si vous ne trouvez pas le postgis_upgrade.sql spécifique à la mise à niveau de votre version, vous utilisez une
version trop ancienne pour une mise à niveau progressive (Soft Upgrade) et vous devez faire une HARD UPGRADE.
La fonction PostGIS_Full_Version devrait vous informer de la nécessité d’exécuter ce type de mise à niveau à l’aide d’un message
"procs need upgrade".
Par HARD UPGRADE, nous entendons un dump/recharge complet des bases de données compatibles avec PostGIS. Vous avez
besoin d’une mise à jour complète lorsque le stockage interne des objets PostGIS change ou lorsque la mise à jour progressive
(Soft upgrade) n’est pas possible. L’annexe Release Notes indique pour chaque version si vous avez besoin d’un dump/recharge
(HARD UPGRADE) pour effectuer la mise à jour.
The dump/reload process is assisted by the postgis_restore script which takes care of skipping from the dump all definitions
which belong to PostGIS (including old ones), allowing you to restore your schemas and data into a database with PostGIS
installed without getting duplicate symbol errors or bringing forward deprecated objects.
Des instructions supplémentaires pour les utilisateurs de Windows sont disponibles sur Windows Hard upgrade.
La procédure est la suivante :
1. Créer un dump au format personnalisé de la base de données que vous souhaitez mettre à jour (appelons-le olddb) et
inclure des blobs binaires (-b) et une sortie verbose (-v). L’utilisateur peut être le propriétaire de la base de données, il n’a
pas besoin d’être le super utilisateur postgres.
pg_dump -h localhost -p 5432 -U postgres -Fc -b -v -f "/somepath/olddb.backup" olddb
2. Effectuez une nouvelle installation de PostGIS dans une nouvelle base de données - nous appellerons cette base de données
newdb. Veuillez vous référer à Section 3.3.2 et Section 3.3.1 pour les instructions sur la façon de procéder.
Les entrées spatial_ref_sys trouvées dans votre dump seront restaurées, mais elles ne remplaceront pas les entrées existantes
dans spatial_ref_sys. Cela permet de s’assurer que les corrections du jeu officiel seront correctement propagées dans les
bases de données restaurées. Si, pour une raison quelconque, vous souhaitez vraiment que vos propres entrées standard
soient remplacées, ne chargez pas le fichier spatial_ref_sys.sql lors de la création de la nouvelle base de données.
Si votre base de données est très ancienne ou si vous savez que vous avez utilisé des fonctions dépréciées depuis longtemps
dans vos vues et fonctions, vous devrez peut-être charger legacy.sql pour que toutes vos fonctions, vues, etc. re-
viennent correctement. Ne le faites que si c’est _vraiment_ nécessaire. Envisagez plutôt de mettre à jour vos vues et
fonctions avant de faire le dumping, si possible. Les fonctions dépréciées peuvent être supprimées plus tard en chargeant
uninstall_legacy.sql.
Manuel PostGIS 3.4.0dev 28 / 870
3. Restore your backup into your fresh newdb database using postgis_restore. Unexpected errors, if any, will be printed to
the standard error stream by psql. Keep a log of those.
postgis_restore "/somepath/olddb.backup" | psql -h localhost -p 5432 -U postgres newdb ←-
2
> errors.txt
1. Certaines de vos vues ou fonctions utilisent des objets PostGIS obsolètes. Pour y remédier, vous pouvez essayer de
charger le script legacy.sql avant la restauration ou vous devrez restaurer vers une version de PostGIS qui contient
encore ces objets et réessayer une migration après le portage de votre code. Si la méthode legacy.sql fonctionne pour
vous, n’oubliez pas de corriger votre code pour arrêter d’utiliser les fonctions dépréciées et de les supprimer en chargeant
uninstall_legacy.sql.
2. Certains enregistrements personnalisés de spatial_ref_sys dans le fichier dump ont une valeur SRID invalide. Les valeurs
SRID valides sont supérieures à 0 et inférieures à 999000. Les valeurs comprises entre 999000 et 999999 sont réservées
à un usage interne, tandis que les valeurs supérieures à 999999 ne peuvent pas être utilisées. Tous vos enregistrements
personnalisés avec des SRID invalides seront conservés, avec ceux > 999999 déplacés dans la plage réservée, mais la
table spatial_ref_sys perdrait une contrainte de contrôle protégeant cet invariant et peut-être aussi sa clé primaire (lorsque
plusieurs SRIDS invalides sont convertis en la même valeur SRID réservée).
In order to fix this you should copy your custom SRS to a SRID with a valid value (maybe in the 910000..910999 range),
convert all your tables to the new srid (see UpdateGeometrySRID), delete the invalid entry from spatial_ref_sys and re-
construct the check(s) with:
ALTER TABLE spatial_ref_sys ADD CONSTRAINT spatial_ref_sys_srid_check check (srid > 0 ←-
AND srid < 999000 );
If you are upgrading an old database containing french IGN cartography, you will have probably SRIDs out of range and
you will see, when importing your database, issues like this :
WARNING: SRID 310642222 converted to 999175 (in reserved zone)
In this case, you can try following steps : first throw out completely the IGN from the sql which is resulting from post-
gis_restore. So, after having run :
postgis_restore "/somepath/olddb.backup"
> olddb.sql
Create then your newdb, activate the required Postgis extensions, and insert properly the french system IGN with : this
script After these operations, import your data :
psql -h localhost -p 5432 -U postgres -d newdb -f olddb-without-IGN.sql 2
> errors.txt
Manuel PostGIS 3.4.0dev 29 / 870
Chapter 4
L’Open Geospatial Consortium (OGC) a développé le standard Simple Features Access (SFA) pour fournir un modèle de données
géospatiales. Ce standard définit le type spatial Geometry, ainsi que les opérations pour manipuler et transformer des géométries,
et permettre des tâches d’analyses spatiales. PostGIS implémente le modèle OGC Geometry sous forme de types PostgreSQL
geometry et geography.
Geometry est un type abstrait. Les valeurs géométriques utilisent les sous-types concrets, qui représentent les diverses formes
géométriques. Ces types incluent les types atomiques Point, LineString, LinearRing et Polygon, ainsi que les types de collections
MultiPoint, MultiLineString, MultiPolygon et GeometryCollection. Le standard Simple Features Access - Part 1: Common
architecture v1.2.1 ajoute les sous-types pour les structures PolyhedralSurface, Triangle et TIN.
Geometry représente des formes dans le plan cartésien en 2 dimensions. Les types PolyhedralSurface, Triangle, et TIN peuvent
également représenter des formes en 3 dimensions. La taille et la localisation des formes sont spécifiées par leurs coordonnées.
Chaque coordonnées a une dimension X et une Y, qui déterminent sa position sur le plan. Les formes sont construites à partir de
points ou de segments. Les points sont spécifiés par une seul coordonnée ; les segments par deux coordonnées.
Les coordonnées peuvent inclure des valeurs pour les dimensions optionnelles Z et M. La dimension Z est souvent utilisée
pour représenter l’élévation. La dimension M contient une mesure, qui représente par exemple le temps ou une distance. Si la
dimension Z ou M est présente pour une valeur géométrique, elle doit être définie pour tous les points de la géométrie. Si une
géométrie a une dimension Z ou M, la dimension de la coordonnée est 3D ; si elle a à la fois les dimension Z et M, la dimension
de la coordonnée est 4D.
Les valeurs géométriques sont associées à un système de coordonnées de référence (SCR, ou en anglais spatial reference
system, SRS), qui indique dans quel système de coordonnées les valeurs sont définies. Le SCR est identifié par un identifiant
appelé SRID. Les unités sur les axes X et Y sont déterminées par ce système de coordonnées de référence. Dans un système
planaire, les coordonnées X et Y représentent les distances respectivement selon l’Est et le Nord. Dans un système géodésique
elles représentent la longitude et la latitude. L’identifiant SRID 0 représente un plan cartésien infini, sans unité sur ses axes. Voir
Section 4.5.
La dimension d’une géométrie est une propriété des types géométriques. Les types Point ont une dimension 0, les types linéaires
ont une dimension 1, et les types polygonaux ont une dimension 2. Les collections ont la dimension de leur élément de plus
grande dimension.
Une valeur géométrique peut être vide. Une valeur vide ne contient aucun vertex (pour les types de géométriques atomiques) ou
aucun élément (pour les collections).
Une propriété important des valeurs géométriques est leur emprise spatiale (extent en anglais) ou leur boîte englobante (bound-
ing box en anglais), que le modèle OGC nomme enveloppe (envelope). La boîte englobante est la boîte 2D ou 3D qui contient
les coordonnées d’une géométrie. C’est une façon efficace de représenter l’emprise d’une géométrie dans un espace et de tester
comment deux géométries interagissent.
Manuel PostGIS 3.4.0dev 30 / 870
Le modèle de géométrie permet d’évaluer les relations topologiques, telles que décrites dans Section 5.1.1. Pour supporter cela,
les concepts de intérieur (interior en anglais), frontière (boundary en anglais) et extérieur (exterior en anglais) sont définis pour
tous les types de géométries. Les géométries sont topologiquement fermées, donc elle contiennent toujours leur frontière. La
dimension de la géométrie de la frontière est la dimension de la géométrie moins un.
Le modèle de géométrie OGC définie des règles de validité pour chaque type géométrique. Ces règles permettent de s’assurer que
les valeurs géométriques représentent des situations réalistes (e.g. il est possible de définir un polygone avec un trou à l’extérieur,
mais cela n’a pas de sens au niveau géométrique, et est donc invalide). PostGIS permet de stocker et de manipuler des valeurs
géométriques invalides, ceci permet de les détecter et de les corriger si besoin. Voir Section 4.4
4.1.1.1 Point
Un objet de type Point est une géométrie de dimension 0, qui représente un seul point dans l’espace.
POINT (1 2)
POINT Z (1 2 3)
POINT ZM (1 2 3 4)
4.1.1.2 LineString
Le type LineString est une ligne, de dimension 1, formée par une séquence de segments linéaires contigus. Chaque segment est
défini par deux points, l’extrémité d’un segment étant le point de départ du segment suivant. Un LineString valide au sens OGC
a soit zéro, soit deux points ou plus, mais PostGIS permet d’avoir des LineStrings avec un seul point. LineStrings peuvent se
croiser (auto-intersection). Un LineString peut être fermé si les points de début et fin sont les mêmes. Un LineString est dit
simple s’il ne s’auto-intersecte pas.
LINESTRING (1 2, 3 4, 5 6)
4.1.1.3 LinearRing
Le type LinearRing définit un LineString qui est à la fois fermé et simple. Autrement dit, le premier et dernier points doivent être
égaux, et la ligne ne doit pas s’auto-intersecter.
LINEARRING (0 0 0, 4 0 0, 4 4 0, 0 4 0, 0 0 0)
4.1.1.4 Polygon
Un polygone, de type Polygon est une région d’un plan, de dimension 2, délimité par une frontière extérieure (la coquille, shell
en anglais) et zéro, une ou plusieurs frontières intérieures (trous, holes en anglais). Chaque frontière est un LinearRing.
POLYGON ((0 0 0,4 0 0,4 4 0,0 4 0,0 0 0),(1 1 0,2 1 0,2 2 0,1 2 0,1 1 0))
4.1.1.5 MultiPoint
4.1.1.6 MultiLineString
Le type MultiLineString est une collection de LineStrings. Un MultiLineString est fermé si tous ses éléments sont fermés.
MULTILINESTRING ( (0 0,1 1,1 2), (2 3,3 2,5 4) )
Manuel PostGIS 3.4.0dev 31 / 870
4.1.1.7 MultiPolygon
Un MultiPolygon est une collection de Polygons, non superposés et non adjacents. Les polygones de la collection peuvent se
toucher, mais uniquement en un nombre fini de points.
MULTIPOLYGON (((1 5, 5 5, 5 1, 1 1, 1 5)), ((6 5, 9 1, 6 1, 6 5)))
4.1.1.8 GeometryCollection
Le type GeometryCollection représente une collection hétérogène de géométries (i.e. de types différents).
GEOMETRYCOLLECTION ( POINT(2 3), LINESTRING(2 3, 3 4))
4.1.1.9 PolyhedralSurface
Le type PolyhedralSurface modélise une surface polyédrique, sous la forme d’une collection de faces qui partagent des arêtes.
Chaque face est un Polygon plan. Si les coordonnées du Polygon ont une dimension Z, alors la surface est de dimension 3.
POLYHEDRALSURFACE Z (
((0 0 0, 0 0 1, 0 1 1, 0 1 0, 0 0 0)),
((0 0 0, 0 1 0, 1 1 0, 1 0 0, 0 0 0)),
((0 0 0, 1 0 0, 1 0 1, 0 0 1, 0 0 0)),
((1 1 0, 1 1 1, 1 0 1, 1 0 0, 1 1 0)),
((0 1 0, 0 1 1, 1 1 1, 1 1 0, 0 1 0)),
((0 0 1, 1 0 1, 1 1 1, 0 1 1, 0 0 1)) )
4.1.1.10 Triangle
Un Triangle est un polygone définit par trois sommets non colinéaires. Un Triangle étant un Polygon, et donc est fermé, il est
définit par quatre coordonnées, la première et la dernière étant égales.
TRIANGLE ((0 0, 0 9, 9 0, 0 0))
4.1.1.11 TIN
Un TIN est une collection de Triangles non superposés, représentant un réseau irrégulier triangulé (Triangulated Irregular Net-
work).
TIN Z ( ((0 0 0, 0 0 1, 0 1 0, 0 0 0)), ((0 0 0, 0 1 0, 1 1 0, 0 0 0)) )
La norme ISO/IEC 13249-3 SQL Multimedia - Spatial (SQL/MM) étend l’OGC SFA pour définir des sous-types de géométrie
contenant des courbes avec des arcs circulaires. Les types SQL/MM prennent en charge les coordonnées 3DM, 3DZ et 4D.
Note
Toutes les comparaisons en flottant dans l’implémentation de SQL-MM sont effectuées avec une tolérance spécifiée,
actuellement 1E-8.
Manuel PostGIS 3.4.0dev 32 / 870
4.1.2.1 CircularString
CircularString est le type de courbe de base, similaire à LineString dans le monde linéaire. Un segment d’arc unique est spécifié
par trois points : les points de départ et d’arrivée (premier et troisième) et un autre point de l’arc. Pour spécifier un cercle fermé,
les points de départ et d’arrivée sont les mêmes et le point central est le point opposé sur le diamètre du cercle (qui est le centre de
l’arc). Dans une séquence d’arcs, le point final de l’arc précédent est le point de départ de l’arc suivant, tout comme les segments
d’une LineString. Cela signifie qu’une CircularString doit avoir un nombre impair de points supérieur à 1.
CIRCULARSTRING(0 0, 1 1, 1 0)
CIRCULARSTRING(0 0, 4 0, 4 4, 0 4, 0 0)
4.1.2.2 CompoundCurve
Une CompoundCurve est une courbe continue unique qui peut contenir à la fois des segments d’arc de cercle et des segments
linéaires. Cela signifie qu’en plus d’avoir des composantes bien formées, le point final de chaque composante (sauf la dernière)
doit coïncider avec le point de départ de la composante suivante.
COMPOUNDCURVE( CIRCULARSTRING(0 0, 1 1, 1 0),(1 0, 0 1))
4.1.2.3 CurvePolygon
Un CurvePolygon est semblable à un polygone, avec un anneau extérieur et zéro ou plusieurs anneaux intérieurs. La différence
est qu’un anneau peut être une CircularString ou une CompoundCurve ainsi qu’une LineString.
Depuis PostGIS 1.4, PostGIS prend en charge les courbes composées dans un polygone de courbe.
CURVEPOLYGON(
CIRCULARSTRING(0 0, 4 0, 4 4, 0 4, 0 0),
(1 1, 3 3, 3 1, 1 1) )
Exemple : Un PolygoneCourbe dont l’enveloppe est définie par une CompoundCurve contenant une CircularString et une
LineString, et dont le trou est défini par une CircularString.
CURVEPOLYGON(
COMPOUNDCURVE( CIRCULARSTRING(0 0,2 0, 2 1, 2 3, 4 3),
(4 3, 4 5, 1 4, 0 0)),
CIRCULARSTRING(1.7 1, 1.4 0.4, 1.6 0.4, 1.6 0.5, 1.7 1) )
4.1.2.4 MultiCurve
Une MultiCurve est un ensemble de courbes qui peuvent inclure des LineStrings, des CircularStrings ou des CompoundCurves.
MULTICURVE( (0 0, 5 5), CIRCULARSTRING(4 0, 4 4, 8 4))
4.1.2.5 MultiSurface
Une MultiSurface est un ensemble de surfaces, qui peuvent être des polygones (linéaires) ou des polygones courbes.
MULTISURFACE(
CURVEPOLYGON(
CIRCULARSTRING( 0 0, 4 0, 4 4, 0 4, 0 0),
(1 1, 3 3, 3 1, 1 1)),
((10 10, 14 12, 11 10, 10 10), (11 11, 11.5 11, 11 11.5, 11 11)))
Manuel PostGIS 3.4.0dev 33 / 870
La spécification OGC SFA définit deux formats pour représenter des valeurs géométriques : Well-Known Text (WKT) et Well-
Known Binary (WKB). Ces deux formats incluent les informations sur le type d’objet et sur les coordonnées qui le définissent.
Well-Known Text (WKT) fournit un standard pour représenter de façon textuelle des données spatiales. Voici quelques exemples
de représentations WKT :
• POINT(0 0)
• POINT Z (0 0 0)
• POINT ZM (0 0 0 0)
• POINT EMPTY
• LINESTRING(0 0,1 1,1 2)
• LINESTRING EMPTY
• POLYGON((0 0,4 0,4 4,0 4,0 0),(1 1, 2 1, 2 2, 1 2,1 1))
• MULTIPOINT((0 0),(1 2))
• MULTIPOINT Z ((0 0 0),(1 2 3))
• MULTIPOINT EMPTY
• MULTILINESTRING((0 0,1 1,1 2),(2 3,3 2,5 4))
• MULTIPOLYGON(((0 0,4 0,4 4,0 4,0 0),(1 1,2 1,2 2,1 2,1 1)), ((-1 -1,-1 -2,-2 -2,-2 -1,-1 -1)))
• GEOMETRYCOLLECTION(POINT(2 3),LINESTRING(2 3,3 4))
• GEOMETRYCOLLECTION EMPTY
Des méthodes d’entrée/sortie en WKT sont fournies via les fonctions ST_AsText et ST_GeomFromText :
text WKT = ST_AsText(geometry);
geometry = ST_GeomFromText(text WKT, SRID);
Par exemple, une requête pour créer et insérer une objet spatial sous forme de WKT et avec un SRID :
INSERT INTO geotable ( geom, name )
VALUES ( ST_GeomFromText('POINT(-126.4 45.32)', 312), 'A Place');
Well-Known Binary (WKB) fournit un moyen portable et sans perte de précision pour représenter des données spatiales sous la
forme de données binaires (tableau d’octets). Voici quelques exemples de représentations WKB :
• WKT : POINT(1 1)
WKB : 0101000000000000000000F03F000000000000F03
• WKT : LINESTRING (2 2, 9 9)
WKB : 0102000000020000000000000000000040000000000000004000000000000022400000000000002240
Des méthodes d’entrée/sortie en WKB sont fournies via les fonctions ST_AsBinary et ST_GeomFromWKB :
bytea WKB = ST_AsBinary(geometry);
geometry = ST_GeomFromWKB(bytea WKB, SRID);
Par exemple, une requête pour créer et insérer une objet spatial sous forme de WKB :
INSERT INTO geotable ( geom, name )
VALUES ( ST_GeomFromWKB('\x0101000000000000000000f03f000000000000f03f', 312), 'A Place');
Manuel PostGIS 3.4.0dev 34 / 870
PostGIS implémente le modèle Simple Features de l’OGC via un type PostgreSQL geometry. Ce type représente tous les
sous-types de géométries en utilisant un type interne (voir GeometryType et ST_GeometryType). Cela permet de modéliser les
entités spatiales comme lignes de tables qui contiennent une colonne de type geometry.
Le type geometry est opaque, ce qui veut dire que tout accès est fait en appelant des fonctions sur les valeurs géométriques.
Des fonctions permettent la création d’objets géométriques, l’accès et la mise à jour des champs internes, ainsi que le calcul de
nouvelles valeurs géométriques. PostGIS supporte toutes les fonctions spécifiées par la spécification OGC Simple feature access
- Part 2: SQL option (SFS), ainsi que de nombreuses autres. voir Chapter 7 pour une liste complète des fonctions disponibles.
Note
PostGIS respecte le standard SFA en préfixant toutes les fonctions spatiales par "ST_". Initialement, cela voulait dire
"Spatial and Temporal" (Spatial et Temporel), mais l’aspect temporel du standard n’a pas été développé. À la place,
ceci peut être interprété comme "Spatial Type" (Type Spatial).
La standard SFA spécifie que les objets spatiaux doivent inclure un identifiant de système de coordonnées de référence (SRID).
Ce SRID est obligatoire lors de la création d’objets spatiaux pour l’insertion dans la base de données (mais peut être défini par
défaut à 0). Voir ST_SRID et Section 4.5
Pour optimiser les requêtes sur les géométries, PostGIS définit plusieurs types d’index spatiaux, ainsi que des opérateurs spatiaux
pour les utiliser. Voir Section 4.9 et Section 5.2 pour plus d’informations.
Les spécifications OGC SFA ne supportaient initialement que les géométries 2D, et le SRID de la géométrie n’est pas inclut
dans les représentations d’entrée/sortie. La spécification OGC SFA 1.2.1 (qui est alignée avec le standard ISO 19125) ajoute le
support pour la 3D (ZYZ) et les mesures (XYM et XYZM), mais n’inclut toujours pas la valeur du SRID.
À cause de ces limitations, PostGIS définit les formats étendus EWKB ((Extended Well-Known Binary) et EWKT (Extended
Well-Known Text). Ils supportent la 3D (XYZ et XYM) et 4D (XYZM) et incluent l’information de SRID. Le format EWKB
incluant toutes les informations de la géométrie, cela permet à PostGIS d’utiliser ce format pour les enregistrements (e.g. dans
les fichiers DUMP).
EWKB et EWKT sont utilisés pour les "formes canoniques" des objets spatiaux de PostGIS. En tant qu’entrée, la forme canonique
pour les données binaires est EWKB ; pour les données textuelles EWKB et EWKT sont tous deux acceptés. Cela permet de
créer des valeurs géométriques en transtypant une valeur textuelle en HEXEWKB ou EWKT vers une valeur géométrique en
utilisant ::geometry. Pour la sortie, la forme canonique pour les données binaires est EWKB et HEXEWKB (hex-encoded
EWKB) pour les données textuelles.
Par exemple, cette requête créé une géométrie en transtypant depuis une chaîne de caractères contenant du EKWT, et retourne sa
valeur sous sa forme canonique en HEXEWKB :
SELECT 'SRID=4;POINT(0 0)'::geometry;
geometry
----------------------------------------------------
01010000200400000000000000000000000000000000000000
EWKT évite de sur-spécifier les dimensions et ainsi éviter les inconsistances possibles avec le format OGC/ISO, comme :
• POINT ZM (1 1)
• POINT ZM (1 1 1)
• POINT (1 1 1 1)
Caution
Les formats étendus PostGIS sont des sur-ensembles des formats OGC, donc les représentations valides WKB/WKT
sont aussi des représentations EWKB/EWKT valides. Cependant, cela pourrait changer à l’avenir, si l’OGC définit
un format qui rentrerait en conflit avec la définition de PosGIS. Vous ne devriez donc PAS vous appuyer sur cette
compatibilité !
• POINT(0 0 0) -- XYZ
Par exemple, une requête pour créer et insérer une objet spatial sous forme de EWKT :
INSERT INTO geotable ( geom, name )
VALUES ( ST_GeomFromEWKT('SRID=312;POINTM(-126.4 45.32 15)'), 'A Place' )
Manuel PostGIS 3.4.0dev 36 / 870
Le type de données PostGIS geography permet le support des entités spatiales utilisant un système de coordonnées géo-
graphique (parfois appelé géodésique, ou "latitude/longitude" ou "longitude/latitude"). Les coordonnées géographiques sont des
coordonnées sphériques, exprimées en unités d’angle (degrés).
Le type geometry de PostGIS est lié à un plan. Ainsi, le chemin le plus court entre deux points sur un plan est la ligne droite.
Les fonctions sur les types geometry (aires, distances, intersections, etc.) sont donc calculées en utilisant des lignes droites et les
mathématiques cartésiennes. Cela permet des implémentations plus faciles et plus rapides à exécuter, mais cela devient imprécis
lorsque la rotondité de la Terre entre en jeu.
Le type PostGIS geography repose sur un modèle sphérique. Le chemin le plus court entre deux points sur une sphère est l’arc
de cercle. Les fonctions sur les types geography (aires, distances, intersections, etc.) sont donc calculées en utilisant des arcs de
cercle sur une sphère. En prenant en compte la rotondité de la Terre, ces fonctions permettent d’avoir une meilleure précision.
Les mathématiques utilisées pour les calculs étant plus compliquées, moins de fonctions sont définies pour le type geography
que pour le type geometry. De nouveaux algorithmes sont ajoutés au fur et à mesure des versions de PostGIS, donc le support du
type geography s’étend petit à petit. Si une fonction n’est pas disponible, il est toutefois possible de convertir un type geography
en geometry puis vice-versa.
Comme le type geometry, les données géographiques sont liées à un identifiant de système de coordonnées de référence (SRID).
Tout système géodésique (reposant sur longitude/latitude) peut être utilisé, tant qu’il défini dans la table spatial_ref_sys.
(Avant PostGIS 2.2, le type geography ne supportait que le SCR WGS 84 (SRID:4326)). Vous pouvez ajouter votre propre SCR
géodésique, comme décrit dans Section 4.5.2.
Pour tous les systèmes de coordonnées de référence, les unités des valeurs retournées par les fonctions de mesure (e.g. ST_Distance,
ST_Length, ST_Perimeter, ST_Area) et le paramètre de distance de ST_DWithin sont en mètres.
Vous pouvez créer une table pour stocker des données géographiques en utilisant la requête SQL CREATE TABLE, avec une
colonne de type geography. L’exemple suivant créé une table avec une colonne géographique pour stocker des lignes 2D dans
un SCR géodésique WGS84 (SRID 4326) :
CREATE TABLE global_points (
id SERIAL PRIMARY KEY,
name VARCHAR(64),
location geography(POINT,4326)
);
• le modificateur de type spatial restreint le type de formes et dimensions de la colonne. Les valeurs permises pour le type spatial
sont : POINT, LINESTRING, POLYGON, MULTIPOINT, MULTILINESTRING, MULTIPOLYGON, GEOMETRYCOL-
LECTION. Le type geography ne supporte pas les CURVEs, TINS, ni POLYHEDRALSURFACEs. Le modificateur permet
de restreindre la dimension, en ajoutant les suffixes : Z, M ou ZM. Par exemple, un modificateur ’LINESTRINGM’ per-
met uniquement de stocker des LineStrings en 3D, et traite la troisième dimension comme une mesure. De façon similaire,
’POINTZM’ limite aux données 4D (XYZM).
• le modificateur SRID restreint à un SCR spécifique. Si omis, le SRID 4326 (WGS84 géodésique) est utilisé, et tous les calculs
sont effectués en utilisant WGS84.
• Création d’une table avec une géographie POINT 2D avec le SRID par défaut 4326 (WGS84 longitude/latitude) :
CREATE TABLE ptgeogwgs(gid serial PRIMARY KEY, geog geography(POINT) );
• Création d’une table avec une géographie POINT 2D dans le CRS NAD83 longlat :
Manuel PostGIS 3.4.0dev 37 / 870
• Création d’une table avec une géographie POINT 3D (XYZ) avec le SCR explicite 4326 :
CREATE TABLE ptzgeogwgs84(gid serial PRIMARY KEY, geog geography(POINTZ,4326) );
• Création d’une table avec une géographie LINESTRING 2D avec le SRID par défaut 4326 :
CREATE TABLE lgeog(gid serial PRIMARY KEY, geog geography(LINESTRING) );
• Création d’une table avec une géographie POLYGON 2D avec le SRC 4267 (NAD 1927 long lat) :
CREATE TABLE lgeognad27(gid serial PRIMARY KEY, geog geography(POLYGON,4267) );
Les colonnes géographiques sont enregistrées dans la vue système geography_columns. Vous pouvez effectuer un requête
sur la vue geography_columns et vérifier que la table est bien listée :
SELECT * FROM geography_columns;
La création d’index spatiaux sur les colonnes de type geography fonctionne de la même manière qu’avec le type geometry.
PostGIS va prendre en compte que le type de la colonne est GEOGRAPHY et créer un index sphérique au lieu d’un index
planaire utilisé pour GEOMETRY.
-- Index the test table with a spherical index
CREATE INDEX global_points_gix ON global_points USING GIST ( location );
Vous pouvez insérer des données dans des tables géographiques de la même façon qu’avec les géométries. Les données
géométriques seront automatiquement transtypées en type geography si le SRID des données est 4326. Les formats EWKT
et EWKB peuvent aussi être utilisés pour spécifier les valeurs géographiques.
-- Add some data into the test table
INSERT INTO global_points (name, location) VALUES ('Town', 'SRID=4326;POINT(-110 30)');
INSERT INTO global_points (name, location) VALUES ('Forest', 'SRID=4326;POINT(-109 29)');
INSERT INTO global_points (name, location) VALUES ('London', 'SRID=4326;POINT(0 49)');
Tout CRS géodésique (longitude/latitude) disponible dans la table spatial_ref_sys peut être utilisé comme SRID d’une
géographie. L’utilisation d’un CRS non géodésique provoquera une erreur.
-- NAD 83 lon/lat
SELECT 'SRID=4269;POINT(-123 34)'::geography;
geography
----------------------------------------------------
0101000020AD1000000000000000C05EC00000000000004140
-- NAD27 lon/lat
SELECT 'SRID=4267;POINT(-123 34)'::geography;
geography
----------------------------------------------------
0101000020AB1000000000000000C05EC00000000000004140
-- NAD83 UTM zone meters - gives an error since it is a meter-based planar projection
SELECT 'SRID=26910;POINT(-123 34)'::geography;
Les requêtes et les fonctions de mesure utilisent le mètre comme unité. Les paramètres de distance doivent être exprimés en
mètres, et les valeurs de retours seront également en mètres (ou en mètres carré pour les surfaces).
-- A distance query using a 1000km tolerance
SELECT name FROM global_points WHERE ST_DWithin(location, 'SRID=4326;POINT(-110 29)':: ←-
geography, 1000000);
Vous pouvez vérifier la puissance des géographies en calculant à quel point un avion s’approche de Reykjavik (POINT(-21.96
64.15)) lors d’un trajet en arc de cercle depuis Seattle à Londres (LINESTRING(-122.33 47.606, 0.0 51.5)) (voir la route).
Le type geography donne la plus petite distance réelle de 122,235 km sur la sphère entre Reykjavik et l’arc de cercle entre Seattle
et Londres.
-- Distance calculation using GEOGRAPHY
SELECT ST_Distance('LINESTRING(-122.33 47.606, 0.0 51.5)'::geography, 'POINT(-21.96 64.15) ←-
'::geography);
st_distance
-----------------
122235.23815667
Le type geometry quant à lui calcule la distance cartésienne entre Reykjavik et la ligne droite entre Seattle et Londres, telle
qu’elle serait tracée sur un plan. Cette distance n’a pas de sens réel, d’autant que l’unité du résultat est techniquement en degrés,
mais que le résultat ne correspond à aucune différence angulaire entre les points, donc même considérer le résultat comme des
degrés serait faux.
-- Distance calculation using GEOMETRY
SELECT ST_Distance('LINESTRING(-122.33 47.606, 0.0 51.5)'::geometry, 'POINT(-21.96 64.15) ←-
'::geometry);
st_distance
--------------------
13.342271221453624
Le type de données geography permet de stocker des données en utilisant les coordonnées longitude/latitude, mais cela a un
prix : il y a moins de fonctions disponibles sur le type GEOGRAPHY que sur le type GEOMETRY, et les fonctions disponibles
prendront plus de temps CPU pour s’exécuter.
Le type de données à choisir devrait être déterminé par la zone de travail de l’application que vous construisez. Est-ce que vos
données s’étendront sur l’ensemble du globe ou sur un continent, ou bien est-ce qu’elle seront locales, comme une région, un
département ou une ville ?
• Si vous données sont limitées à une petite zone, utiliser un SCR adéquat et le type GEOMETRY est la meilleure solution, à la
fois en terme de performances que de fonctionnalités disponibles.
• Si vos données s’étendent sur le monde entier ou couvrent un continent, le type GEOGRAPHY peut vous permettre de con-
struire votre application sans trop vous soucier des projections. Vous pouvez stocker vos données en utilisant les coordonnées
longitude/latitude, et utiliser les fonctions définies sur les GEOGRAPHY.
• Si vous n’êtes pas à l’aise avec les projections, que vous ne souhaitez pas approfondir le sujet, et que vous êtes prêts à accepter
les limitations sur les fonctionnalités offertes par GEOGRAPHY, alors ce peut être plus facile d’utiliser GEOGRAPHY au lieu
de GEOMETRY. Chargez vos données en longitude/latitude et partez de là.
Référez-vous à Section 12.11 pour comparer les supports Geography et Geometry. Pour avoir un résumé des fonctions géo-
graphiques disponibles, référez-vous à Section 12.4
Manuel PostGIS 3.4.0dev 39 / 870
PostGIS est conforme à la spécification Simple Features de l’Open Geospatial Consortium (OGC). Cette norme définit les con-
cepts de géométrie comme étant simple et valide. Ces définitions permettent au modèle géométrique Simple Features de représen-
ter les objets spatiaux d’une manière cohérente et non ambiguë qui permet un calcul efficace. (Remarque : l’OGC SF et SQL/MM
ont les mêmes définitions pour simple et valide).
Une géométrie simple est une géométrie qui ne présente pas de points géométriques anormaux, tels qu’une intersection ou une
tangence propre.
Un POINT est intrinsèquement simple en tant qu’objet géométrique à 0 dimension.
Les MULTIPOINT sont simples si deux coordonnées (POINTs) ne sont pas égales (ont des valeurs de coordonnées identiques).
Une LINESTRING est simple si elle ne passe pas deux fois par le même point, à l’exception des extrémités. Si les extrémités
d’une simple LineString sont identiques, elle est dite fermée et appelée anneau linéaire.
(a) et (c) sont des LINESTRING simples. (b) et (d) ne sont pas simples. (c) est un anneau linéaire fermé.
Manuel PostGIS 3.4.0dev 40 / 870
(a) (b)
(c) (d)
Un MULTILINESTRING est simple uniquement si tous ses éléments sont simples et si la seule intersection entre deux éléments
quelconques se produit en des points situés sur les limites des deux éléments.
Les POLYGON sont formés à partir d’anneaux linéaires, de sorte que la géométrie polygonale valide est toujours simple.
Pour tester si une géométrie est simple, utilisez la fonction ST_IsSimple :
SELECT
ST_IsSimple('LINESTRING(0 0, 100 100)') AS straight,
ST_IsSimple('LINESTRING(0 0, 100 100, 100 0, 0 100)') AS crossing;
straight | crossing
----------+----------
t | f
En général, les fonctions PostGIS n’exigent pas que les arguments géométriques soient simples. La simplicité est principalement
utilisée comme base pour définir la validité géométrique. C’est également une exigence pour certains types de modèles de
données spatiales (par exemple, les réseaux linéaires interdisent souvent les lignes qui se croisent). La géométrie multipoint et
linéaire peut être rendue simple en utilisant ST_UnaryUnion.
1. les anneaux de délimitation du polygone (l’anneau extérieur de la coquille et les anneaux intérieurs des trous) sont simples
(ils ne se croisent pas et ne se touchent pas). Pour cette raison, un polygone ne peut pas avoir de lignes de coupe, de pointes
ou de boucles. Cela implique que les trous des polygones doivent être représentés par des anneaux intérieurs, plutôt que
par l’anneau extérieur qui se touche (ce qu’on appelle un "trou inversé").
2. les anneaux de délimitation ne se croisent pas
3. Les anneaux de délimitation peuvent se toucher en certains points, mais uniquement sous la forme d’une tangente (c’est-
à-dire pas sous la forme d’une ligne).
(h) et (i) sont des POLYGON valides. (j-m) ne sont pas valides. (j) peut être représenté comme un MULTIPOLYGON
valide.
Ces règles signifient que la géométrie polygonale valide est également simple.
Pour la géométrie linéaire, la seule règle de validité est que les LINESTRING doivent avoir au moins deux points et une longueur
non nulle (ou, de façon équivalente, au moins deux points distincts).
SELECT
ST_IsValid('LINESTRING(0 0, 1 1)') AS len_nonzero,
ST_IsValid('LINESTRING(0 0, 0 0, 0 0)') AS len_zero,
ST_IsValid('LINESTRING(10 10, 150 150, 180 50, 20 130)') AS self_int;
PostGIS permet de créer et de stocker des géométries valides et non valides. Cela permet de détecter les géométries non valides
et de les signaler ou de les corriger. Il existe également des situations où les règles de validité de l’OGC sont plus strictes que
souhaité (par exemple, les lignes de longueur nulle et les polygones avec des trous inversés).
De nombreuses fonctions fournies par PostGIS reposent sur l’hypothèse que les arguments géométriques sont valides. Par
exemple, il n’est pas logique de calculer la surface d’un polygone dont le trou est défini à l’extérieur du polygone, ou de construire
un polygone à partir d’une ligne de démarcation non simple. Le fait de supposer que les entrées géométriques sont valides permet
aux fonctions de fonctionner plus efficacement, puisqu’elles n’ont pas besoin de vérifier l’exactitude topologique. (Les exceptions
notables sont que les lignes de longueur nulle et les polygones avec des inversions sont généralement traités correctement).
En outre, la plupart des fonctions PostGIS produisent une géométrie valide si les données d’entrée sont valides. Cela permet
d’enchaîner les fonctions PostGIS en toute sécurité.
Si vous rencontrez des messages d’erreur inattendus lors de l’appel de fonctions PostGIS (tels que "GEOS Intersection() threw
an error !"), vous devez d’abord vous assurer que les arguments de la fonction sont valides. Si ce n’est pas le cas, envisagez
d’utiliser l’une des techniques ci-dessous pour vous assurer que les données que vous traitez sont valides.
Note
Si une fonction signale une erreur avec des entrées valides, il se peut que vous ayez trouvé une erreur dans PostGIS ou
dans l’une des bibliothèques qu’il utilise, et vous devez le signaler au projet PostGIS. Il en va de même si une fonction
PostGIS renvoie une géométrie non valide pour des données d’entrée valides.
Manuel PostGIS 3.4.0dev 44 / 870
Les informations relatives à la nature et à la localisation d’une invalidité géométrique sont fournies par la fonction ST_IsValidDetail
:
SELECT valid, reason, ST_AsText(location) AS location
FROM ST_IsValidDetail('POLYGON ((20 20, 120 190, 50 190, 170 50, 20 20))') AS t;
Dans certaines situations, il est souhaitable de corriger automatiquement la géométrie non valide. Utilisez la fonction ST_MakeValid
pour ce faire. (ST_MakeValid est un exemple de fonction spatiale qui doit permettre une entrée non valide).
Par défaut, PostGIS ne vérifie pas la validité lors du chargement de la géométrie, car les tests de validité peuvent prendre beaucoup
de temps CPU pour les géométries complexes. Si vous ne faites pas confiance à vos sources de données, vous pouvez imposer
un contrôle de validité à vos tables en ajoutant une contrainte de contrôle :
ALTER TABLE mytable
ADD CONSTRAINT geometry_valid_check
CHECK (ST_IsValid(geom));
Un système de référence spatiale (SRS) (également appelé système de référence des coordonnées (SRC)) définit la manière dont
la géométrie est référencée par rapport à des emplacements sur la surface de la Terre. Il existe trois types de SRS :
• Un SRS géodésique utilise des coordonnées angulaires (longitude et latitude) qui correspondent directement à la surface de la
terre.
• Un SRS projeté utilise une transformation mathématique de projection pour "aplatir" la surface de la terre sphéroïdale sur un
plan. Il attribue des coordonnées de localisation d’une manière qui permet de mesurer directement des quantités telles que
la distance, la surface et l’angle. Le système de coordonnées est cartésien, ce qui signifie qu’il a un point d’origine défini et
deux axes perpendiculaires (généralement orientés vers le nord et l’est). Chaque SRS projeté utilise une unité de longueur
définie (généralement des mètres ou des pieds). Un SRS projeté peut être limité dans sa zone d’applicabilité afin d’éviter toute
distorsion et de s’inscrire dans les limites des coordonnées définies.
• Un SRS local est un système de coordonnées cartésiennes qui n’est pas référencé à la surface de la terre. Dans PostGIS, ce
système est spécifié par une valeur SRID de 0.
Il existe de nombreux systèmes de référence spatiale différents. Les SRS courants sont normalisés dans la base de données de
l’European Petroleum Survey Group EPSG database. Par commodité, PostGIS (et de nombreux autres systèmes spatiaux) se
réfère aux définitions des SRS à l’aide d’un identifiant entier appelé SRID.
Une géométrie est associée à un système de référence spatiale par sa valeur SRID, à laquelle on accède par ST_SRID. Le
SRID d’une géométrie peut être assigné en utilisant ST_SetSRID. Certaines fonctions de construction de géométrie permettent
de fournir un SRID (telles que ST_Point et ST_MakeEnvelope). Le format EWKT prend en charge les SRID avec le préfixe
SRID=n;.
Les fonctions spatiales qui traitent des paires de géométries (telles que les fonctions overlay et relationship) exigent que les
géométries d’entrée soient dans le même système de référence spatiale (qu’elles aient le même SRID). Les données géométriques
peuvent être transformées dans un système de référence spatiale différent en utilisant ST_Transform et ST_TransformPipeline.
Les géométries renvoyées par les fonctions ont le même SRS que les géométries d’entrée.
Manuel PostGIS 3.4.0dev 45 / 870
La table SPATIAL_REF_SYS utilisée par PostGIS est une table de base de données conforme à l’OGC qui définit les systèmes
de référence spatiale disponibles. Elle contient les SRID numériques et les descriptions textuelles des systèmes de coordonnées.
La définition de la table spatial_ref_sys est la suivante :
CREATE TABLE spatial_ref_sys (
srid INTEGER NOT NULL PRIMARY KEY,
auth_name VARCHAR(256),
auth_srid INTEGER,
srtext VARCHAR(2048),
proj4text VARCHAR(2048)
)
srid Un code entier qui identifie de manière unique le Système de référence spatiale (SRS) dans la base de données.
auth_name Le nom de la norme ou de l’organisme de normalisation qui est cité pour ce système de référence. Par exemple,
"EPSG" est un auth_name valide.
auth_srid L’ID du système de référence spatiale tel que défini par l’autorité citée dans le auth_name. Dans le cas de l’EPSG,
il s’agit du code EPSG.
srtext Représentation Well-Known Text du système de référence spatiale. Un exemple de représentation WKT du SRS est le
suivant :
PROJCS["NAD83 / UTM Zone 10N",
GEOGCS["NAD83",
DATUM["North_American_Datum_1983",
SPHEROID["GRS 1980",6378137,298.257222101]
],
PRIMEM["Greenwich",0],
UNIT["degree",0.0174532925199433]
],
PROJECTION["Transverse_Mercator"],
PARAMETER["latitude_of_origin",0],
PARAMETER["central_meridian",-123],
PARAMETER["scale_factor",0.9996],
PARAMETER["false_easting",500000],
PARAMETER["false_northing",0],
UNIT["metre",1]
]
Pour une discussion sur le SRS WKT, voir la norme OGC Well-known text representation of coordinate reference systems.
proj4text PostGIS utilise la bibliothèque PROJ pour fournir des capacités de transformation de coordonnées. La colonne
proj4text contient la chaîne de caractères de définition des coordonnées PROJ pour un SRID particulier. Par exemple :
+proj=utm +zone=10 +ellps=clrk66 +datum=NAD27 +units=m
Pour plus d’informations, consultez le site web de PROJ. Le fichier spatial_ref_sys.sql contient les définitions
srtext et proj4text pour toutes les projections EPSG.
Lors de la récupération des définitions des systèmes de référence spatiale pour les utiliser dans les transformations, PostGIS
utilise la stratégie suivante :
• Si auth_name et auth_srid sont présents (non NULL), utiliser le PROJ SRS basé sur ces entrées (si au moins un existe).
• Si srtext est présent, créez un SRS en l’utilisant, si possible.
• Si proj4text est présent, créez un SRS en l’utilisant, si possible.
Manuel PostGIS 3.4.0dev 46 / 870
La table PostGIS spatial_ref_sys contient plus de 3000 définitions des systèmes de référence spatiale les plus courants
qui sont gérés par la bibliothèque de projection PROJ. Mais il existe de nombreux systèmes de coordonnées qu’elle ne contient
pas. Vous pouvez ajouter des définitions de SRS à la table si vous disposez des informations requises sur le système de référence
spatiale. Vous pouvez également définir votre propre système de référence spatiale personnalisé si vous êtes familiarisé avec
les constructions PROJ. Gardez à l’esprit que la plupart des systèmes de référence spatiale sont régionaux et n’ont aucune
signification lorsqu’ils sont utilisés en dehors des limites pour lesquelles ils ont été conçus.
Une ressource permettant de trouver des systèmes de référence spatiale non définis dans le jeu de base est http://spatialreference.org/-
Les systèmes de référence spatiale les plus couramment utilisés sont les suivants : 4326 - WGS 84 Long Lat, 4269 - NAD 83
Long Lat, 3395 - WGS 84 World Mercator, 2163 - US National Atlas Equal Area, et les 60 zones UTM WGS84. Les zones
UTM sont parmi les plus idéales pour les mesures, mais elles ne couvrent que des régions de 6 degrés. (Pour déterminer la zone
UTM à utiliser pour votre zone d’intérêt, voir la utmzone PostGIS plpgsql helper function.)
Les États américains utilisent des systèmes de référence spatiale State Plane (basés sur le mètre ou le pied) - il en existe générale-
ment un ou deux par État. La plupart des systèmes basés sur le mètre se trouvent dans le jeu de base, mais de nombreux systèmes
basés sur le pied ou créés par ESRI devront être copiés à partir de spatialreference.org.
Vous pouvez même définir des systèmes de coordonnées non terrestres, tels que Mars 2000 Ce système de coordonnées martien
n’est pas planaire (il est en degrés sphéroïdaux), mais vous pouvez l’utiliser avec le type géographie pour obtenir des mesures
de longueur et de proximité en mètres au lieu de degrés.
Voici un exemple de chargement d’un système de coordonnées personnalisé à l’aide d’un SRID non attribué et de la définition
PROJ pour une projection Lambert conforme centrée sur les États-Unis :
INSERT INTO spatial_ref_sys (srid, proj4text)
VALUES ( 990000,
'+proj=lcc +lon_0=-95 +lat_0=25 +lat_1=25 +lat_2=25 +x_0=0 +y_0=0 +datum=WGS84 +units=m ←-
+no_defs'
);
Vous pouvez créer une table pour stocker des données géométriques en utilisant l’instruction SQL CREATE TABLE avec une
colonne de type geometry. L’exemple suivant crée une table avec une colonne géométrie stockant des chaînes de lignes 2D
(XY) dans le système de coordonnées BC-Albers (SRID 3005) :
CREATE TABLE roads (
id SERIAL PRIMARY KEY,
name VARCHAR(64),
geom geometry(LINESTRING,3005)
);
• le modificateur de type spatial restreint le type de formes et de dimensions autorisées dans la colonne. La valeur peut être
l’un des sous-types de géométrie pris en charge (par exemple POINT, LINESTRING, POLYGON, MULTIPOINT, MULTI-
LINESTRING, MULTIPOLYGON, GEOMETRYCOLLECTION, etc). Le modificateur prend en charge les restrictions de
dimensionnalité des coordonnées en ajoutant des suffixes : Z, M et ZM. Par exemple, le modificateur "LINESTRINGM"
n’autorise que les lignes à trois dimensions et traite la troisième dimension comme une mesure. De même, "POINTZM"
requiert des données à quatre dimensions (XYZM).
• le modificateur SRID limite le système de référence spatiale SRID à un nombre particulier. S’il est omis, le SRID prend par
défaut la valeur 0.
Manuel PostGIS 3.4.0dev 47 / 870
• Créer une table contenant n’importe quel type de géométrie avec le SRID par défaut :
CREATE TABLE geoms(gid serial PRIMARY KEY, geom geometry );
• Créer une table avec une géométrie POINT 2D avec le SRID par défaut :
CREATE TABLE pts(gid serial PRIMARY KEY, geom geometry(POINT) );
• Créer une table avec des POINTS 3D (XYZ) et un SRID explicite de 3005 :
CREATE TABLE pts(gid serial PRIMARY KEY, geom geometry(POINTZ,3005) );
• Créer une table avec une géométrie 4D (XYZM) LINESTRING avec le SRID par défaut :
CREATE TABLE lines(gid serial PRIMARY KEY, geom geometry(LINESTRINGZM) );
• Créer une table avec une géométrie POLYGON 2D avec le SRID 4267 (NAD 1927 long lat) :
CREATE TABLE polys(gid serial PRIMARY KEY, geom geometry(POLYGON,4267) );
Il est possible d’avoir plus d’une colonne de géométrie dans une table. Cela peut être spécifié lors de la création de la table, ou
une colonne peut être ajoutée à l’aide de l’instruction SQL ALTER TABLE. Cet exemple ajoute une colonne qui peut contenir
des LineStrings 3D :
ALTER TABLE roads ADD COLUMN geom2 geometry(LINESTRINGZ,4326);
L’OGC Simple Features Specification for SQL définit la table de métadonnées GEOMETRY_COLUMNS pour décrire la structure
de la table géométrique. Dans PostGIS, geometry_columns est une vue qui lit les tables de catalogue du système de base
de données. Cela garantit que les informations de métadonnées spatiales sont toujours cohérentes avec les tables et les vues
actuellement définies. La structure de la vue est la suivante :
\d geometry_columns
View "public.geometry_columns"
Column | Type | Modifiers
-------------------+------------------------+-----------
f_table_catalog | character varying(256) |
f_table_schema | character varying(256) |
f_table_name | character varying(256) |
f_geometry_column | character varying(256) |
coord_dimension | integer |
srid | integer |
type | character varying(30) |
f_table_catalog, f_table_schema, f_table_name Le nom complet de la table d’entités contenant la colonne géométrie. Il n’y
a pas d’analogue PostgreSQL de "catalog", cette colonne est donc laissée vide. Pour "schema", le nom du schéma Post-
greSQL est utilisé (public est la valeur par défaut).
f_geometry_column Le nom de la colonne géométrique dans la table des caractéristiques.
coord_dimension La dimension des coordonnées (2, 3 ou 4) de la colonne.
Manuel PostGIS 3.4.0dev 48 / 870
srid L’ID du système de référence spatiale utilisé pour la géométrie des coordonnées dans cette table. Il s’agit d’une référence
de clé étrangère à la table spatial_ref_sys (voir Section 4.5.1).
type Le type de l’objet spatial. Pour limiter la colonne spatiale à un seul type, utilisez l’une des options suivantes : POINT,
LINESTRING, POLYGON, MULTIPOINT, MULTILINESTRING, MULTIPOLYGON, GEOMETRYCOLLECTION ou
les versions XYM correspondantes POINTM, LINESTRINGM, POLYGONM, MULTIPOINTM, MULTILINESTRINGM,
MULTIPOLYGONM, GEOMETRYCOLLECTIONM. Pour les collections hétérogènes (de type mixte), vous pouvez
utiliser "GEOMETRY" comme type.
Deux des cas où vous pouvez avoir besoin de cela sont les cas de vues SQL et les insertions en masse. Dans le cas des insertions
en masse, vous pouvez corriger l’enregistrement dans la table geometry_columns en contraignant la colonne ou en effectuant
une modification de la table. Pour les vues, vous pouvez exposer en utilisant une opération CAST. Notez que si votre colonne
est basée sur un typmod, le processus de création l’enregistrera correctement, il n’est donc pas nécessaire de faire quoi que ce
soit. De même, les vues qui n’ont pas de fonction spatiale appliquée à la géométrie s’enregistreront de la même manière que la
colonne géométrique de la table sous-jacente.
-- Lets say you have a view created like this
CREATE VIEW public.vwmytablemercator AS
SELECT gid, ST_Transform(geom, 3395) As geom, f_name
FROM public.mytable;
-- If you know the geometry type for sure is a 2D POLYGON then you could do
DROP VIEW public.vwmytablemercator;
CREATE VIEW public.vwmytablemercator AS
SELECT gid, ST_Transform(geom,3395)::geometry(Polygon, 3395) As geom, f_name
FROM public.mytable;
-- If you are using PostGIS 2.0 and for whatever reason, you
-- you need the constraint based definition behavior
-- (such as case of inherited tables where all children do not have the same type and srid)
-- set optional use_typmod argument to false
Manuel PostGIS 3.4.0dev 49 / 870
Bien que l’ancienne méthode basée sur les contraintes soit toujours supportée, une colonne géométrique basée sur les contraintes
utilisée directement dans une vue ne s’enregistrera pas correctement dans geometry_columns, tout comme une colonne typmod.
Dans cet exemple, nous définissons une colonne à l’aide de typmod et une autre à l’aide de contraintes.
CREATE TABLE pois_ny(gid SERIAL PRIMARY KEY, poi_name text, cat text, geom geometry(POINT ←-
,4326));
SELECT AddGeometryColumn('pois_ny', 'geom_2160', 2160, 'POINT', 2, false);
Nous observons qu’ils sont définis différemment - l’un est un typmod, l’autre une contrainte
Table "public.pois_ny"
Column | Type | Modifiers
-----------+-----------------------+------------------------------------------------------
gid | integer | not null default nextval('pois_ny_gid_seq'::regclass)
poi_name | text |
cat | character varying(20) |
geom | geometry(Point,4326) |
geom_2160 | geometry |
Indexes:
"pois_ny_pkey" PRIMARY KEY, btree (gid)
Check constraints:
"enforce_dims_geom_2160" CHECK (st_ndims(geom_2160) = 2)
"enforce_geotype_geom_2160" CHECK (geometrytype(geom_2160) = 'POINT'::text
OR geom_2160 IS NULL)
"enforce_srid_geom_2160" CHECK (st_srid(geom_2160) = 2160)
La colonne de la vue géométrique basée sur le modèle s’enregistre correctement, mais pas celle basée sur les contraintes.
f_table_name | f_geometry_column | srid | type
------------------+-------------------+------+----------
vw_pois_ny_parks | geom | 4326 | POINT
vw_pois_ny_parks | geom_2160 | 0 | GEOMETRY
Manuel PostGIS 3.4.0dev 50 / 870
Cela pourrait changer dans les prochaines versions de PostGIS, mais pour l’instant, pour forcer la colonne de vue basée sur les
contraintes à s’enregistrer correctement, vous devez procéder comme suit :
DROP VIEW vw_pois_ny_parks;
CREATE VIEW vw_pois_ny_parks AS
SELECT gid, poi_name, cat,
geom,
geom_2160::geometry(POINT,2160) As geom_2160
FROM pois_ny
WHERE cat = 'park';
SELECT f_table_name, f_geometry_column, srid, type
FROM geometry_columns
WHERE f_table_name = 'vw_pois_ny_parks';
Une fois que vous avez créé une table spatiale, vous êtes prêt à charger des données spatiales dans la base de données. Il
existe deux façons d’intégrer des données spatiales dans une base de données PostGIS/PostgreSQL : à l’aide d’instructions SQL
formatées ou à l’aide de l’utilitaire qui permet de charger des Shapefiles.
Si les données spatiales peuvent être converties en une représentation textuelle (WKT ou WKB), l’utilisation de SQL pourrait
être le moyen le plus simple d’introduire les données dans PostGIS. Les données peuvent être chargées en masse dans PostGIS/-
PostgreSQL en chargeant un fichier texte d’instructions SQL INSERT à l’aide de l’utilitaire SQL psql.
Un fichier de chargement SQL (roads.sql par exemple) peut ressembler à ceci :
BEGIN;
INSERT INTO roads (road_id, roads_geom, road_name)
VALUES (1,'LINESTRING(191232 243118,191108 243242)','Jeff Rd');
INSERT INTO roads (road_id, roads_geom, road_name)
VALUES (2,'LINESTRING(189141 244158,189265 244817)','Geordie Rd');
INSERT INTO roads (road_id, roads_geom, road_name)
VALUES (3,'LINESTRING(192783 228138,192612 229814)','Paul St');
INSERT INTO roads (road_id, roads_geom, road_name)
VALUES (4,'LINESTRING(189412 252431,189631 259122)','Graeme Ave');
INSERT INTO roads (road_id, roads_geom, road_name)
VALUES (5,'LINESTRING(190131 224148,190871 228134)','Phil Tce');
INSERT INTO roads (road_id, roads_geom, road_name)
VALUES (6,'LINESTRING(198231 263418,198213 268322)','Dave Cres');
COMMIT;
Le chargeur de données shp2pgsql convertit les Shapefiles en SQL pour les insérer dans une base de données PostGIS/Post-
greSQL au format geometry ou geography. Le chargeur a plusieurs modes de fonctionnement sélectionnés par des indicateurs de
ligne de commande.
Manuel PostGIS 3.4.0dev 51 / 870
Il existe également une interface graphique shp2pgsql-gui qui offre la plupart des options du chargeur en ligne de com-
mande. Cette interface peut être plus facile à utiliser pour un chargement ponctuel sans script ou si vous êtes novice en matière
de PostGIS. Il peut également être configuré comme un plugin pour PgAdminIII.
-s [<FROM_SRID>:]<SRID> Crée et remplit les tables de géométrie avec le SRID spécifié. Il est possible de spécifier que le
fichier de forme d’entrée utilise le FROM_SRID donné, auquel cas les géométries seront reprojetées dans le SRID cible.
-k Conserver la casse des identifiants (colonne, schéma et attributs). Notez que les attributs dans Shapefile sont tous en majus-
cules.
-i Contraindre tous les entiers à des entiers 32 bits standard, ne pas créer de bigints 64 bits, même si la signature de l’en-tête
DBF semble le justifier.
-I Créer un index GiST sur la colonne géométrie.
-m -m nom_de_fichier Spécifier un fichier contenant un ensemble de correspondances entre les noms de colonnes (longs)
et les noms de colonnes DBF à 10 caractères. Le contenu du fichier est une ou plusieurs lignes de deux noms séparées par
un espace blanc, sans espace de départ ni de fin. Par exemple :
COLUMNNAME DBFFIELD1
AVERYLONGCOLUMNNAME DBFFIELD2
-S Génère des géométries simples au lieu de géométries MULTI. Ne réussira que si toutes les géométries sont en fait simples
(c’est-à-dire un MULTIPOLYGON avec une seule enveloppe, ou un MULTIPOINT avec un seul sommet).
-t <dimensionality> Force la géométrie de sortie à avoir la dimensionnalité spécifiée. Utilisez les chaînes de caractères suivantes
pour indiquer la dimensionnalité : 2D, 3DZ, 3DM, 4D.
Si l’entrée a moins de dimensions que celles spécifiées, la sortie aura ces dimensions remplies avec des zéros. Si l’entrée
a plus de dimensions que celles spécifiées, les dimensions non désirées seront supprimées.
-w Sortie au format WKT, au lieu de WKB. Notez que cela peut introduire des dérives de coordonnées dues à la perte de
précision.
-e Exécuter chaque instruction séparément, sans utiliser de transaction. Cela permet de charger la majorité des bonnes données
lorsqu’il y a quelques mauvaises géométries qui génèrent des erreurs. Notez que cela ne peut pas être utilisé avec l’option
-D car le format "dump" utilise toujours une transaction.
-W <encoding> Spécifie l’encodage des données d’entrée (fichier dbf). Lorsqu’il est utilisé, tous les attributs du fichier dbf sont
convertis en UTF8 à partir de l’encodage spécifié. La sortie SQL résultante contiendra une commande SET CLIENT_ENCODING
to UTF8, afin que le backend puisse reconvertir de UTF8 à n’importe quel encodage que la base de données est configurée
pour utiliser en interne.
-N <policy> Politique de gestion des géométries NULL (insert*, skip, abort)
Manuel PostGIS 3.4.0dev 52 / 870
-n -n Importer uniquement le fichier DBF. Si vos données n’ont pas de fichier de forme correspondant, il passera automatique-
ment à ce mode et ne chargera que le fichier DBF. Cette option n’est donc nécessaire que si vous disposez d’un fichier de
forme complet et que vous ne voulez que les données d’attributs et pas de géométrie.
-G Utiliser le type geography au lieu de geometry (nécessite des données lon/lat) dans WGS84 long lat (SRID=4326)
-T <tablespace> Spécifiez le tablespace pour la nouvelle table. Les index utiliseront toujours le tablespace par défaut à moins
que le paramètre -X ne soit également utilisé. La documentation de PostgreSQL contient une bonne description de
l’utilisation des tablespaces personnalisés.
-X <tablespace> Spécifier le tablespace pour les index de la nouvelle table. Ceci s’applique à l’index de clé primaire et à l’index
spatial GIST si -I est également utilisé.
-Z Lorsqu’il est utilisé, cet indicateur empêche la génération des instructions ANALYZE. Sans l’option -Z (comportement par
défaut), les instructions ANALYZE seront générées.
Un exemple de session utilisant le chargeur pour créer un fichier d’entrée et le charger peut ressembler à ceci :
# shp2pgsql -c -D -s 4269 -i -I shaperoads.shp myschema.roadstable > roads.sql
# psql -d roadsdb -f roads.sql
Une conversion et un chargement peuvent être effectués en une seule étape à l’aide de pipes UNIX :
# shp2pgsql shaperoads.shp myschema.roadstable | psql -d roadsdb
Les données spatiales peuvent être extraites de la base de données à l’aide de SQL ou de Shapefile dumper. La section sur SQL
présente certaines des fonctions disponibles pour effectuer des comparaisons et des requêtes sur les tables spatiales.
La manière la plus simple d’extraire des données spatiales de la base de données consiste à utiliser une requête SQL SELECT
pour définir l’ensemble de données à extraire et à transférer les colonnes résultantes dans un fichier texte analysable :
db=# SELECT road_id, ST_AsText(road_geom) AS geom, road_name FROM roads;
Il peut arriver qu’une restriction soit nécessaire pour réduire le nombre d’enregistrements renvoyés. Dans le cas de restrictions
basées sur des attributs, utilisez la même syntaxe SQL que pour une table non spatiale. Dans le cas de restrictions spatiales, les
fonctions suivantes sont utiles :
Vous pouvez ensuite utiliser ces opérateurs dans des requêtes. Notez que lorsque vous spécifiez des géométries et des box
sur la ligne de commande SQL, vous devez explicitement transformer les représentations de chaînes de caractères en fonction
géométrique. Le 312 est un système de référence spatiale fictif qui correspond à nos données. Ainsi, par exemple, le 312 est un
système de référence spatiale fictif qui correspond à nos données :
SELECT road_id, road_name
FROM roads
WHERE roads_geom='SRID=312;LINESTRING(191232 243118,191108 243242)'::geometry;
La requête ci-dessus renverrait le seul enregistrement de la table "ROADS_GEOM" dont la géométrie est égale à cette valeur.
Vérifier si certaines routes passent dans la zone définie par un polygone :
SELECT road_id, road_name
FROM roads
WHERE ST_Intersects(roads_geom, 'SRID=312;POLYGON((...))');
La requête spatiale la plus courante sera probablement une requête "basée sur un cadre", utilisée par les logiciels clients, tels que
les navigateurs de données et les cartographes web, pour saisir un "cadre de carte" d’une valeur de données pour l’affichage.
Lorsque vous utilisez l’opérateur "&&", vous pouvez spécifier soit une BOX3D comme élément de comparaison, soit une GE-
OMETRY. Toutefois, lorsque vous spécifiez une GEOMETRY, c’est sa boîte de délimitation qui sera utilisée pour la comparaison.
En utilisant un objet "BOX3D" pour le cadre, une telle requête se présente comme suit :
SELECT ST_AsText(roads_geom) AS geom
FROM roads
WHERE
roads_geom && ST_MakeEnvelope(191232, 243117,191232, 243119,312);
Le table dumper pgsql2shp se connecte à la base de données et convertit une table (éventuellement définie par une requête)
en un fichier shape. La syntaxe de base est la suivante :
pgsql2shp [<options>] <database> [<schema>.]<table>
Les index spatiaux permettent d’utiliser une base de données spatiales pour de grands ensembles de données. Sans indexation,
la recherche de caractéristiques nécessite un balayage séquentiel de chaque enregistrement de la base de données. L’indexation
accélère la recherche en organisant les données dans une structure qui peut être rapidement parcourue pour trouver les enreg-
istrements correspondants.
La méthode d’indexation B-tree couramment utilisée pour les données d’attributs n’est pas très utile pour les données spatiales,
car elle ne permet de stocker et d’interroger les données que dans une seule dimension. Les données telles que la géométrie (qui
a 2 dimensions ou plus) requièrent une méthode d’indexation qui supporte les requêtes sur toutes les dimensions des données.
L’un des principaux avantages de PostgreSQL pour le traitement des données spatiales est qu’il offre plusieurs types de méthodes
d’indexation qui fonctionnent bien pour les données multidimensionnelles : GiST, BRIN et SP-GiST.
• Les index GiST (Generalized Search Tree) décomposent les données en "choses à côté", "choses qui se chevauchent", "choses
qui sont à l’intérieur" et peuvent être utilisés sur un large éventail de types de données, y compris les données SIG. PostGIS
utilise un index R-Tree implémenté au-dessus de GiST pour indexer les données spatiales. GiST est la méthode d’indexation
spatiale la plus couramment utilisée et la plus polyvalente, et offre de très bonnes performances en matière de requêtes.
• Les index BRIN (Block Range Index) fonctionnent en résumant l’étendue spatiale des plages d’enregistrements de la table.
La recherche s’effectue par le biais d’un balayage des plages. L’index BRIN n’est approprié que pour certains types de données
(triées dans l’espace, avec des mises à jour peu fréquentes ou inexistantes). Mais il permet une création d’index beaucoup plus
rapide et une taille d’index beaucoup plus petite.
• SP-GiST (Space-Partitioned Generalized Search Tree) est une méthode d’indexation générique qui prend en charge les
arbres de recherche partitionnés tels que les arbres quadratiques, les arbres k-d et les arbres radix (tries).
Les index spatiaux ne stockent que la boîte de délimitation des géométries. Les requêtes spatiales utilisent l’index comme filtre
primaire pour déterminer rapidement un ensemble de géométries correspondant potentiellement à la condition de la requête. La
plupart des requêtes spatiales nécessitent un filtre secondaire qui utilise une fonction de prédicat spatial pour tester une condition
spatiale plus spécifique. Pour plus d’informations sur les requêtes avec des prédicats spatiaux, voir Section 5.2.
Voir également la section de l’atelier PostGIS sur les index spatiaux et le manuel de PostgreSQL.
GiST signifie "Generalized Search Tree" (arbre de recherche généralisé) et constitue une forme générique d’indexation pour
les données multidimensionnelles. PostGIS utilise un index R-Tree implémenté au-dessus de GiST pour indexer les données
spatiales. GiST est la méthode d’indexation spatiale la plus couramment utilisée et la plus polyvalente, et offre de très bonnes
performances en matière de requêtes. D’autres implémentations de GiST sont utilisées pour accélérer les recherches sur toutes
sortes de structures de données irrégulières (tableaux d’entiers, données spectrales, etc.) qui ne se prêtent pas à l’indexation
B-Tree normale. Pour plus d’informations, voir le manuel PostgreSQL.
Dès qu’une table de données spatiales dépasse quelques milliers de lignes, vous devez créer un index pour accélérer les recherches
spatiales dans les données (sauf si toutes vos recherches sont basées sur des attributs, auquel cas vous devez créer un index normal
sur les champs d’attributs).
La syntaxe pour construire un index GiST sur une colonne "geometry" est la suivante :
CREATE INDEX [indexname] ON [tablename] USING GIST ( [geometryfield] );
La syntaxe ci-dessus permet toujours de créer un index 2D. Pour obtenir un index à n dimensions pour le type de géométrie, vous
pouvez en créer un à l’aide de cette syntaxe :
CREATE INDEX [indexname] ON [tablename] USING GIST ([geometryfield] gist_geometry_ops_nd);
La construction d’un index spatial est un exercice de calcul intensif. Il bloque également l’accès en écriture à votre table pendant
le temps de sa création, donc sur un système de production, vous voudrez peut-être le faire d’une manière plus lente, en tenant
compte de la notion de CONCURRENCE :
Manuel PostGIS 3.4.0dev 55 / 870
Après avoir construit un index, il est parfois utile de forcer PostgreSQL à collecter les statistiques de la table, qui sont utilisées
pour optimiser les plans de requête :
VACUUM ANALYZE [table_name] [(column_name)];
BRIN signifie "Block Range Index". C’est une méthode d’indexation générale introduite dans PostgreSQL 9.5. BRIN est une
méthode d’indexation lossy, ce qui signifie qu’une vérification secondaire est nécessaire pour confirmer qu’un enregistrement
correspond à une condition de recherche donnée (ce qui est le cas pour tous les index spatiaux fournis). Elle permet une création
d’index beaucoup plus rapide et une taille d’index beaucoup plus petite, avec des performances de lecture raisonnables. Son
objectif principal est de permettre l’indexation de très grandes tables sur des colonnes qui ont une corrélation avec leur emplace-
ment physique dans la table. Outre l’indexation spatiale, BRIN peut accélérer les recherches sur divers types de structures de
données d’attributs (entiers, tableaux, etc.). Pour plus d’informations, voir le Manuel de PostgreSQL.
Dès qu’une table spatiale dépasse quelques milliers de lignes, vous voudrez construire un index pour accélérer les recherches
spatiales dans les données. Les index GiST sont très performants tant que leur taille ne dépasse pas la quantité de mémoire vive
disponible pour la base de données, et tant que vous pouvez vous permettre la taille de stockage de l’index et le coût de la mise à
jour de l’index en écriture. Sinon, pour les très grandes tables, l’index BRIN peut être considéré comme une alternative.
Un index BRIN stocke la boîte englobant toutes les géométries contenues dans les lignes d’un ensemble contigu de blocs de table,
appelé plage de blocs. Lors de l’exécution d’une requête à l’aide de l’index, les plages de blocs sont examinées pour trouver
celles qui recoupent l’étendue de la requête. Cette méthode n’est efficace que si les données sont physiquement ordonnées de
manière à ce que les zones de délimitation des plages de blocs se chevauchent le moins possible (et, dans l’idéal, s’excluent
mutuellement). L’index qui en résulte est de très petite taille, mais il est généralement moins performant en lecture qu’un index
GiST sur les mêmes données.
La construction d’un index BRIN est beaucoup moins gourmande en ressources CPU que la construction d’un index GiST. Il
est courant de constater qu’un index BRIN est dix fois plus rapide à construire qu’un index GiST pour les mêmes données. Et
comme un index BRIN ne stocke qu’une seule boîte englobante pour chaque plage de blocs de table, il est courant d’utiliser
jusqu’à mille fois moins d’espace disque qu’un index GiST.
Vous pouvez choisir le nombre de blocs à résumer dans une plage. Si vous diminuez ce nombre, l’index sera plus volumineux
mais offrira probablement de meilleures performances.
Pour que le BRIN soit efficace, les données de la table doivent être stockées dans un ordre physique qui minimise le chevauche-
ment de l’étendue du bloc. Il se peut que les données soient déjà triées de manière appropriée (par exemple, si elles sont chargées
à partir d’un autre jeu de données déjà trié dans l’ordre spatial). Dans le cas contraire, il est possible de trier les données en
fonction d’une clé spatiale unidimensionnelle. Une façon de procéder consiste à créer une nouvelle table triée par les valeurs
géométriques (qui, dans les versions récentes de PostGIS, utilisent un classement efficace par courbe de Hilbert) :
CREATE TABLE table_sorted AS
SELECT * FROM table ORDER BY geom;
Il est également possible de trier les données en place en utilisant un GeoHash comme index (temporaire) et en effectuant un
regroupement sur cet index :
CREATE INDEX idx_temp_geohash ON table
USING btree (ST_GeoHash( ST_Transform( geom, 4326 ), 20));
CLUSTER table USING idx_temp_geohash;
La syntaxe pour construire un index BRIN sur une colonne geometry est la suivante :
CREATE INDEX [indexname] ON [tablename] USING BRIN ( [geome_col] );
La syntaxe ci-dessus permet de créer un index en 2D. Pour construire un index à trois dimensions, utilisez la syntaxe suivante :
Manuel PostGIS 3.4.0dev 56 / 870
Les commandes ci-dessus utilisent le nombre par défaut de blocs dans une plage, qui est de 128. Pour spécifier le nombre de
blocs à résumer dans une plage, utilisez la syntaxe suivante
CREATE INDEX [indexname] ON [tablename]
USING BRIN ( [geome_col] ) WITH (pages_per_range = [number]);
Gardez à l’esprit qu’un index BRIN ne stocke qu’une entrée d’index pour un grand nombre de lignes. Si votre table stocke des
géométries avec un nombre variable de dimensions, il est probable que l’index qui en résultera sera peu performant. Vous pouvez
éviter cette pénalité de performance en choisissant la classe d’opérateur avec le plus petit nombre de dimensions des géométries
stockées
Le type de données geography est pris en charge pour l’indexation BRIN. La syntaxe pour construire un index BRIN sur une
colonne géographique est la suivante :
CREATE INDEX [indexname] ON [tablename] USING BRIN ( [geog_col] );
La syntaxe ci-dessus permet de créer un index 2D pour les objets géospatiaux sur le sphéroïde.
Actuellement, seul le "support d’inclusion" est fourni, ce qui signifie que seuls les opérateurs &&, ~ et @ peuvent être utilisés
pour les cas 2D (à la fois pour geometry et geography), et seulement l’opérateur &&& pour les géométries 3D. Il n’y a
actuellement pas de support pour les recherches kNN.
Une différence importante entre BRIN et les autres types d’index est que la base de données ne maintient pas l’index de manière
dynamique. Les modifications apportées aux données spatiales de la table sont simplement ajoutées à la fin de l’index. Cela
entraîne une dégradation des performances de recherche de l’index au fil du temps. L’index peut être mis à jour en effectuant
un VACUUM, ou en utilisant une fonction spéciale brin_summarize_new_values(regclass). C’est la raison pour
laquelle BRIN peut être plus approprié pour les données qui sont en lecture seule ou qui ne changent que rarement. Pour plus
d’informations, consultez le manuel.
En résumé, l’utilisation de BRIN pour les données spatiales :
• Le temps de construction de l’index est très rapide et la taille de l’index est très réduite.
• Le temps d’interrogation de l’index est plus lent que celui de GiST, mais reste très acceptable.
• Nécessite que les données du tableau soient triées dans un ordre spatial.
• Nécessite une maintenance manuelle de l’index.
• Plus approprié pour les tables de très grande taille, avec peu ou pas de chevauchement (par exemple des points), qui sont
statiques ou qui changent peu souvent.
• Plus efficace pour les requêtes qui renvoient un nombre relativement important d’enregistrements de données.
SP-GiST signifie "Space-Partitioned Generalized Search Tree" et est une forme générique d’indexation pour les types de données
multidimensionnelles qui prend en charge les arbres de recherche partitionnés, tels que les arbres quadratiques, les arbres k-d et
les arbres radix (tries). La caractéristique commune de ces structures de données est qu’elles divisent de manière répétée l’espace
de recherche en partitions qui ne sont pas nécessairement de taille égale. Outre l’indexation spatiale, SP-GiST est utilisé pour
accélérer les recherches sur de nombreux types de données, telles que le routage téléphonique, le routage ip, la recherche de
substrats, etc. Pour plus d’informations, voir le manuel PostgreSQL.
Manuel PostGIS 3.4.0dev 57 / 870
Comme pour les index GiST, les index SP-GiST sont avec perte, dans le sens où ils stockent la boîte englobante qui entoure les
objets spatiaux. Les index SP-GiST peuvent être considérés comme une alternative aux index GiST.
Lorsqu’une table de données SIG dépasse quelques milliers de lignes, un index SP-GiST peut être utilisé pour accélérer les
recherches spatiales dans les données. La syntaxe pour construire un index SP-GiST sur une colonne "géométrie" est la suivante
:
CREATE INDEX [indexname] ON [tablename] USING SPGIST ( [geometryfield] );
La syntaxe ci-dessus permet de créer un index bidimensionnel. Un index tridimensionnel pour le type de géométrie peut être créé
à l’aide de la classe d’opérateurs 3D :
CREATE INDEX [indexname] ON [tablename] USING SPGIST ([geometryfield] ←-
spgist_geometry_ops_3d);
La création d’un index spatial est une opération très gourmande en ressources informatiques. Elle bloque également l’accès en
écriture à votre table pendant la durée de la création, donc sur un système de production, vous voudrez peut-être le faire d’une
manière plus lente, en tenant compte de la notion de CONCURRENCE :
CREATE INDEX CONCURRENTLY [indexname] ON [tablename] USING SPGIST ( [geometryfield] );
Après avoir construit un index, il est parfois utile de forcer PostgreSQL à collecter les statistiques de la table, qui sont utilisées
pour optimiser les plans de requête :
VACUUM ANALYZE [table_name] [(column_name)];
Un index SP-GiST peut accélérer les requêtes impliquant les opérateurs suivants :
• <<, &<, &>, >>, <<|, &<|, |&>, |>>, &&, @>, <@, et ~=, pour les index à 2 dimensions,
• &/&, ~==, @>>, et <<@, pour les index à 3 dimensions.
Normalement, les index accélèrent de manière invisible l’accès aux données : une fois qu’un index est construit, le planificateur
de requêtes de PostgreSQL décide automatiquement quand l’utiliser pour améliorer les performances de la requête. Mais dans
certaines situations, le planificateur ne choisit pas d’utiliser les index existants, et les requêtes finissent par utiliser des balayages
séquentiels lents au lieu d’un index spatial.
Si vous constatez que vos index spatiaux ne sont pas utilisés, il y a plusieurs choses que vous pouvez faire :
• Examinez le plan de requête et vérifiez que votre requête calcule effectivement ce dont vous avez besoin. Un JOIN erroné,
oublié ou vers la mauvaise table, peut récupérer plusieurs fois des enregistrements de la table de manière inattendue. Pour
obtenir le plan de la requête, exécutez avec EXPLAIN devant la requête.
• Assurez-vous que des statistiques sont collectées sur le nombre et la distribution des valeurs dans une table, afin de fournir
au planificateur de requêtes de meilleures informations pour prendre des décisions concernant l’utilisation de l’index. La
VACUUM ANALYZE calculera les deux.
Vous devriez de toute façon vacuum régulièrement vos bases de données. De nombreux administrateurs de bases de données
PostgreSQL exécutent VACUUM en tant que tâche cron en dehors des heures de pointe sur une base régulière.
• Si vacuum ne suffit pas, vous pouvez temporairement forcer le planificateur à utiliser les informations d’index en utilisant
la commande SET ENABLE_SEQSCAN TO OFF;. De cette façon, vous pouvez vérifier si le planificateur est capable de
générer un plan de requête accéléré par l’index pour votre requête. Vous ne devez utiliser cette commande qu’à des fins de
débogage ; en règle générale, le planificateur sait mieux que vous quand utiliser les index. Une fois que vous avez exécuté
votre requête, n’oubliez pas de lancer la commande SET ENABLE_SEQSCAN TO ON; afin que le planificateur fonctionne
normalement pour les autres requêtes.
Manuel PostGIS 3.4.0dev 58 / 870
• Si SET ENABLE_SEQSCAN TO OFF; aide votre requête à s’exécuter plus rapidement, votre Postgres n’est probablement
pas adapté à votre matériel. Si vous trouvez que le planificateur se trompe sur le coût des balayages séquentiels par rapport
aux balayages d’index, essayez de réduire la valeur de RANDOM_PAGE_COST dans postgresql.conf, ou utilisez SET
RANDOM_PAGE_COST TO 1.1;. La valeur par défaut de RANDOM_PAGE_COST est 4.0. Essayez de la fixer à 1.1 (pour
les disques SSD) ou à 2.0 (pour les disques magnétiques rapides). En diminuant la valeur, le planificateur est plus enclin à
utiliser les balayages d’index.
• Si la SET ENABLE_SEQSCAN TO OFF; n’aide pas votre requête, il se peut qu’elle utilise une construction SQL que le
planificateur Postgres n’est pas encore en mesure d’optimiser. Il peut être possible de réécrire la requête de manière à ce que
le planificateur soit en mesure de la traiter. Par exemple, une sous-requête avec un SELECT en ligne peut ne pas produire un
plan efficace, mais peut être réécrite en utilisant un JOIN LATERAL.
Pour plus d’informations, voir la section du manuel Postgres sur Query Planning.
Manuel PostGIS 3.4.0dev 59 / 870
Chapter 5
Requêtes spatiales
La raison d’être des bases de données spatiales est de réaliser à l’intérieur de la base de données des requêtes qui normalement
nécessiteraient des fonctionnalités d’un SIG Desktop. Utiliser PostGIS requiert en effet la connaissance de quelles fonctions
spatiales sont disponibles, comment les utiliser dans une requête, et de s’assurer de la mise en place adéquate des index, pour une
bonne performance.
Les relations spatiales indiquent comment deux géométries interagissent l’une avec l’autre. Elles constituent une fonctionnalité
fondamentale pour effectuer des requêtes sur des géométries.
Selon le OpenGIS Simple Features Implementation Specification for SQL, "l’approche de base pour comparer deux géométries
consiste à effectuer des tests par paire des intersections entre les intérieurs, les limites et les extérieurs des deux géométries et à
classer la relation entre les deux géométries sur la base des entrées de la matrice "intersection" résultante".
Dans la théorie de la topologie des ensembles de points, les points d’une géométrie intégrée dans un espace à deux dimensions
sont classés en trois ensembles :
Limites
La limite d’une géométrie est l’ensemble des géométries de la dimension immédiatement inférieure. Pour les POINT,
qui ont une dimension de 0, la limite est l’ensemble vide. La limite d’une LINESTRING est constituée par ses deux
extrémités. Pour les POLYGON, la limite est le réseau de lignes des anneaux extérieur et intérieur.
Intérieur
L’intérieur d’une géométrie est constitué des points de la géométrie qui ne se trouvent pas dans la limite. Pour les POINT,
l’intérieur est le point lui-même. L’intérieur d’une LINESTRING est l’ensemble des points situés entre les extrémités.
Pour les POLYGON, l’intérieur est la surface aréale à l’intérieur du polygone.
Extérieur
L’extérieur d’une géométrie est le reste de l’espace dans lequel la géométrie est intégrée ; en d’autres termes, tous les points
qui ne se trouvent pas à l’intérieur ou sur la limite de la géométrie. Il s’agit d’une surface non fermée à 2 dimensions.
Le Dimensionally Extended 9-Intersection Model (DE-9IM) décrit la relation spatiale entre deux géométries en spécifiant les
dimensions des 9 intersections entre les ensembles ci-dessus pour chaque géométrie. Les dimensions des intersections peuvent
être représentées formellement dans une matrice d’intersections de 3x3.
Pour une géométrie g, les Limites, Intérieures, et Extérieures sont désignés par la notation I(g), B(g), et E(g). En outre, dim(s)
désigne la dimension d’un ensemble s dont le domaine est {0,1,2,F} :
Manuel PostGIS 3.4.0dev 60 / 870
• 0 => point
• 1 => ligne
• 2 => area
• F => ensemble vide
Visuellement, pour deux géométries polygonales qui se chevauchent, cela ressemble à ce qui suit :
Manuel PostGIS 3.4.0dev 61 / 870
Intérieur
Limite
Extérieur
En lisant de gauche à droite et de haut en bas, la matrice d’intersection est représentée par la chaîne de texte "212101212".
Pour plus d’informations, voir :
• OpenGIS Simple Features Implementation Specification for SQL (version 1.1, section 2.1.13.2)
• Wikipedia : Dimensionally Extended Nine-Intersection Model (DE-9IM)
• GeoTools : Théorie des ensembles de points et matrice DE-9IM
Pour faciliter la détermination des relations spatiales communes, l’OGC SFS définit un ensemble de prédicats de relations
spatiales. PostGIS fournit ces prédicats sous la forme des fonctions ST_Contains, ST_Crosses, ST_Disjoint, ST_Equals,
Manuel PostGIS 3.4.0dev 62 / 870
ST_Intersects, ST_Overlaps, ST_Touches, ST_Within. Il définit également les prédicats de relation non standard ST_Covers,
ST_CoveredBy, et ST_ContainsProperly.
Les prédicats spatiaux sont généralement utilisés comme conditions dans les clauses SQL WHERE ou JOIN. Les prédicats
spatiaux nommés utilisent automatiquement un index spatial s’il existe, de sorte qu’il n’est pas nécessaire d’utiliser également
l’opérateur de boîte de délimitation &&. Par exemple :
SELECT city.name, state.name, city.geom
FROM city JOIN state ON ST_Intersects(city.geom, state.geom);
Dans certains cas, les relations spatiales nommées sont insuffisantes pour fournir une condition de filtrage spatial souhaitée.
Prenons l’exemple d’un ensemble de données linéaires représentant un réseau routier. Il peut être nécessaire d’identifier
tous les segments de route qui se croisent, non pas en un point, mais en une ligne (peut-être pour valider une règle
commerciale). Dans ce cas, ST_Crosses ne fournit pas le filtre spatial nécessaire, puisque pour les caractéristiques
linéaires, il renvoie true uniquement lorsqu’elles se croisent en un point.
Une solution en deux étapes consisterait à calculer d’abord l’intersection réelle (ST_Intersection) des paires de lignes
routières qui se croisent dans l’espace (ST_Intersects), puis vérifier si le ST_GeometryType de l’intersection est
"LINESTRING" (en traitant correctement les cas qui renvoient des GEOMETRYCOLLECTIONs de [MULTI]POINTs,
[MULTI]LINESTRINGs, etc. ).
Il est évident qu’une solution plus simple et plus rapide est souhaitable.
Manuel PostGIS 3.4.0dev 63 / 870
Un deuxième exemple est la localisation des quais qui coupent les limites d’un lac sur une ligne et dont l’une des
extrémités se trouve sur le rivage. En d’autres termes, lorsqu’un quai est situé à l’intérieur d’un lac mais n’est pas
complètement contenu par celui-ci, qu’il coupe la limite d’un lac sur une ligne et que l’une des extrémités du quai se
trouve à l’intérieur ou sur la limite du lac. Il est possible d’utiliser une combinaison de prédicats spatiaux pour trouver les
caractéristiques requises :
• ST_Contains(lake, wharf) = TRUE
• ST_ContainsProperly(lake, wharf) = FALSE
Ces exigences peuvent être satisfaites en calculant la matrice d’intersection DE-9IM complète. PostGIS fournit la fonction
ST_Relate pour ce faire :
SELECT ST_Relate( 'LINESTRING (1 1, 5 5)',
'POLYGON ((3 3, 3 7, 7 7, 7 3, 3 3))' );
st_relate
-----------
1010F0212
Pour tester une relation spatiale particulière, un modèle de matrice d’intersection est utilisé. Il s’agit de la représentation
matricielle augmentée des symboles supplémentaires {T,*} :
• T => la dimension d’intersection est non vide ; c’est-à-dire qu’elle se trouve dans {0,1,2}
• * => indifférent
Les modèles de matrice d’intersection permettent d’évaluer des relations spatiales spécifiques de manière plus succincte. Les
fonctions ST_Relate et ST_RelateMatch peuvent être utilisées pour tester les modèles de matrice d’intersection. Pour le premier
exemple ci-dessus, le modèle de matrice d’intersection spécifiant deux lignes se croisant dans une ligne est ’1*1***1**’ :
-- Find road segments that intersect in a line
SELECT a.id
FROM roads a, roads b
WHERE a.id != b.id
Manuel PostGIS 3.4.0dev 64 / 870
Pour le deuxième exemple, le modèle de matrice d’intersection spécifiant une ligne située en partie à l’intérieur et en partie à
l’extérieur d’un polygone est "102101FF2" :
-- Find wharves partly on a lake's shoreline
SELECT a.lake_id, b.wharf_id
FROM lakes a, wharfs b
WHERE a.geom && b.geom
AND ST_Relate(a.geom, b.geom, '102101FF2');
Lors de la construction de requêtes utilisant des conditions spatiales, il est important, pour de meilleures performances, de
s’assurer qu’un index spatial est utilisé, s’il existe (voir Section 4.9). Pour ce faire, un opérateur spatial ou une fonction sensible
à l’index doit être utilisé dans une clause WHERE ou ON de la requête.
Les opérateurs spatiaux comprennent les opérateurs de boîte de délimitation (dont le plus couramment utilisé est && ; voir
Section 7.10.1 pour la liste complète) et les opérateurs de distance utilisés dans les requêtes sur les plus proches voisins (le plus
courant étant <-> ; voir Section 7.10.2 pour la liste complète).
Les fonctions tenant compte de l’index ajoutent automatiquement un opérateur de boîte de délimitation à la condition spatiale. Les
fonctions tenant compte de l’index comprennent les prédicats de relation spatiale nommés ST_Contains, ST_ContainsProperly,
ST_CoveredBy, ST_Covers, ST_Crosses, ST_Intersects, ST_Overlaps, ST_Touches, ST_Within, ST_Within, et ST_3DIntersects,
et les prédicats de distance ST_DWithin, ST_DFullyWithin, ST_3DDFullyWithin, et ST_3DDWithin . )
Les fonctions telles que ST_Distance n’utilisent pas les index pour optimiser leur fonctionnement. Par exemple, la requête
suivante serait assez lente sur une grande table :
SELECT geom
FROM geom_table
WHERE ST_Distance( geom, 'SRID=312;POINT(100000 200000)' ) < 100
Cette requête sélectionne toutes les géométries de la geom_table qui se trouvent à moins de 100 unités du point (100000,
200000). Elle sera lente car elle calcule la distance entre chaque point du tableau et le point spécifié, c’est-à-dire qu’un calcul
ST_Distance() est effectué pour chaque ligne du tableau.
Le nombre de lignes traitées peut être considérablement réduit en utilisant la fonction d’indexation ST_DWithin :
SELECT geom
FROM geom_table
WHERE ST_DWithin( geom, 'SRID=312;POINT(100000 200000)', 100 )
Cette requête sélectionne les mêmes géométries, mais de manière plus efficace. Ceci est possible en ST_DWithin() utilisant
l’opérateur && en interne sur une boîte de délimitation élargie de la géométrie de la requête. S’il existe un index spatial sur geom,
le planificateur de requêtes reconnaîtra qu’il peut utiliser l’index pour réduire le nombre de lignes analysées avant de calculer la
distance. L’index spatial permet d’extraire uniquement les enregistrements dont les boîtes de délimitation chevauchent l’étendue
élargie et qui, par conséquent, pourraient se trouver à l’intérieur de la distance requise. La distance réelle est ensuite calculée
pour confirmer l’inclusion de l’enregistrement dans l’ensemble des résultats.
Pour plus d’informations et d’exemples, voir l’ atelier de travail PostGIS.
Les exemples de cette section utilisent une table de routes linéaires et une table de limites de communes polygonales. La
définition de la table bc_roads est la suivante :
Manuel PostGIS 3.4.0dev 65 / 870
km_roads
------------------
70842.1243039643
hectares
------------------
32657.9103824927
name | hectares
---------------+-----------------
TUMBLER RIDGE | 155020.02556131
Notez que pour répondre à cette question, nous devons calculer la surface de chaque polygone. Si nous faisions cela sou-
vent, il serait logique d’ajouter une colonne de surface à la table qui pourrait être indexée pour des raisons de performance.
En ordonnant les résultats dans une direction décroissante et en utilisant la commande "LIMIT" de PostgreSQL, nous
pouvons facilement sélectionner la plus grande valeur sans utiliser une fonction d’agrégation comme MAX().
Manuel PostGIS 3.4.0dev 66 / 870
4. Quelle est la longueur des routes entièrement comprises dans chaque municipalité ?
Il s’agit d’un exemple de "jointure spatiale", qui rassemble les données de deux tables (avec une jointure) en utilisant une
interaction spatiale ("contenu") comme condition de jointure (plutôt que l’approche relationnelle habituelle de jointure sur
une clé commune) :
SELECT
m.name,
sum(ST_Length(r.geom))/1000 as roads_km
FROM bc_roads AS r
JOIN bc_municipality AS m
ON ST_Contains(m.geom, r.geom)
GROUP BY m.name
ORDER BY roads_km;
name | roads_km
----------------------------+------------------
SURREY | 1539.47553551242
VANCOUVER | 1450.33093486576
LANGLEY DISTRICT | 833.793392535662
BURNABY | 773.769091404338
PRINCE GEORGE | 694.37554369147
...
Cette requête prend un certain temps, car chaque route du tableau est résumée dans le résultat final (environ 250 000
routes pour le tableau de l’exemple). Pour des ensembles de données plus petits (plusieurs milliers d’enregistrements sur
plusieurs centaines), la réponse peut être très rapide.
5. Créez un nouveau tableau avec toutes les routes de la ville de Prince George.
Il s’agit d’un exemple de "superposition", qui prend en compte deux tableaux et produit un nouveau tableau composé de
résultats coupés dans l’espace. Contrairement à la "jointure spatiale" présentée ci-dessus, cette requête crée de nouvelles
géométries. Une superposition est comme une jointure spatiale turbocompressée, et est utile pour des travaux d’analyse
plus précis :
CREATE TABLE pg_roads as
SELECT
ST_Intersection(r.geom, m.geom) AS intersection_geom,
ST_Length(r.geom) AS rd_orig_length,
r.*
FROM bc_roads AS r
JOIN bc_municipality AS m
ON ST_Intersects(r.geom, m.geom)
WHERE
m.name = 'PRINCE GEORGE';
kilometers
------------------
4.89151904172838
Chapter 6
Les versions de PostgreSQL actuelles (y compris 8.0) souffrent d’une faiblesse optimiseur de requête relative les tables TOAST.
Tables TOAST sont une sorte de «salle de l’extension" utilisé pour stocker de grandes valeurs (dans le sens de la taille des
données) qui ne rentrent pas dans les pages de données normales (comme de longs textes, images ou des géométries complexes
avec beaucoup de sommets), voir Documentation PostgreSQL pour TOAST pour plus d’informations).
Le problème apparaît s’il vous arrive d’avoir une table avec d’assez grandes géométries, mais pas beaucoup de lignes d’entre
elles (comme un tableau contenant les frontières de tous les pays européens en haute résolution). Ensuite, le tableau lui-même
est petit, mais il utilise beaucoup d’espace TOAST. Dans notre exemple, le cas, la table elle-même avait environ 80 lignes et
seulement 3 pages de données utilisées, mais la table TOAST 8225 pages utilisé.
Maintenant émettre une requête en utilisant l’opérateur de géométrie && pour rechercher une boîte englobante qui correspond
que très peu de ces lignes. Maintenant l’optimiseur de requêtes voit que la table n’a que 3 pages et 80 lignes. Il estime qu’une
analyse séquentielle sur une telle petite table est beaucoup plus rapide que d’utiliser un index. Et alors il décide d’ignorer l’index
GIST. Habituellement, cette estimation est correcte. Mais dans notre cas, l’opérateur && doit aller chercher chaque géométrie à
partir du disque pour comparer les boîtes englobantes, et par conséquent la lecture de toutes les pages TOAST également.
Pour voir si vous souffrez de ce problème, utilisez la commande postgresql "EXPLAIN ANALYZE". Pour plus d’informations et
les détails techniques, vous pouvez lire le fil de discussion sur la liste de diffusion sur les performances de PostgreSQL :
http ://archives.postgresql.org/pgsql-performance/2005-02/msg00030.php
et un fil d’actualités plus récent sur PostGIS https://lists.osgeo.org/pipermail/postgis-devel/2017-June/026209.html
Les personnes de PostgreSQL essayent de résoudre ce problème en faisant l’estimation de la requête TOAST-courant. Pour
l’instant, voici deux solutions :
La première solution consiste à forcer le planificateur de requêtes à utiliser l’index. Envoyer "SET enable_seqscan TO off;"
au serveur avant d’émettre la requête. Cela force le planificateur de requêtes à éviter balayages séquentiels lorsque cela est
possible. Donc, il utilise l’index GIST comme d’habitude. Mais cet indicateur doit être fixé à chaque connexion, et il provoque le
planificateur de requêtes à faire des erreurs d’estimation dans les autres cas, vous devrez donc faire "SET POUR enable_seqscan
sur;" après la requête.
La deuxième solution consiste à faire le balayage séquentielle aussi vite que le planificateur de requêtes pense. Ceci peut être
réalisé en créant une colonne supplémentaire qui "cache" la bbox, et contre cette correspondance. Dans notre exemple, les
commandes sont comme :
Manuel PostGIS 3.4.0dev 69 / 870
SELECT AddGeometryColumn('myschema','mytable','bbox','4326','GEOMETRY','2');
UPDATE mytable SET bbox = ST_Envelope(ST_Force2D(geom));
Modifiez maintenant votre requête pour utiliser l’opérateur && contre bbox au lieu de geom_column, comme suit :
SELECT geom_column
FROM mytable
WHERE bbox && ST_SetSRID('BOX3D(0 0,1 1)'::box3d,4326);
Bien sûr, si vous changez ou ajoutez des lignes à mytable, vous devez garder la bbox "synchro". La façon la plus transparente
pour ce faire serait des déclencheurs, mais vous pouvez également modifier votre application afin de maintenir la colonne bbox
courante ou exécuter la requête UPDATE ci-dessus après chaque modification.
Pour les tables qui sont pour la plupart en lecture seule, et où un seul index est utilisé pour la majorité des requêtes, PostgreSQL
offre la commande CLUSTER. Cette commande réorganise physiquement toutes les lignes de données dans le même ordre que
les critères de l’index, ce qui donne deux avantages de performance : d’abord, pour des analyses d’intervalle de l’index,
le nombre de recherche sur la table de données est considérablement réduit. Deuxièmement, si votre jeu de travail se concentre à
quelques petits intervalles sur les index, vous avez une mise en cache plus efficace parce que les lignes de données sont dispersées
sur moins de pages de données. (N’hésitez pas à lire la documentation de la commande CLUSTER du manuel PostgreSQL à ce
stade)
Cependant, PostgreSQL ne permet actuellement pas le clustering sur les index GIST de PostGIS car les indices GIST ignorent
les valeurs NULL, vous obtenez un message d’erreur comme :
lwgeom=# CLUSTER my_geom_index ON my_table;
ERROR: cannot cluster when index access method does not handle null values
HINT: You may be able to work around this by marking column "geom" NOT NULL.
Comme le message d’ASTUCES vous le dit, on peut contourner cette lacune en ajoutant une contrainte "not null" à la ta-
ble :
lwgeom=# ALTER TABLE my_table ALTER COLUMN geom SET not null;
ALTER TABLE
Bien sûr, cela ne fonctionnera pas si vous avez besoin, dans les faits, de valeurs NULL dans la colonne de géométrie. En outre,
vous devez utiliser la méthode ci-dessus pour ajouter la contrainte, en utilisant une contrainte CHECK comme "ALTER TABLE
blubb ADD CHECK (geometry is not null)" ne fonctionnera pas.
Il arrive parfois que vous ayez des données 3D ou 4D dans votre table, mais que vous y accédiez toujours à l’aide des fonctions
ST_AsText() ou ST_AsBinary() conformes à OpenGIS qui ne produisent que des géométries 2D. Pour ce faire, elles appellent en
interne la fonction ST_Force2D(), qui introduit une surcharge importante pour les géométries de grande taille. Pour éviter cette
surcharge, il peut être possible de pré-déposer ces dimensions supplémentaires une fois pour toutes :
UPDATE mytable SET geom = ST_Force2D(geom);
VACUUM FULL ANALYZE mytable;
Notez que si vous avez ajouté votre colonne de géométrie à l’aide AddGeometryColumn (), il y aura une contrainte sur la
dimension de la géométrie. Pour contourner vous devrez supprimer la contrainte. N’oubliez pas de mettre à jour l’entrée dans la
table geometry_columns et recréer la contrainte par la suite.
En cas de grandes tables, il peut être judicieux de diviser cette mise à jour en petites portions en restreignant l’UPDATE à une
partie de la table via une clause WHERE et votre clé primaire ou d’un autre critère, et exécutant un simple «VACUUM» ;
Manuel PostGIS 3.4.0dev 70 / 870
entre votre mises à jour. Cela réduit considérablement le besoin d’espace disque temporaire. En outre, si vous avez des données
géométriques de dimension mixte, restreindre la mise à jour en "WHERE dimension(the_geom)>2" saute la ré-écriture des
géométries qui sont déjà en 2D.
Manuel PostGIS 3.4.0dev 71 / 870
Chapter 7
Référence PostGIS
Les fonctions suivantes sont celles dont un utilisateur normal de PostGIS peut avoir besoin. Il existe d’autres fonctions nécessaires
au fonctionnement de PostGIS. Elles ne sont normalement pas destinées à un utilisateur standard.
Note
PostGIS a entamé une phase de transition concernant le nom des fonctions pour les faire correspondre à la norme
SQL-MM. La plupart des fonctions ont été renommées en utilisant le préfixe des types spatiaux (ST, pour Spatial
Type). Les anciennes fonctions, toujours disponibles, ne sont pas listées ci-après si leur équivalent est disponible. Les
fonctions non préfixées par ST, qui ne sont pas listées dans cette documentation, sont dépréciées et seront supprimées
des prochaines version de PostGIS. IL NE FAUT PLUS LES UTILISER.
7.1.1 box2d
Description
box2d est un type de données spatiales utilisé pour représenter la boîte de délimitation bidimensionnelle entourant une géométrie
ou une collection de géométries. Par exemple, la fonction d’agrégation ST_Extent renvoie un objet box2d.
La représentation contient les valeurs xmin, ymin, xmax, ymax. Ce sont les valeurs minimales et maximales des étendues
X et Y.
Les objets box2d ont une représentation textuelle qui ressemble à BOX(1 2,5 6).
Transtypages
Ce tableau énumère les casts automatiques et explicites autorisés pour ce type de données :
Voir aussi
Section 12.7
7.1.2 box3d
Description
box3d est un type de données spatiales PostGIS utilisé pour représenter la boîte de délimitation tridimensionnelle entourant une
géométrie ou une collection de géométries. Par exemple, la fonction d’agrégation ST_3DExtent renvoie un objet box3d.
La représentation contient les valeurs xmin, ymin, zmin, xmax, ymax, zmax. Il s’agit des valeurs minimales et
maximales des étendues X, Y et Z.
Les objets box3d ont une représentation textuelle qui ressemble à BOX3D(1 2 3,5 6 5).
Transtypages
Ce tableau énumère les casts automatiques et explicites autorisés pour ce type de données :
Voir aussi
Section 12.7
7.1.3 geometry
geometry — Le type représentant les caractéristiques spatiales avec des systèmes de coordonnées planaires.
Description
géométrie est un type de données spatiales fondamental de PostGIS utilisé pour représenter une caractéristique dans des
systèmes de coordonnées planes (euclidiennes).
Toutes les opérations spatiales sur la géométrie utilisent les unités du système de référence spatiale dans lequel se trouve la
géométrie.
Transtypages
Ce tableau énumère les casts automatiques et explicites autorisés pour ce type de données :
Voir aussi
7.1.4 geometry_dump
geometry_dump — Un type composite utilisé pour décrire les parties d’une géométrie complexe.
Description
• geom - une géométrie représentant un composant de la géométrie explosée. Le type de géométrie dépend de la fonction
d’origine.
• path[] - un tableau d’entiers qui définit le chemin de navigation dans la géométrie explosée vers le composant geom. Le
tableau de chemins est basé sur 1 (c’est-à-dire que path[1] est le premier élément)
Il est utilisé par la famille de fonctions ST_Dump* comme type de sortie pour exploser une géométrie complexe en ses parties
constitutives.
Voir aussi
Section 12.6
7.1.5 geography
geography — Le type représentant les entités spatiales avec des systèmes de coordonnées géodésiques (ellipsoïdales).
Description
geography est un type de données spatiales utilisé pour représenter une entité dans les systèmes de coordonnées géodésiques.
Les systèmes de coordonnées géodésiques modélisent la terre à l’aide d’un ellipsoïde.
Les opérations spatiales sur le type geography fournissent des résultats plus précis en prenant en compte le modèle ellipsoïdal.
Transtypages
Ce tableau énumère les casts automatiques et explicites autorisés pour ce type de données :
Voir aussi
7.2.1 AddGeometryColumn
Synopsis
text AddGeometryColumn(varchar table_name, varchar column_name, integer srid, varchar type, integer dimension, boolean
use_typmod=true);
text AddGeometryColumn(varchar schema_name, varchar table_name, varchar column_name, integer srid, varchar type, inte-
ger dimension, boolean use_typmod=true);
text AddGeometryColumn(varchar catalog_name, varchar schema_name, varchar table_name, varchar column_name, integer
srid, varchar type, integer dimension, boolean use_typmod=true);
Description
Ajoute une colonne géométrique à une table attributaire existante. schema_name est le nom du schéma de la table. srid est
un entier positif présent dans la table SPATIAL_REF_SYS. type est le type de géométrie en texte, par exemple ’POLYGON’
ou ’MULTILINESTRING’. Une erreur est renvoyée si le schéma n’existe pas (ou n’est pas visible dans le search_path courant)
ou si le SRID, type de géométrie ou dimension est invalide.
Note
Changement : 2.0.0 Cette fonction ne met plus à jour geometry_columns maintenant que geometry_columns
est une vue basée sur le catalogue système. Par défaut, elle ne créée plus de contraintes mais utilise le modificateur
de type de PostgreSQL. Ainsi, par exemple, créer une colonne de type POINT WGS84 est désormais équivalent
à : ALTER TABLE some_table ADD COLUMN geom geometry(Point,4326) ;
Changement : 2.0.0 Si l’ancien mécanisme basé sur les contraintes est nécessaire, utiliser le paramètre
use_typmod avec la valeur false.
Note
Changement : 2.0.0 Les vues ne peuvent plus être enregistrées dans geometry_columns. Cependant, les
vues construites à partir de tables contenant des géométries définies avec le modificateur de type et n’utilisant pas de
fonctions d’encapsulation seront enregistrées dans la vue geometry_columns car elles héritent du mécanisme des ta-
bles dont elles sont issues. Les vues utilisant des fonctions renvoyant d’autres géométries doivent être transtypées vers
des géométries avec modificateur de type pour pouvoir être correctement référencées dans la vue geometry_columns.
Cf. Section 4.6.3.
Cette méthode implémente la spécification OGC Simple Features Implementation Specification for SQL 1.1.
Exemples
Manuel PostGIS 3.4.0dev 75 / 870
-- Describing the table shows a simple table with a single "id" column.
postgis=# \d my_schema.my_spatial_table
Table "my_schema.my_spatial_table"
Column | Type | Modifiers
--------+---------+------------------------------------------------------------------------- ←-
-- Describe the table again reveals the addition of a new geometry columns.
\d my_schema.my_spatial_table
addgeometrycolumn
-------------------------------------------------------------------------
my_schema.my_spatial_table.geomcp_c SRID:4326 TYPE:CURVEPOLYGON DIMS:2
(1 row)
Table "my_schema.my_spatial_table"
Column | Type | Modifiers
----------+----------------------+-------------------------------------------------------------------
Voir aussi
7.2.2 DropGeometryColumn
Synopsis
Description
Supprime une colonne géométrique d’une table spatiale. Note : schema_name doit correspondre au champ f_table_schema
de la table geometry_columns.
Cette méthode implémente la spécification OGC Simple Features Implementation Specification for SQL 1.1.
Note
Changement : 2.0.0 Fonction assurant la rétro compatibilité. Maintenant que geometry_columns est une vue
basée sur les catalogues du système, la colonne géométrique peut être supprimée d’une table comme tout autre
colonne en utilisant ALTER TABLE
Exemples
Voir aussi
7.2.3 DropGeometryTable
Synopsis
Description
Supprime une table et toutes ces références dans geometry_columns. Note : utilise la fonction current_schema() sur les
installations PostgreSQL le supportant, si le schéma n’est pas fourni.
Note
Changement : 2.0.0 Function assurant la rétro compatibilité. Maintenant que geometry_columns est une vue
basée sur les catalogues du système, une table spatiale peut etre supprimée comme tout autre table en utilisant ALTER
TABLE
Exemples
Voir aussi
7.2.4 Find_SRID
Synopsis
Description
Renvoie le SRID entier de la colonne géométrique spécifiée en effectuant une recherche dans la table GEOMETRY_COLUMNS.
Si la colonne géométrique n’a pas été correctement ajoutée (par exemple avec la fonction AddGeometryColumn), cette fonction
ne fonctionnera pas.
Exemples
Voir aussi
ST_SRID
7.2.5 Populate_Geometry_Columns
Populate_Geometry_Columns — Assure que les colonnes géométriques sont définies avec des modificateurs de type ou qu’elles
sont soumises à des contraintes spatiales appropriées.
Synopsis
Description
S’assure que les colonnes géométriques ont des modificateurs de type ou des contraintes spatiales appropriés pour garan-
tir qu’elles sont enregistrées correctement dans la vue geometry_columns. Par défaut, convertira toutes les colonnes
géométriques sans modificateur de type en colonnes avec modificateur de type.
Pour conserver la rétro compatibilité et pour des besoins particuliers comme par exemple des tables héritées ayant des types
géométriques différents, l’ancien mécanisme est toujours supporté. Si ce mécanisme est nécessaire, le nouveau paramètre op-
tionnel doit être mis à false : use_typmod=false. Avec cette valeur, la colonne géométrique sera créée sans mod-
ificateur de type mais 3 contraintes seront définies. Cela signifie concrètement que chaque colonne géométrique de la table aura
au moins 3 contraintes :
• enforce_geotype_geom - garantit que chaque géométrie est du même type (voir GeometryType)
• enforce_srid_the_geom - s’assure que toutes les géométries sont dans la même projection (see ST_SRID)
Si un identifiant de table oid est fourni, cette fonction tente de déterminer le SRID, la dimension et le type géométrique de toutes
les colonnes géométriques de la table, ajoutant des contraintes si nécessaire. En cas de succès, une ligne est insérée dans la table
geometry_columns, sinon, une erreur est affichée indiquant le problème.
Si le oid d’une vue est fourni, comme avec un oid de table, cette fonction essaie de déterminer le srid, la dimension et le type
de toutes les géométries de la vue, en insérant les entrées appropriées dans la table geometry_columns, mais rien n’est fait
pour appliquer les contraintes.
La version sans paramètre est un raccourci pour la version avec paramètres. Elle vide puis remplit la table geometry_columns
pour chaque table ou vue spatiale de la base, ajoutant les contraintes aux tables si besoin. Retourne un résumé montrant le
nombre de colonnes géométriques identifiées dans la base et le nombre inséré dans la table geometry_columns. La version
avec paramètres renvoie juste le nombre de lignes insérées dans la table geometry_columns .
Disponibilité : 1.4.0
Changement : 2.0.0 Par défaut, utilise les modificateurs de type au lieu de contraintes de vérification pour contraindre les
types géométriques. Le comportement basé sur les contraintes peut être activé en mettant le nouveau paramètre use_typmod
à false.
Amélioration : 2.0.0 L’argument optionnel use_typmod a été introduit pour controler si les colonnes sont créés avec
des modificateurs de type ou des contraintes de vérification.
Manuel PostGIS 3.4.0dev 79 / 870
Exemples
populate_geometry_columns
--------------------------
1
\d myspatial_table
Table "public.myspatial_table"
Column | Type | Modifiers
--------+---------------------------+---------------------------------------------------------------
-- This will change the geometry columns to use constraints if they are not typmod or have ←-
constraints already.
--For this to work, there must exist data
CREATE TABLE public.myspatial_table_cs(gid serial, geom geometry);
INSERT INTO myspatial_table_cs(geom) VALUES(ST_GeomFromText('LINESTRING(1 2, 3 4)',4326) );
SELECT Populate_Geometry_Columns('public.myspatial_table_cs'::regclass, false);
populate_geometry_columns
--------------------------
1
\d myspatial_table_cs
Table "public.myspatial_table_cs"
Column | Type | Modifiers
--------+----------+------------------------------------------------------------------
gid | integer | not null default nextval('myspatial_table_cs_gid_seq'::regclass)
geom | geometry |
Check constraints:
"enforce_dims_geom" CHECK (st_ndims(geom) = 2)
"enforce_geotype_geom" CHECK (geometrytype(geom) = 'LINESTRING'::text OR geom IS NULL)
"enforce_srid_geom" CHECK (st_srid(geom) = 4326)
7.2.6 UpdateGeometrySRID
UpdateGeometrySRID — Met à jour le SRID de tous les éléments d’une colonne géométrique et les métadonnées de la table.
Synopsis
Description
Met à jour le SRID de tous les objets d’une colonne géométrique et met à jour les métadonnées de geometry_columns et la
contrainte sur le SRID. Note : utilise la fonction current_schema() sur les installations PostgreSQL le supportant, si le
Manuel PostGIS 3.4.0dev 80 / 870
Exemples
Insérer des géométries dans une table roads avec un jeu de SRID utilisant déjà le format EWKT :
COPY roads (geom) FROM STDIN;
SRID=4326;LINESTRING(0 0, 10 10)
SRID=4326;LINESTRING(10 10, 15 0)
\.
Cela va changer le srid de la table roads à 4326 quelle que soit sa valeur avant :
SELECT UpdateGeometrySRID('roads','geom',4326);
Si vous vous êtes trompé de projection (ou si vous l’avez introduite en tant qu’inconnue) dans le chargement et que vous voulez
transformer en mercator web en une seule fois, vous pouvez le faire avec DDL mais il n’y a pas de fonction de gestion PostGIS
équivalente pour le faire en une seule fois.
ALTER TABLE roads
ALTER COLUMN geom TYPE geometry(MULTILINESTRING, 3857) USING ST_Transform(ST_SetSRID(geom ←-
,4326),3857) ;
Voir aussi
7.3.1 ST_Collect
ST_Collect — Crée une géométrie GeometryCollection ou Multi à partir d’un ensemble de géométries.
Synopsis
Description
Rassemble les géométries dans une collection de géométries. Le résultat est soit un Multi*, soit une GeometryCollection, selon
que les géométries d’entrée ont des types identiques ou différents (homogènes ou hétérogènes). Les géométries d’entrée restent
inchangées dans la collection.
Variante 1: accepte géométries en entrée
Variante 2: accepte un tableau de géométries
Variante 3: fonction agrégée acceptant un ensemble de géométries.
Note
Si l’une des géométries en entrée est une collection (Multi* ou GeometryCollection), ST_Collect renvoie une Ge-
ometryCollection (puisque c’est le seul type qui peut contenir des collections imbriquées). Pour éviter cela, utilisez
ST_Dump dans une sous-requête pour développer les collections d’entrée en leurs éléments atomiques (voir l’exemple
ci-dessous).
Note
ST_Collect et ST_Union semblent similaires, mais fonctionnent en fait assez différemment. ST_Collect agrège
les géométries dans une collection sans les modifier en aucune façon. ST_Union fusionne géométriquement les
géométries lorsqu’elles se chevauchent, et divise les lignes aux intersections. Elle peut retourner des géométries
uniques lorsqu’elle dissout les frontières.
Disponibilité : 1.4.0 - ST_Collect(geomarray) a été introduit. ST_Collect a été amélioré pour gérer plus de géométries plus
rapidement.
st_astext
----------
MULTIPOINT((1 2),(-2 3))
st_asewkt
-------------------------
MULTIPOINT(1 2 3,1 2 4)
st_astext
Manuel PostGIS 3.4.0dev 82 / 870
------------------------------------------------------------------------------------
MULTICURVE(CIRCULARSTRING(220268 150415,220227 150505,220227 150406),
CIRCULARSTRING(220227 150406,2220227 150407,220227 150406))
--wkt collect --
MULTILINESTRING((1 2,3 4),(3 4,4 5))
Voir aussi
ST_Dump, ST_Union
7.3.2 ST_LineFromMultiPoint
Synopsis
Description
Exemples
--result--
LINESTRING(1 2 3,4 5 6,7 8 9)
Voir aussi
ST_AsEWKT, ST_MakeLine
7.3.3 ST_MakeEnvelope
Synopsis
geometry ST_MakeEnvelope(float xmin, float ymin, float xmax, float ymax, integer srid=unknown);
Description
Crée un polygone rectangulaire à partir des valeurs minimales et maximales de X et Y. Les valeurs entrées doivent être dans le
système de référence spatiale spécifié par le SRID. Si aucun SRID n’est spécifié, le système de référence spatiale inconnu (SRID
0) est utilisé.
Disponibilité : 1.5
Amélioré : 2.0 : La possibilité de spécifier une enveloppe sans spécifier un SRID a été introduite.
st_asewkt
-----------
POLYGON((10 10, 10 11, 11 11, 11 10, 10 10))
Voir aussi
7.3.4 ST_MakeLine
Synopsis
Description
Crée une LineString contenant les points des géométries Point, MultiPoint ou LineString. Les autres types de géométrie provo-
quent une erreur.
Variante 1: accepte géométries en entrée
Variante 2: accepte un tableau de géométries
Variante 3: fonction agrégée acceptant un ensemble de géométries. Pour garantir l’ordre des géométries d’entrée, utilisez
ORDER BY dans l’appel de fonction, ou une sous-requête avec une clause ORDER BY.
Les nœuds répétés au début des LineStrings d’entrée sont réduits à un seul point. Les points répétés dans les entrées Point et
MultiPoint ne sont pas réduits. ST_RemoveRepeatedPoints peut être utilisé pour réduire les points répétés de la LineString de
sortie.
st_astext
---------------------
LINESTRING(1 2,3 4)
st_asewkt
-------------------------
LINESTRING(1 2 3,3 4 5)
st_astext
-----------------------------
LINESTRING(0 0,1 1,2 2,3 3)
Créer une ligne à partir d’un tableau formé par une sous-requête avec ordonnancement.
SELECT ST_MakeLine( ARRAY( SELECT ST_Centroid(geom) FROM visit_locations ORDER BY ←-
visit_time) );
st_asewkt
-------------------------
LINESTRING(1 2 3,3 4 5,6 6 6)
Cet exemple interroge des séquences temporelles de points GPS à partir d’un ensemble de pistes et crée un enregistrement pour
chaque piste. Les géométries résultantes sont des LineStrings composées des points GPS dans l’ordre de leur déplacement.
L’utilisation de l’agrégat ORDER BY fournit une LineString correctement ordonnée.
SELECT gps.track_id, ST_MakeLine(gps.geom ORDER BY gps_time) As geom
FROM gps_points As gps
GROUP BY track_id;
Avant PostgreSQL 9, l’ordre dans une sous-requête peut être utilisé. Cependant, il arrive que le plan de requête ne respecte pas
l’ordre de la sous-requête.
SELECT gps.track_id, ST_MakeLine(gps.geom) As geom
FROM ( SELECT track_id, gps_time, geom
FROM gps_points ORDER BY track_id, gps_time ) As gps
GROUP BY track_id;
Voir aussi
7.3.5 ST_MakePoint
Synopsis
Description
Note
Pour les coordonnées géodésiques, X est la longitude et Y la latitude
Exemples
--Get z of point
SELECT ST_Z(ST_MakePoint(1, 2,1.5));
result
-------
1.5
Voir aussi
7.3.6 ST_MakePointM
Synopsis
Description
Note
Pour les coordonnées géodésiques, X est la longitude et Y la latitude
Exemples
Note
ST_AsEWKT est utilisé pour la sortie texte car ST_AsText ne prend pas en charge les valeurs M.
st_asewkt
-----------------------------------------------
POINTM(-71.1043443253471 42.3150676015829 10)
Manuel PostGIS 3.4.0dev 87 / 870
Créer un point avec une mesure dans le système de coordonnées géodésiques WGS 84.
SELECT ST_AsEWKT( ST_SetSRID( ST_MakePointM(-71.104, 42.315, 10), 4326));
st_asewkt
---------------------------------------------------------
SRID=4326;POINTM(-71.104 42.315 10)
result
-------
10
Voir aussi
7.3.7 ST_MakePolygon
ST_MakePolygon — Crée un polygone à partir d’une collection et d’une liste facultative de trous.
Synopsis
Description
Crée un polygone formé par la collection donnée et un tableau optionnel de trous. Les géométries d’entrée doivent être des
LineStrings (anneaux) fermés.
Variante 1: Accepte une collection de LineString.
Variante 2: Accepte une collection de LineString et un tableau de LineStrings internes (trous). Un tableau de géométrie peut
être construit en utilisant les constructions PostgreSQL array_agg(), ARRAY[] ou ARRAY().
Note
Cette fonction n’accepte pas les MultiLineStrings. Utilisez ST_LineMerge pour générer une LineString, ou ST_Dump
pour extraire les LineStrings.
Créez un polygone à partir d’une LineString ouverte, en utilisant ST_StartPoint et ST_AddPoint pour la fermer.
Manuel PostGIS 3.4.0dev 88 / 870
st_asewkt
-----------
POLYGON((75.15 29.53 1,77 29 1,77.6 29.5 1,75.15 29.53 1))
st_asewkt
----------
POLYGONM((75.15 29.53 1,77 29 1,77.6 29.5 2,75.15 29.53 2))
Créez un ensemble de frontières de province avec des trous représentant des lacs. L’entrée est un tableau de polygones/multi-
polygones de province et un tableau de lignes d’eau. Les lignes formant des lacs sont déterminées en utilisant ST_IsClosed. Le
réseau de la province est extrait en utilisant ST_Boundary. Comme requis par ST_MakePolygon, la frontière est forcée à être
une seule LineString en utilisant ST_LineMerge. (Cependant, notez que si une province a plus d’une région ou a des îles, cela
produira un polygone invalide). L’utilisation d’un LEFT JOIN garantit que toutes les provinces sont incluses, même si elles n’ont
pas de lacs.
Note
La construction CASE est utilisée car le passage d’un tableau nul dans ST_MakePolygon entraîne une valeur de retour
NULL.
Une autre technique consiste à utiliser une sous-requête corrélée et le constructeur ARRAY() qui convertit un ensemble de lignes
en un tableau.
Manuel PostGIS 3.4.0dev 89 / 870
Voir aussi
ST_BuildArea ST_Polygon
7.3.8 ST_Point
Synopsis
Description
Renvoie un point avec les valeurs de coordonnées X et Y données. C’est l’équivalent SQL-MM de ST_MakePoint qui ne prend
que X et Y.
Note
Pour les coordonnées géodésiques, X est la longitude et Y la latitude
Amélioration : 3.2.0 srid a été ajouté comme argument optionnel supplémentaire. Les anciennes installations nécessitent une
combinaison avec ST_SetSRID pour marquer le srid sur la géométrie.
Exemple : Géométrie
Exemples : Géographie
Si les coordonnées du point ne sont pas dans un système de coordonnées géodésiques (tel que WGS84), elles doivent être
reprojetées avant d’être projetées dans une géographie. Dans cet exemple, un point en pieds du plan de l’État de Pennsylvanie
(SRID 2273) est projeté en WGS84 (SRID 4326).
SELECT ST_Transform(ST_SetSRID( ST_Point( 3637510, 3014852 ), 2273), 4326)::geography;
Voir aussi
7.3.9 ST_PointZ
Synopsis
Description
Renvoie un point avec les valeurs de coordonnées X, Y et Z données, et éventuellement un numéro SRID.
Amélioration : 3.2.0 srid a été ajouté comme argument optionnel supplémentaire. Les anciennes installations nécessitent une
combinaison avec ST_SetSRID pour marquer le srid sur la géométrie.
Exemples
Voir aussi
7.3.10 ST_PointM
Synopsis
Description
Renvoie un point avec les valeurs de coordonnées X, Y et M données, et éventuellement un numéro SRID.
Amélioration : 3.2.0 srid a été ajouté comme argument optionnel supplémentaire. Les anciennes installations nécessitent une
combinaison avec ST_SetSRID pour marquer le srid sur la géométrie.
Exemples
Voir aussi
7.3.11 ST_PointZM
Synopsis
Description
Renvoie un point avec les valeurs de coordonnées X, Y, Z et M données, et éventuellement un numéro SRID.
Amélioration : 3.2.0 srid a été ajouté comme argument optionnel supplémentaire. Les anciennes installations nécessitent une
combinaison avec ST_SetSRID pour marquer le srid sur la géométrie.
Exemples
Voir aussi
7.3.12 ST_Polygon
Synopsis
Description
Renvoie un polygone construit à partir de la LineString donnée et définit le système de référence spatiale à partir du srid.
ST_Polygon est similaire à la variante 1 de ST_MakePolygon avec l’ajout de la définition du SRID.
Pour créer des polygones avec des trous, utilisez ST_MakePolygon la variante 2 et ensuite ST_SetSRID.
Note
Cette fonction n’accepte pas les MultiLineStrings. Utilisez ST_LineMerge pour générer une LineString, ou ST_Dump
pour extraire les LineStrings.
Cette méthode implémente la spécification OGC Simple Features Implementation Specification for SQL 1.1.
Exemples
-- result --
POLYGON((75 29, 77 29, 77 29, 75 29))
-- result --
SRID=4326;POLYGON((75 29 1, 77 29 2, 77 29 3, 75 29 1))
Voir aussi
7.3.13 ST_TileEnvelope
ST_TileEnvelope — Crée un polygone rectangulaire dans Web Mercator (SRID:3857) en utilisant le système de tuiles XYZ.
Synopsis
Description
Crée un polygone rectangulaire donnant l’étendue d’une tuile dans le système de tuiles XYZ. La tuile est spécifiée par le niveau
de zoom Z et l’indice XY de la tuile dans la grille à ce niveau. Peut être utilisé pour définir les limites de la tuile requises par
ST_AsMVTGeom pour convertir la géométrie dans l’espace de coordonnées de la tuile MVT.
Par défaut, l’enveloppe de la tuile est dans le système de coordonnées Web Mercator (SRID:3857) utilisant la plage standard du
système Web Mercator (-20037508.342789, 20037508.342789). Il s’agit du système de coordonnées le plus couramment utilisé
pour les tuiles MVT. Le paramètre facultatif bounds peut être utilisé pour générer des tuiles dans n’importe quel système de
coordonnées. Il s’agit d’une géométrie qui possède le SRID et l’étendue du carré "Niveau de zoom zéro" dans lequel le système
de tuiles XYZ est inscrit.
Le paramètre facultatif margin peut être utilisé pour étendre une tuile du pourcentage donné. Par exemple, margin=0.125
étend la tuile de 12,5%, ce qui équivaut à buffer=512 lorsque la taille de l’étendue de la tuile est de 4096, comme utilisé dans
ST_AsMVTGeom. Ceci est utile pour créer un tampon de tuile afin d’inclure des données situées en dehors de la zone visible de
la tuile, mais dont l’existence affecte le rendu de la tuile. Par exemple, le nom d’une ville (un point) peut se trouver près du bord
d’une tuile, son étiquette doit donc être rendue sur deux tuiles, même si le point se trouve dans la zone visible d’une seule tuile.
L’utilisation de tuiles étendues dans une requête inclura le point de la ville dans les deux tuiles. Utilisez une valeur négative pour
réduire la tuile à la place. Les valeurs inférieures à -0,5 sont interdites, car cela éliminerait complètement la tuile. Ne spécifiez
pas de marge lors de l’utilisation avec ST_AsMVTGeom. Voir l’exemple pour ST_AsMVT.
Amélioré : 3.1.0 Ajout d’un paramètre de marge.
Disponibilité : 3.0.0
st_astext
------------------------------
POLYGON((-10018754.1713945 0,-10018754.1713945 10018754.1713945,0 10018754.1713945,0 ←-
0,-10018754.1713945 0))
st_astext
------------------------------------------------------
POLYGON((-135 45,-135 67.5,-90 67.5,-90 45,-135 45))
Voir aussi
ST_MakeEnvelope
7.3.14 ST_HexagonGrid
ST_HexagonGrid — Renvoie un ensemble d’hexagones et d’indices de cellules qui couvrent complètement les limites de
l’argument géométrie.
Manuel PostGIS 3.4.0dev 94 / 870
Synopsis
Description
Commence par le concept d’un tuilage hexagonal du plan. (Pas un pavage hexagonal du globe, ce n’est pas le schéma de pavage
H3). Pour un SRS plan donné, et une taille d’arête donnée, en commençant à l’origine du SRS, il existe un unique tuilage
hexagonal du plan, Tiling(SRS, Size). Cette fonction répond à la question : quels hexagones dans un Tiling(SRS, Size) donné se
chevauchent avec une limite donnée.
Le SRS pour les hexagones de sortie est le SRS fourni par la géométrie des limites.
Doubler ou tripler la taille des bords de l’hexagone génère un nouveau pavage parent qui s’adapte au pavage d’origine. Mal-
heureusement, il n’est pas possible de générer des tuiles d’hexagones parents dans lesquelles les tuiles enfants s’insèrent par-
faitement.
Manuel PostGIS 3.4.0dev 95 / 870
Disponibilité : 3.1.0
Pour faire un résumé des points par rapport à un pavage hexagonal, générez une grille hexagonale en utilisant l’étendue des points
comme limites, puis joignez spatialement cette grille.
SELECT COUNT(*), hexes.geom
FROM
ST_HexagonGrid(
10000,
ST_SetSRID(ST_EstimatedExtent('pointtable', 'geom'), 3857)
) AS hexes
INNER JOIN
pointtable AS pts
ON ST_Intersects(pts.geom, hexes.geom)
GROUP BY hexes.geom;
Si nous générons un ensemble d’hexagones pour chaque limite de polygone et que nous éliminons par filtrage ceux qui n’intersectent
pas leurs hexagones, nous obtenons un pavage pour chaque polygone.
Manuel PostGIS 3.4.0dev 96 / 870
La mise en mosaïque des états donne lieu à une couverture hexagonale de chaque état, et à des hexagones multiples se chevauchant
aux frontières entre les états.
Note
Le mot-clé LATERAL est implicite pour les fonctions de retour d’ensemble lorsqu’elles font référence à une table an-
térieure dans la liste FROM. Ainsi, CROSS JOIN LATERAL, CROSS JOIN, ou tout simplement , sont des constructions
équivalentes pour cet exemple.
Voir aussi
7.3.15 ST_Hexagon
ST_Hexagon — Renvoie un seul hexagone, en utilisant la taille du bord et les coordonnées de la cellule fournies dans l’espace
de la grille de l’hexagone.
Synopsis
Description
Utilise le même concept de tuilage d’hexagones que ST_HexagonGrid, mais génère un seul hexagone à la coordonnée de cellule
souhaitée. En option, peut ajuster la coordonnée d’origine du tuilage, l’origine par défaut est à 0,0.
Les hexagones sont générés sans SRID défini, utilisez donc ST_SetSRID pour définir le SRID à celui que vous attendez.
Disponibilité : 3.1.0
POLYGON((-1 0,-0.5
-0.866025403784439,0.5
-0.866025403784439,1
0,0.5
0.866025403784439,-0.5
0.866025403784439,-1 0))
Voir aussi
7.3.16 ST_SquareGrid
ST_SquareGrid — Renvoie un ensemble de carrés de grille et d’indices de cellules qui couvrent complètement les limites de
l’argument géométrie.
Synopsis
Description
Commence par le concept de tuilage carré du plan. Pour un SRS plan donné, et une taille d’arête donnée, en commençant à
l’origine du SRS, il existe un unique pavage carré du plan, Tiling(SRS, Size). Cette fonction répond à la question : quelles grilles
dans un Tiling(SRS, Size) donné se chevauchent avec une limite donnée.
Le SRS des carrés de sortie est le SRS fourni par la géométrie des limites.
Le doublement de la taille du carré ou de son bord génère un nouveau pavage parent qui s’adapte parfaitement au pavage
d’origine. Les carrelages standard des cartes Web dans mercator ne sont que des puissances de deux grilles carrées dans le plan
mercator.
Disponibilité : 3.1.0
La grille remplira toutes les limites du pays, donc si vous voulez seulement des carrés qui touchent le pays, vous devrez filtrer
ensuite avec ST_Intersects.
WITH grid AS (
SELECT (ST_SquareGrid(1, ST_Transform(geom,4326))).*
FROM admin0 WHERE name = 'Canada'
)
SELEcT ST_AsText(geom)
FROM grid
Manuel PostGIS 3.4.0dev 98 / 870
Exemple : Compter les points dans les carrés (en utilisant une seule grille découpée)
Pour faire un résumé des points par rapport à un tuilage carré, générez une grille carrée en utilisant l’étendue des points comme
limites, puis joignez spatialement à cette grille. Notez que l’étendue estimée peut être différente de l’étendue réelle, soyez donc
prudent et assurez-vous au moins d’avoir analysé votre tableau.
SELECT COUNT(*), squares.geom
FROM
pointtable AS pts
INNER JOIN
ST_SquareGrid(
1000,
ST_SetSRID(ST_EstimatedExtent('pointtable', 'geom'), 3857)
) AS squares
ON ST_Intersects(pts.geom, squares.geom)
GROUP BY squares.geom
Exemple : Compter des points dans des carrés en utilisant un jeu de grille par point
Cette méthode donne le même résultat que le premier exemple mais sera plus lente pour un grand nombre de points
SELECT COUNT(*), squares.geom
FROM
pointtable AS pts
INNER JOIN
ST_SquareGrid(
1000,
pts.geom
) AS squares
ON ST_Intersects(pts.geom, squares.geom)
GROUP BY squares.geom
Voir aussi
7.3.17 ST_Square
ST_Square — Renvoie un seul carré, en utilisant la taille du bord et la coordonnée de la cellule fournies dans l’espace de la grille
du carré.
Synopsis
Description
Utilise le même concept de tuilage carré que ST_SquareGrid, mais génère un seul carré à la coordonnée de cellule souhaitée. En
option, peut ajuster la coordonnée d’origine du tuilage, l’origine par défaut est à 0,0.
Les carrés sont générés sans SRID défini, utilisez donc ST_SetSRID pour définir le SRID à celui que vous attendez.
Disponibilité : 3.1.0
Manuel PostGIS 3.4.0dev 99 / 870
Voir aussi
7.3.18 ST_Letters
ST_Letters — Renvoie les lettres d’entrée rendues sous forme de géométrie avec une position de départ par défaut à l’origine et
une hauteur de texte par défaut de 100.
Synopsis
Description
Utilise une police intégrée pour rendre une chaîne de caractères sous forme de géométrie multipolygonale. La hauteur de texte
par défaut est de 100,0, soit la distance entre le bas d’une descendante et le haut d’une capitale. La position de départ par défaut
place le début de la ligne de base à l’origine. Pour remplacer la police, il faut passer une carte json, avec un caractère comme clé,
et des TWKB encodés en base64 pour la forme de la police, les polices ayant une hauteur de 1000 unités du bas des descendantes
au haut des capitales.
Le texte est généré à l’origine par défaut, donc pour repositionner et redimensionner le texte, appliquez d’abord la fonction
ST_Scale et ensuite appliquez la fonction ST_Translate.
Disponibilité : 3.3.0
Voir aussi
7.4.1 GeometryType
Synopsis
Description
Note
Cette fonction indique si la géométrie comporte une dimension de type mesure, en retournant un texte de la forme
’POINTM’.
Cette méthode implémente la spécification OGC Simple Features Implementation Specification for SQL 1.1.
Cette fonction prend en charge les triangles et les réseaux irréguliers triangulés (TIN).
Exemples
Voir aussi
ST_GeometryType
7.4.2 ST_Boundary
Synopsis
Description
Renvoie l’ensemble formant la frontière finie de cette géométrie. La notion de frontière est définie dans la section 3.12.3.2 des
spécifications OGC. Le résultat de cette fonction est un ensemble topologiquement fermé, représentable avec les types de base,
comme décrit dans la section 3.12.2 des spécifications OGC.
Effectué par le module GEOS
Note
Avant la version 2.0.0, cette fonction renvoie une exception si une GEOMETRYCOLLECTION est passée en paramètre.
A partir de la 2.0.0, la fonction renvoie null (paramètre non supporté).
Manuel PostGIS 3.4.0dev 102 / 870
Cette méthode implémente la spécification OGC Simple Features Implementation Specification for SQL 1.1. OGC SPEC
s2.1.1.1
Exemples
--Using a 3d polygon
SELECT ST_AsEWKT(ST_Boundary(ST_GeomFromEWKT('POLYGON((1 1 1,0 0 1, -1 1 1, 1 1 1))')));
st_asewkt
-----------------------------------
LINESTRING(1 1 1,0 0 1,-1 1 1,1 1 1)
--Using a 3d multilinestring
SELECT ST_AsEWKT(ST_Boundary(ST_GeomFromEWKT('MULTILINESTRING((1 1 1,0 0 0.5, -1 1 1),(1 1 ←-
0.5,0 0 0.5, -1 1 0.5, 1 1 0.5) )')));
st_asewkt
----------
MULTIPOINT((-1 1 1),(1 1 0.75))
Voir aussi
7.4.3 ST_BoundingDiagonal
Synopsis
Description
Renvoie la diagonale de la boîte de délimitation de la géométrie fournie sous la forme d’une LineString. La diagonale est une
LineString à 2 points avec les valeurs minimales de chaque dimension dans son point de départ et les valeurs maximales dans
son point d’arrivée. Si la géométrie d’entrée est vide, la diagonale est une LINESTRING EMPTY.
Le paramètre facultatif fits spécifie si le meilleur ajustement est nécessaire. S’il est faux, la diagonale d’une boîte de délim-
itation un peu plus grande peut être acceptée (ce qui est plus rapide à calculer pour les géométries comportant de nombreux
sommets). Dans les deux cas, la boîte de délimitation de la ligne diagonale renvoyée couvre toujours la géométrie d’entrée.
La géométrie renvoyée conserve le SRID et la dimensionnalité (présence Z et M) de la géométrie en entrée.
Note
Dans les cas dégénérés (c’est-à-dire un seul sommet dans l’entrée), la ligne retournée sera formellement invalide (pas
d’intérieur). Le résultat est toujours topologiquement valide.
Disponibilité : 2.2.0
Exemples
Voir aussi
7.4.4 ST_CoordDim
Synopsis
Description
Cette méthode implémente la spécification OGC Simple Features Implementation Specification for SQL 1.1.
Cette fonction prend en charge les triangles et les réseaux irréguliers triangulés (TIN).
Exemples
SELECT ST_CoordDim(ST_Point(1,2));
--result--
2
Voir aussi
ST_NDims
Manuel PostGIS 3.4.0dev 105 / 870
7.4.5 ST_Dimension
Synopsis
Description
Renvoie la dimension topologique de cet objet Geometry, qui doit être inférieure ou égale à la dimension des coordonnées. OGC
SPEC s2.1.1.1 - renvoie 0 pour POINT, 1 pour LINESTRING, 2 pour POLYGON, et la plus grande dimension des composants
d’une GEOMETRYCOLLECTION. Si la dimension est inconnue (par exemple, pour une GEOMETRYCOLLECTION vide), 0 est
renvoyé.
Note
Avant la version 2.0.0, cette fonction lève une exception si elle est utilisée avec une géométrie vide.
Cette fonction prend en charge les triangles et les réseaux irréguliers triangulés (TIN).
Exemples
Voir aussi
ST_NDims
7.4.6 ST_Dump
ST_Dump — Renvoie un ensemble de lignes geometry_dump pour les composants d’une géométrie.
Synopsis
Description
Une fonction de retour d’ensemble (SRF) qui extrait les composants d’une géométrie. Elle renvoie un ensemble de geome-
try_dump lignes, chacune contenant une géométrie (champ geom) et un tableau d’entiers (champ path).
Pour un type de géométrie atomique (POINT, LINESTRING, POLYGONE), un seul enregistrement est renvoyé avec un tableau
path vide et la géométrie en entrée en tant que geom. Pour une collection ou une géométrie multiple, un enregistrement est
renvoyé pour chacun des composants de la collection, et le path indique la position du composant à l’intérieur de la collection.
ST_Dump est utile pour développer les géométries. C’est l’inverse d’un ST_Collect / GROUP BY, en ce sens qu’il crée de
nouvelles lignes. Par exemple, il peut être utilisé pour développer les MULTIPOLYGONES en POLYGONES.
Amélioration : 2.0.0 introduction du support TIN, Triangles et surfaces polyédriques.
Disponibilité : PostGIS 1.0.0RC1. Nécessite PostgreSQL 7.3 ou plus.
Note
Avant la version 1.3.4, cette fonction se bloquait si elle était utilisée avec des géométries contenant des CURVES. Ce
problème est corrigé dans la version 1.3.4+
Cette fonction prend en charge les triangles et les réseaux irréguliers triangulés (TIN).
Exemples
)') ) AS p_geom ) AS a;
path | geom_ewkt
------+------------------------------------------
1 | POLYGON((0 0 0,0 0 1,0 1 1,0 1 0,0 0 0))
2 | POLYGON((0 0 0,0 1 0,1 1 0,1 0 0,0 0 0))
3 | POLYGON((0 0 0,1 0 0,1 0 1,0 0 1,0 0 0))
4 | POLYGON((1 1 0,1 1 1,1 0 1,1 0 0,1 1 0))
5 | POLYGON((0 1 0,0 1 1,1 1 1,1 1 0,0 1 0))
6 | POLYGON((0 0 1,1 0 1,1 1 1,0 1 1,0 0 1))
-- TIN --
SELECT (g.gdump).path, ST_AsEWKT((g.gdump).geom) as wkt
FROM
(SELECT
ST_Dump( ST_GeomFromEWKT('TIN (((
0 0 0,
0 0 1,
0 1 0,
0 0 0
)), ((
0 0 0,
0 1 0,
1 1 0,
0 0 0
))
)') ) AS gdump
) AS g;
-- result --
path | wkt
------+-------------------------------------
{1} | TRIANGLE((0 0 0,0 0 1,0 1 0,0 0 0))
{2} | TRIANGLE((0 0 0,0 1 0,1 1 0,0 0 0))
Voir aussi
7.4.7 ST_DumpPoints
ST_DumpPoints — Renvoie un ensemble de lignes geometry_dump pour les coordonnées dans une géométrie.
Synopsis
Description
Une fonction de retour d’ensemble (SRF) qui extrait les coordonnées (sommets) d’une géométrie. Elle renvoie un ensemble de
geometry_dump lignes, chacune contenant une géométrie (champ geom) et un tableau d’entiers (champ path).
Pour obtenir une géométrie unique contenant les coordonnées, utilisez ST_Points.
Amélioré : 2.1.0 Vitesse plus rapide. Réimplémentation en C natif.
Amélioration : 2.0.0 introduction du support TIN, Triangles et surfaces polyédriques.
Disponibilité : 1.5.0
Cette fonction prend en charge les triangles et les réseaux irréguliers triangulés (TIN).
(SELECT
'GEOMETRYCOLLECTION(
POINT ( 0 1 ),
LINESTRING ( 0 3, 3 4 ),
POLYGON (( 2 0, 2 3, 0 2, 2 0 )),
POLYGON (( 3 0, 3 3, 6 3, 6 0, 3 0 ),
( 5 1, 4 2, 5 2, 5 1 )),
MULTIPOLYGON (
(( 0 5, 0 8, 4 8, 4 5, 0 5 ),
( 1 6, 3 6, 2 7, 1 6 )),
(( 5 4, 5 8, 6 7, 5 4 ))
)
)'::geometry AS geom
) AS g
) j;
path | st_astext
-----------+------------
{1,1} | POINT(0 1)
{2,1} | POINT(0 3)
{2,2} | POINT(3 4)
{3,1,1} | POINT(2 0)
{3,1,2} | POINT(2 3)
{3,1,3} | POINT(0 2)
{3,1,4} | POINT(2 0)
{4,1,1} | POINT(3 0)
{4,1,2} | POINT(3 3)
{4,1,3} | POINT(6 3)
{4,1,4} | POINT(6 0)
{4,1,5} | POINT(3 0)
{4,2,1} | POINT(5 1)
{4,2,2} | POINT(4 2)
{4,2,3} | POINT(5 2)
{4,2,4} | POINT(5 1)
{5,1,1,1} | POINT(0 5)
{5,1,1,2} | POINT(0 8)
{5,1,1,3} | POINT(4 8)
{5,1,1,4} | POINT(4 5)
{5,1,1,5} | POINT(0 5)
{5,1,2,1} | POINT(1 6)
{5,1,2,2} | POINT(3 6)
{5,1,2,3} | POINT(2 7)
{5,1,2,4} | POINT(1 6)
{5,2,1,1} | POINT(5 4)
{5,2,1,2} | POINT(5 8)
{5,2,1,3} | POINT(6 7)
{5,2,1,4} | POINT(5 4)
(29 rows)
) AS g;
-- result --
path | wkt
---------+--------------
{1,1,1} | POINT(0 0 0)
{1,1,2} | POINT(0 0 1)
{1,1,3} | POINT(0 1 1)
{1,1,4} | POINT(0 1 0)
{1,1,5} | POINT(0 0 0)
{2,1,1} | POINT(0 0 0)
{2,1,2} | POINT(0 1 0)
{2,1,3} | POINT(1 1 0)
{2,1,4} | POINT(1 0 0)
{2,1,5} | POINT(0 0 0)
{3,1,1} | POINT(0 0 0)
{3,1,2} | POINT(1 0 0)
{3,1,3} | POINT(1 0 1)
{3,1,4} | POINT(0 0 1)
{3,1,5} | POINT(0 0 0)
{4,1,1} | POINT(1 1 0)
{4,1,2} | POINT(1 1 1)
{4,1,3} | POINT(1 0 1)
{4,1,4} | POINT(1 0 0)
{4,1,5} | POINT(1 1 0)
{5,1,1} | POINT(0 1 0)
{5,1,2} | POINT(0 1 1)
{5,1,3} | POINT(1 1 1)
{5,1,4} | POINT(1 1 0)
{5,1,5} | POINT(0 1 0)
{6,1,1} | POINT(0 0 1)
{6,1,2} | POINT(1 0 1)
{6,1,3} | POINT(1 1 1)
{6,1,4} | POINT(0 1 1)
{6,1,5} | POINT(0 0 1)
(30 rows)
-- Triangle --
SELECT (g.gdump).path, ST_AsText((g.gdump).geom) as wkt
FROM
(SELECT
ST_DumpPoints( ST_GeomFromEWKT('TRIANGLE ((
0 0,
0 9,
9 0,
0 0
))') ) AS gdump
) AS g;
-- result --
path | wkt
------+------------
{1} | POINT(0 0)
{2} | POINT(0 9)
{3} | POINT(9 0)
{4} | POINT(0 0)
-- TIN --
SELECT (g.gdump).path, ST_AsEWKT((g.gdump).geom) as wkt
FROM
(SELECT
ST_DumpPoints( ST_GeomFromEWKT('TIN (((
0 0 0,
Manuel PostGIS 3.4.0dev 111 / 870
0 0 1,
0 1 0,
0 0 0
)), ((
0 0 0,
0 1 0,
1 1 0,
0 0 0
))
)') ) AS gdump
) AS g;
-- result --
path | wkt
---------+--------------
{1,1,1} | POINT(0 0 0)
{1,1,2} | POINT(0 0 1)
{1,1,3} | POINT(0 1 0)
{1,1,4} | POINT(0 0 0)
{2,1,1} | POINT(0 0 0)
{2,1,2} | POINT(0 1 0)
{2,1,3} | POINT(1 1 0)
{2,1,4} | POINT(0 0 0)
(8 rows)
Voir aussi
7.4.8 ST_DumpSegments
ST_DumpSegments — Renvoie un ensemble de lignes geometry_dump pour les segments d’une géométrie.
Synopsis
Description
Une fonction de retour d’ensemble (SRF) qui extrait les segments d’une géométrie. Elle renvoie un ensemble de geometry_dump
lignes, chacune contenant une géométrie (champ geom) et un tableau d’entiers (champ path).
Disponibilité : 3.2.0
Cette fonction prend en charge les triangles et les réseaux irréguliers triangulés (TIN).
-- Triangle --
SELECT path, ST_AsText(geom)
FROM (
SELECT (ST_DumpSegments(g.geom)).*
FROM (SELECT 'TRIANGLE((
0 0,
0 9,
9 0,
0 0
))'::geometry AS geom
) AS g
) j;
-- TIN --
SELECT path, ST_AsEWKT(geom)
FROM (
SELECT (ST_DumpSegments(g.geom)).*
FROM (SELECT 'TIN(((
0 0 0,
0 0 1,
0 1 0,
0 0 0
)), ((
0 0 0,
0 1 0,
1 1 0,
0 0 0
))
)'::geometry AS geom
Manuel PostGIS 3.4.0dev 113 / 870
) AS g
) j;
Voir aussi
7.4.9 ST_DumpRings
ST_DumpRings — Renvoie un ensemble de lignes geometry_dump pour les anneaux extérieurs et intérieurs d’un polygone.
Synopsis
Description
Une fonction de retour d’ensemble (SRF) qui extrait les anneaux d’un polygone. Elle renvoie un ensemble de geometry_dump
lignes, chacune contenant une géométrie (champ geom) et un tableau d’entiers (champ path).
Une fonction de retour d’ensemble (SRF) qui extrait les anneaux d’un polygone. Elle renvoie un ensemble de geometry_dump
lignes, chacune contenant une géométrie (champ geom) et un tableau d’entiers (champ path).
Note
Cela ne fonctionne que pour les géométries POLYGON. Il ne fonctionne pas pour les MULTIPOLYGONS.
Exemples
Voir aussi
7.4.10 ST_EndPoint
Synopsis
Description
Renvoie le dernier point d’une géométrie LINESTRING ou CIRCULARLINESTRING comme un POINT. Renvoie NULL si
l’entrée n’est pas une LINESTRING ou CIRCULARLINESTRING.
Note
Modifié : 2.0.0 ne fonctionne plus avec les MultiLineStrings à géométrie unique. Dans les anciennes versions de
PostGIS, une MultiLineString à géométrie unique fonctionnait avec cette fonction et renvoyait le point final. Dans la
version 2.0.0, elle renvoie NULL comme toute autre MultiLineString. L’ancien comportement était une fonctionnalité
non documentée, mais les personnes qui supposaient que leurs données étaient stockées en tant que LINESTRING
peuvent voir ces dernières retourner NULL dans la version 2.0.0.
Manuel PostGIS 3.4.0dev 115 / 870
Exemples
Le point final d’une ligne qui n’en est pas une est NULL
SELECT ST_EndPoint('POINT(1 1)'::geometry) IS NULL AS is_null;
is_null
----------
t
Voir aussi
ST_PointN, ST_StartPoint
7.4.11 ST_Envelope
Synopsis
Description
Renvoie la boîte de délimitation minimale en double précision (float8) pour la géométrie fournie, en tant que géométrie. Le
polygone est défini par les points d’angle de la boîte de délimitation ((MINX, MINY), (MINX, MAXY), (MAXX, MAXY), (MAXX,
MINY), (MINX, MINY)). (PostGIS ajoutera également une coordonnée ZMIN/ZMAX).
D’autres cas (lignes verticales, points) retourneront une géométrie de dimension inférieure à POLYGON, c’est-à-dire POINT ou
LINESTRING.
Disponibilité : 1.5.0 changement pour renvoyer un type double précision à la place de float4
Cette méthode implémente la spécification OGC Simple Features Implementation Specification for SQL 1.1. s2.1.1.1
Exemples
SELECT ST_AsText(ST_Envelope(
ST_Collect(
ST_GeomFromText('LINESTRING(55 75,125 150)'),
ST_Point(20, 80))
Manuel PostGIS 3.4.0dev 117 / 870
)) As wktenv;
wktenv
-----------
POLYGON((20 75,20 150,125 150,125 75,20 75))
Voir aussi
7.4.12 ST_ExteriorRing
Synopsis
Description
Renvoie une LINESTRING représentant l’anneau extérieur (coquille) d’un POLYGONE. Renvoie NULL si la géométrie n’est
pas un polygone.
Note
Cette fonction ne prend pas en charge les MULTIPOLYGONES. Pour les MULTIPOLYGONs, utilisez conjointement
avec ST_GeometryN ou ST_Dump
Cette méthode implémente la spécification OGC Simple Features Implementation Specification for SQL 1.1. 2.1.5.1
Exemples
--3d Example
SELECT ST_AsEWKT(
ST_ExteriorRing(
ST_GeomFromEWKT('POLYGON((0 0 1, 1 1 1, 1 2 1, 1 1 1, 0 0 1))')
)
);
Manuel PostGIS 3.4.0dev 118 / 870
st_asewkt
---------
LINESTRING(0 0 1,1 1 1,1 2 1,1 1 1,0 0 1)
Voir aussi
7.4.13 ST_GeometryN
Synopsis
Description
Renvoie la géométrie du Nième élément basé sur 1 d’une géométrie d’entrée qui est une GEOMETRYCOLLECTION, MULTI-
POINT, MULTILINESTRING, MULTICURVE, MULTI)POLYGON ou POLYHEDRALSURFACE. Sinon, renvoie NULL.
Note
L’index commence à 1 pour respecter les spécificarions OGC depuis la version 0.8.0. Dans les versions antérieures,
l’index commençait à 0.
Note
Pour extraire tous les éléments d’une géométrie, ST_Dump est plus efficace et fonctionne pour les géométries atom-
iques.
Cette méthode implémente la spécification OGC Simple Features Implementation Specification for SQL 1.1.
Cette fonction prend en charge les triangles et les réseaux irréguliers triangulés (TIN).
Manuel PostGIS 3.4.0dev 119 / 870
Exemples
n | geomewkt
---+-----------------------------------------
1 | POINT(1 2 7)
2 | POINT(3 4 7)
3 | POINT(5 6 7)
4 | POINT(8 9 10)
1 | CIRCULARSTRING(2.5 2.5,4.5 2.5,3.5 3.5)
2 | LINESTRING(10 11,12 11)
geom_ewkt
------------------------------------------
POLYGON((0 0 0,1 0 0,1 0 1,0 0 1,0 0 0))
-- TIN --
SELECT ST_AsEWKT(ST_GeometryN(geom,2)) as wkt
FROM
(SELECT
ST_GeomFromEWKT('TIN (((
0 0 0,
0 0 1,
0 1 0,
0 0 0
)), ((
0 0 0,
0 1 0,
1 1 0,
0 0 0
))
Manuel PostGIS 3.4.0dev 120 / 870
)') AS geom
) AS g;
-- result --
wkt
-------------------------------------
TRIANGLE((0 0 0,0 1 0,1 1 0,0 0 0))
Voir aussi
ST_Dump, ST_NumGeometries
7.4.14 ST_GeometryType
Synopsis
Description
Renvoie le type de la géométrie sous forme de texte, par exemple : ’ST_LineString’, ’ST_Polygon’,’ST_MultiPolygon’
etc. Cette fonction diffère de GeometryType(geometry) par la casse du texte renvoyé et par le préfixe ST_ en début de texte.
N’indique pas si la géométrie comporte une dimension MESURE.
Amélioration : 2.0.0 introduction du support des surfaces polyédriques.
Exemples
Voir aussi
GeometryType
7.4.15 ST_HasArc
Synopsis
Description
Renvoie true si une géométrie ou une collection de géométries contient une circular string
Disponibilité : 1.2.3 ?
Exemples
Voir aussi
ST_CurveToLine, ST_LineToCurve
7.4.16 ST_InteriorRingN
Synopsis
Description
Renvoie le Nième anneau intérieur (trou) d’une géométrie POLYGONE sous forme de LINESTRING. L’indice commence à 1.
Renvoie NULL si la géométrie n’est pas un polygone ou si l’indice est hors de la plage.
Note
Cette fonction ne prend pas en charge les MULTIPOLYGONES. Pour les MULTIPOLYGONs, utilisez conjointement
avec ST_GeometryN ou ST_Dump
Cette méthode implémente la spécification OGC Simple Features Implementation Specification for SQL 1.1.
Exemples
Voir aussi
7.4.17 ST_IsClosed
ST_IsClosed — Teste si les points de départ et d’arrivée d’une LineString coïncident. Pour une PolyhedralSurface, teste si elle
est fermée (volumétrique).
Synopsis
Description
Renvoie TRUE si les premier et dernier points de la LINESTRING sont identiques. Pour les surface polyhédriques, indique si la
surface est surfacique (ouverte) ou volumétrique (fermée).
Cette méthode implémente la spécification OGC Simple Features Implementation Specification for SQL 1.1.
Note
La norme SQL-MM indique que le résultat de la fonction ST_IsClosed(NULL) doit être 0 ; PostGIS renvoie NULL.
(1 row)
-- A cube --
SELECT ST_IsClosed(ST_GeomFromEWKT('POLYHEDRALSURFACE( ((0 0 0, 0 0 1, 0 1 ←-
1, 0 1 0, 0 0 0)),
((0 0 0, 0 1 0, 1 1 0, 1 0 0, 0 0 0)), ((0 0 0, 1 0 0, 1 0 1, 0 0 1, 0 0 0) ←-
),
((1 1 0, 1 1 1, 1 0 1, 1 0 0, 1 1 0)),
((0 1 0, 0 1 1, 1 1 1, 1 1 0, 0 1 0)), ((0 0 1, 1 0 1, 1 1 1, 0 1 1, 0 0 1) ←-
) )'));
st_isclosed
-------------
t
st_isclosed
-------------
f
Voir aussi
ST_IsRing
7.4.18 ST_IsCollection
Synopsis
Description
Renvoie TRUE si le type de géométrie de l’argument est un type de collection de géométrie. Les types de collection sont les
suivants :
• GEOMETRYCOLLECTION
Manuel PostGIS 3.4.0dev 125 / 870
• MULTI{POINT,POLYGON,LINESTRING,CURVE,SURFACE}
• COMPOUNDCURVE
Note
Cette fonction analyse le type de la géométrie. Renvoie TRUE pour les collections vides ou ne contenant q’un seul
élément.
Exemples
Voir aussi
ST_NumGeometries
7.4.19 ST_IsEmpty
Synopsis
Description
Renvoie true si cette géométrie est une géométrie vide. Si vrai, alors cette géométrie représente une collection de géométrie vide,
un polygone, un point, etc.
Note
La norme SQL-MM stipule que ST_IsEmpty(NULL) doit renvoyer 0. PostGIS renvoie NULL.
Cette méthode implémente la spécification OGC Simple Features Implementation Specification for SQL 1.1. s2.1.1.1
Warning
Modifié : 2.0.0 Dans les versions précédentes de PostGIS, ST_GeomFromText(’GEOMETRYCOLLECTION(EMPTY)’)
était autorisé. Ceci est maintenant illégal dans PostGIS 2.0.0 pour mieux se conformer aux normes SQL/MM
Exemples
st_isempty
------------
f
(1 row)
7.4.20 ST_IsPolygonCCW
ST_IsPolygonCCW — Teste si les polygones ont des anneaux extérieurs orientés dans le sens inverse des aiguilles d’une montre
et des anneaux intérieurs orientés dans le sens des aiguilles d’une montre.
Synopsis
Description
Renvoie un résultat positif si tous les composants polygonaux de la géométrie en entrée utilisent une orientation anti-horaire pour
leur anneau extérieur et une orientation horaire pour tous les anneaux intérieurs.
Retourne vrai si la géométrie n’a pas de composants polygonaux.
Note
Les lignes fermées ne sont pas considérées comme des composants polygonaux, de sorte que vous obtiendrez tou-
jours un retour vrai en passant une seule ligne fermée, quelle que soit son orientation.
Note
Si une géométrie polygonale n’utilise pas l’orientation inversée pour les anneaux intérieurs (c’est-à-dire si un ou
plusieurs anneaux intérieurs sont orientés dans la même direction qu’un anneau extérieur), ST_IsPolygonCW et
ST_IsPolygonCCW renvoient tous deux la valeur false.
Disponibilité : 2.4.0
Voir aussi
7.4.21 ST_IsPolygonCW
ST_IsPolygonCW — Teste si les polygones ont des anneaux extérieurs orientés dans le sens des aiguilles d’une montre et des
anneaux intérieurs orientés dans le sens inverse des aiguilles d’une montre.
Synopsis
Description
Renvoie un résultat positif si tous les composants polygonaux de la géométrie d’entrée utilisent une orientation dans le sens
des aiguilles d’une montre pour leur anneau extérieur, et dans le sens inverse des aiguilles d’une montre pour tous les anneaux
intérieurs.
Retourne vrai si la géométrie n’a pas de composants polygonaux.
Note
Les lignes fermées ne sont pas considérées comme des composants polygonaux, de sorte que vous obtiendrez tou-
jours un retour vrai en passant une seule ligne fermée, quelle que soit son orientation.
Note
Si une géométrie polygonale n’utilise pas l’orientation inversée pour les anneaux intérieurs (c’est-à-dire si un ou
plusieurs anneaux intérieurs sont orientés dans la même direction qu’un anneau extérieur), ST_IsPolygonCW et
ST_IsPolygonCCW renvoient tous deux la valeur false.
Disponibilité : 2.4.0
Voir aussi
7.4.22 ST_IsRing
Synopsis
Description
Renvoie TRUE si cette LINESTRING est à la fois ST_IsClosed (ST_StartPoint((g )) ~= ST_Endpoint((g ))) et ST_IsSimple
(pas d’auto intersection).
Cette méthode implémente la spécification OGC Simple Features Implementation Specification for SQL 1.1. 2.1.5.1
Note
La norme SQL-MM stipule que ST_IsRing(NULL) doit renvoyer 0. PostGIS renvoie NULL.
Manuel PostGIS 3.4.0dev 129 / 870
Exemples
Voir aussi
7.4.23 ST_IsSimple
Synopsis
Description
Renvoie TRUE si cette géométrie ne présente pas d’anomalie comme une auto intersection ou des segments tangentiels. Pour
plus d’information sur les notions OGC de simplicité et de validité, se référer à "Ensuring OpenGIS compliancy of geometries"
Note
La norme SQL-MM indique que le résultat de la fonction ST_IsSimple(NULL) doit être 0 ; PostGIS renvoie
NULL.
Cette méthode implémente la spécification OGC Simple Features Implementation Specification for SQL 1.1. s2.1.1.1
Exemples
Voir aussi
ST_IsValid
7.4.24 ST_M
Synopsis
Description
Retourne les coordonnées M d’un point, ou NULL si non disponible. L’entrée doit être un point.
Note
Cette fonction ne fait pas (encore) partie de la spécification de l’OGC, mais elle est mentionnée ici pour compléter la
liste des fonctions de l’extracteur de coordonnées de points.
Cette méthode implémente la spécification OGC Simple Features Implementation Specification for SQL 1.1.
Exemples
Voir aussi
7.4.25 ST_MemSize
Synopsis
Description
Note
pg_relation_size qui donne la taille en octets d’une table peut renvoyer une taille en octets inférieure à ST_MemSize.
Cela est dû au fait que pg_relation_size n’ajoute pas la contribution des tables toasted et que les grandes géométries
sont stockées dans les tables TOAST.
pg_total_relation_size - comprend la table, les tables toasted et les index.
pg_column_size indique l’espace que prendrait une géométrie dans une colonne en tenant compte de la compression,
et peut donc être inférieur à ST_MemSize.
Cette fonction prend en charge les triangles et les réseaux irréguliers triangulés (TIN).
Modifié : 2.2.0 nom modifié en ST_MemSize pour respecter la convention de nommage.
Exemples
--Return how much byte space Boston takes up in our Mass data set
SELECT pg_size_pretty(SUM(ST_MemSize(geom))) as totgeomsum,
pg_size_pretty(SUM(CASE WHEN town = 'BOSTON' THEN ST_MemSize(geom) ELSE 0 END)) As bossum,
CAST(SUM(CASE WHEN town = 'BOSTON' THEN ST_MemSize(geom) ELSE 0 END)*1.00 /
SUM(ST_MemSize(geom))*100 As numeric(10,2)) As perbos
FROM towns;
---
73
7.4.26 ST_NDims
Synopsis
Description
Renvoie la dimension des coordonnées de la géométrie. PostGIS supporte 2 - (x,y) , 3 - (x,y,z) ou 2D avec mesure - x,y,m, et 4 -
3D avec espace de mesure x,y,z,m
Exemples
Voir aussi
7.4.27 ST_NPoints
Synopsis
Description
Retourne le nombre de points d’un objet géométrique. Cela fonctionne pour tous les types de géométrie.
Amélioration : 2.0.0 introduction du support des surfaces polyédriques.
Note
Avant la version 1.3.4, cette fonction se bloquait si elle était utilisée avec des géométries contenant des CURVES. Ce
problème est corrigé dans la version 1.3.4+
Exemples
--Polygon in 3D space
SELECT ST_NPoints(ST_GeomFromEWKT('LINESTRING(77.29 29.07 1,77.42 29.26 0,77.27 29.31 ←-
-1,77.29 29.07 3)'))
--result
4
Voir aussi
ST_NumPoints
7.4.28 ST_NRings
Synopsis
Description
Exemples
Voir aussi
ST_NumInteriorRings
7.4.29 ST_NumGeometries
Synopsis
Description
Renvoie le nombre de géométries. Si la géométrie est une GEOMETRYCOLLECTION (ou MULTI*), elle renvoie le nombre de
géométries ; pour les géométries uniques, elle renvoie 1, sinon elle renvoie NULL.
Amélioration : 2.0.0 introduction du support TIN, Triangles et surfaces polyédriques.
Modifié : 2.0.0 Dans les versions précédentes, cette fonction renvoyait NULL si la géométrie n’était pas de type collection/-
MULTI. 2.0.0+ renvoie maintenant 1 pour les géométries simples, par exemple POLYGONE, LINESTRING, POINT.
Cette fonction prend en charge les triangles et les réseaux irréguliers triangulés (TIN).
Exemples
--Prior versions would have returned NULL for this -- in 2.0.0 this returns 1
SELECT ST_NumGeometries(ST_GeomFromText('LINESTRING(77.29 29.07,77.42 29.26,77.27 ←-
29.31,77.29 29.07)'));
--result
1
Voir aussi
ST_GeometryN, ST_Multi
7.4.30 ST_NumInteriorRings
Synopsis
Description
Renvoie le nombre d’anneaux intérieurs d’une géométrie polygonale. Retourne NULL si la géométrie n’est pas un polygone.
Exemples
Voir aussi
ST_NumInteriorRing, ST_InteriorRingN
7.4.31 ST_NumInteriorRing
ST_NumInteriorRing — Renvoie le nombre d’anneaux intérieurs (trous) d’un polygone. Alias pour ST_NumInteriorRings
Synopsis
Voir aussi
ST_NumInteriorRings, ST_InteriorRingN
7.4.32 ST_NumPatches
ST_NumPatches — Renvoie le nombre de faces d’une surface polyédrique. Retourne null pour les géométries non polyédriques.
Synopsis
Description
Renvoie le nombre de faces d’une surface polyédrique. Retourne null pour les géométries non polyédriques. C’est un alias de
ST_NumGeometries pour supporter le nommage MM. Il est plus rapide d’utiliser ST_NumGeometries si vous ne vous souciez
pas de la convention MM.
Disponibilité : 2.0.0
Cette méthode implémente la spécification OGC Simple Features Implementation Specification for SQL 1.1.
Exemples
Voir aussi
ST_GeomFromEWKT, ST_NumGeometries
7.4.33 ST_NumPoints
Synopsis
Description
Retourne le nombre de points dans une ST_LineString ou ST_CircularString. Avant la version 1.4, cette fonction ne fonctionnait
qu’avec les lignes, comme l’indiquent les spécifications. A partir de la version 1.4, il s’agit d’un alias de ST_NPoints qui renvoie
le nombre de sommets, et pas seulement pour les lignes. Envisagez d’utiliser ST_NPoints à la place, qui est polyvalent et
fonctionne avec de nombreux types de géométrie.
Cette méthode implémente la spécification OGC Simple Features Implementation Specification for SQL 1.1.
Exemples
Voir aussi
ST_NPoints
7.4.34 ST_PatchN
Synopsis
Description
Renvoie la Nième géométrie (face) basée sur 1 si la géométrie est une POLYHEDRALSURFACE ou une POLYHEDRAL-
SURFACEM. Sinon, elle renvoie NULL. Cette fonction renvoie la même réponse que ST_GeometryN pour PolyhedralSurfaces.
L’utilisation de ST_GeometryN est plus rapide.
Note
L’indice est basé sur 1.
Note
Si vous voulez extraire tous les éléments d’une géométrie, ST_Dump est plus efficace.
Disponibilité : 2.0.0
Exemples
geomewkt
---+-----------------------------------------
POLYGON((0 0 0,0 1 0,1 1 0,1 0 0,0 0 0))
Voir aussi
7.4.35 ST_PointN
ST_PointN — Renvoie le Nième point de la première LineString ou LineString circulaire d’une géométrie.
Manuel PostGIS 3.4.0dev 138 / 870
Synopsis
Description
Renvoie le Nième point d’une ligne ou d’une ligne circulaire dans la géométrie. Les valeurs négatives sont comptées à rebours à
partir de la fin de la LineString, de sorte que -1 est le dernier point. Renvoie NULL s’il n’y a pas de ligne dans la géométrie.
Note
L’index est basé sur 1 comme pour les spécifications de l’OGC depuis la version 0.8.0. L’indexation à rebours (index
négatif) n’est pas prévue dans les spécifications de l’OGC. Les versions précédentes l’ont implémentée en la basant
sur 0.
Note
Si vous souhaitez obtenir le Nième point de chaque ligne dans une multiligne, utilisez ST_Dump en conjonction avec
ST_Dump
Cette méthode implémente la spécification OGC Simple Features Implementation Specification for SQL 1.1.
Note
Modifié : la version 2.0.0 ne fonctionne plus avec les multi-lignes à géométrie unique. Dans les anciennes versions de
PostGIS, une multi-ligne d’une seule ligne fonctionnait parfaitement avec cette fonction et renvoyait le point de départ.
Dans la version 2.0.0, elle renvoie simplement NULL comme n’importe quelle autre multi-ligne.
Modifié : 2.3.0 : indexation négative disponible (-1 est le dernier point)
Exemples
st_astext
------------
POINT(0 0)
POINT(1 1)
POINT(2 2)
(3 rows)
st_astext
------------
POINT(3 2)
(1 row)
SELECT ST_AsText(f)
FROM ST_GeomFromText('LINESTRING(0 0 0, 1 1 1, 2 2 2)') AS g
,ST_PointN(g, -2) AS f; -- 1 based index
st_astext
-----------------
POINT Z (1 1 1)
(1 row)
Voir aussi
ST_NPoints
7.4.36 ST_Points
Synopsis
Description
Renvoie un MultiPoint contenant toutes les coordonnées d’une géométrie. Les points en double sont conservés, y compris les
points de départ et d’arrivée des géométries en anneau. (Si vous le souhaitez, les points en double peuvent être supprimés en
appelant ST_RemoveRepeatedPoints sur le résultat).
Pour obtenir des informations sur la position de chaque coordonnée dans la géométrie parente, utilisez ST_DumpPoints.
Les coordonnées M et Z sont conservées si elles sont présentes.
Exemples
--result
MULTIPOINT Z ((30 10 4),(10 30 5),(40 40 6),(30 10 4))
Voir aussi
ST_RemoveRepeatedPoints, ST_DumpPoints
Manuel PostGIS 3.4.0dev 140 / 870
7.4.37 ST_StartPoint
Synopsis
Description
Renvoie le premier point d’une géométrie LINESTRING ou CIRCULARLINESTRING comme un POINT. Renvoie NULL si
l’entrée n’est pas une LINESTRING ou CIRCULARLINESTRING.
Note
Amélioré : 3.2.0 renvoie un point pour toutes les géométries. Le comportement précédent renvoyait NULL si l’entrée
n’était pas une LineString.
Modifié : 2.0.0 ne fonctionne plus avec les MultiLineStrings à géométrie unique. Dans les anciennes versions de Post-
GIS, une MultiLineString à géométrie unique fonctionnait sans problème avec cette fonction et renvoyait le point de
départ. Dans la version 2.0.0, elle renvoie simplement NULL comme toute autre MultiLineString. L’ancien comporte-
ment était une fonctionnalité non documentée, mais les personnes qui supposaient que leurs données étaient stockées
en tant que LINESTRING peuvent voir ces données retourner NULL dans la version 2.0.0.
Exemples
Le point de départ d’une géométrie qui n’est pas une LineString est NULL
SELECT ST_StartPoint('POINT(0 1)'::geometry) IS NULL AS is_null;
is_null
----------
t
Voir aussi
ST_EndPoint, ST_PointN
7.4.38 ST_Summary
Synopsis
Description
Cette fonction prend en charge les triangles et les réseaux irréguliers triangulés (TIN).
Disponibilité : 1.2.2
Amélioré : la version 2.0.0 a ajouté la prise en charge du type geography
Amélioré : 2.1.0 Indicateur S pour indiquer si le système de référence spatiale est connu
Amélioré : 2.2.0 Ajout de la prise en charge des TIN et des courbes
Exemples
;
geog_line | geom_poly
-------------------------------- +--------------------------
LineString[ZBGS] with 2 points | Polygon[ZBS] with 1 rings
: ring 0 has 5 points
:
(1 row)
Voir aussi
7.4.39 ST_X
Synopsis
Description
Renvoie la coordonnée X du point, ou NULL si elle n’est pas disponible. L’entrée doit être un point.
Note
Pour obtenir les valeurs X minimale et maximale des coordonnées géométriques, utilisez les fonctions ST_XMin et
ST_XMax.
Exemples
Voir aussi
7.4.40 ST_Y
Synopsis
Description
Renvoie la coordonnée Y du point, ou NULL si elle n’est pas disponible. L’entrée doit être un point.
Note
Pour obtenir les valeurs minimale et maximale en Y des coordonnées géométriques, utilisez les fonctions ST_YMin et
ST_YMax.
Cette méthode implémente la spécification OGC Simple Features Implementation Specification for SQL 1.1.
Exemples
Voir aussi
7.4.41 ST_Z
Synopsis
Description
Renvoie la coordonnée Z du point, ou NULL si elle n’est pas disponible. L’entrée doit être un point.
Note
Pour obtenir les valeurs minimale et maximale de Z des coordonnées géométriques, utilisez les fonctions ST_ZMin et
ST_ZMax.
Exemples
Voir aussi
7.4.42 ST_Zmflag
Synopsis
Description
Exemples
Voir aussi
7.5.1 ST_AddPoint
Synopsis
Description
Ajoute un point à une LineString avant l’index position (en utilisant un index basé sur 0). Si le paramètre position est omis
ou vaut -1, le point est ajouté à la fin de la LineString.
Disponibilité : 1.1.0
Exemples
st_asewkt
----------
LINESTRING(0 0 1,1 1 1,1 2 3)
Manuel PostGIS 3.4.0dev 146 / 870
Garantir que toutes les lignes d’une table sont fermées en ajoutant le point de départ de chaque ligne à la fin de la ligne uniquement
pour celles qui ne sont pas fermées.
UPDATE sometable
SET geom = ST_AddPoint(geom, ST_StartPoint(geom))
FROM sometable
WHERE ST_IsClosed(geom) = false;
Voir aussi
ST_RemovePoint, ST_SetPoint
7.5.2 ST_CollectionExtract
ST_CollectionExtract — Pour une collection de géométries spécifiée, renvoie une multi-géométrie contenant uniquement des
éléments d’un type spécifié.
Synopsis
Description
• 1 == POINT
• 2 == LINESTRING
• 3 == POLYGON
Pour les entrées de géométrie atomique, la géométrie est restituée inchangée si le type d’entrée correspond au type demandé.
Sinon, le résultat est une géométrie VIDE du type spécifié. Si nécessaire, ces géométries peuvent être converties en géométries
multiples en utilisant ST_Multi.
Warning
La validité des résultats MultiPolygon n’est pas vérifiée. Si les composants du polygone sont adjacents ou se
chevauchent, le résultat ne sera pas valide. (Par exemple, cela peut se produire lorsque cette fonction est appliquée à
un résultat ST_Split). Cette situation peut être vérifiée avec ST_IsValid et réparée avec ST_MakeValid.
Disponibilité : 1.5.0
Note
Avant la version 1.5.3, cette fonction renvoyait les entrées atomiques inchangées, quel que soit leur type. Dans la
version 1.5.3, les géométries simples non correspondantes renvoyaient un résultat NULL. Dans la version 2.0.0, les
géométries simples non correspondantes renvoient un résultat VIDE du type demandé.
Manuel PostGIS 3.4.0dev 147 / 870
Exemples
Voir aussi
7.5.3 ST_CollectionHomogenize
Synopsis
Description
Pour une collection de géométries spécifiée, renvoie la représentation la plus simple du contenu.
• Les collections homogènes (uniformes) sont renvoyées sous la forme de la multi-géométrie appropriée.
• Les collections hétérogènes (mixtes) sont écrasées en une seule GeometryCollection.
• Les collections contenant un seul élément atomique sont renvoyées sous la forme de cet élément.
• Les géométries atomiques sont renvoyées telles quelles. Si nécessaire, elles peuvent être converties en une géométrie multiple
en utilisant ST_Multi.
Manuel PostGIS 3.4.0dev 148 / 870
Warning
Cette fonction ne garantit pas la validité du résultat. En particulier, une collection contenant des polygones adjacents
ou se chevauchant créera un MultiPolygon invalide. Cette situation peut être vérifiée avec ST_IsValid et réparée avec
ST_MakeValid.
Disponibilité : 2.0.0
Exemples
st_astext
------------
POINT(0 0)
st_astext
------------
POINT(0 0)
st_astext
---------------------
MULTIPOINT((0 0),(1 1))
st_astext
---------------------
GEOMETRYCOLLECTION(POINT(0 0),LINESTRING(1 1,2 2))
st_astext
---------------------
MULTIPOLYGON(((10 50,50 50,50 10,10 10,10 50)),((90 50,90 10,50 10,50 50,90 50)))
Voir aussi
7.5.4 ST_CurveToLine
ST_CurveToLine — Convertit une géométrie contenant des courbes en une géométrie linéaire.
Synopsis
Description
L’argument ’flags’ est un champ de bits. 0 par défaut. Les bits supportés sont :
• 2 : Conserver l’angle, évite de réduire les angles (longueur des segments) lors de la production d’une sortie symétrique. N’a
aucun effet lorsque l’indicateur de symétrie est désactivé.
Disponibilité : 1.3.0
Amélioration : 2.4.0 a ajouté la prise en charge de la tolérance de l’écart maximal et de l’angle maximal, ainsi que de la sortie
symétrique.
Amélioration : la version 3.0.0 a mis en place un nombre minimum de segments par arc linéarisé afin d’éviter une rupture
topologique.
Cette méthode implémente la spécification OGC Simple Features Implementation Specification for SQL 1.1.
Exemples
--Result --
LINESTRING(220268 150415,220269.95064912 150416.539364228,220271.823415575 ←-
150418.17258804,220273.613787707 150419.895736857,
220275.317452352 150421.704659462,220276.930305234 150423.594998003,220278.448460847 ←-
150425.562198489,
Manuel PostGIS 3.4.0dev 150 / 870
--3d example
SELECT ST_AsEWKT(ST_CurveToLine(ST_GeomFromEWKT('CIRCULARSTRING(220268 150415 1,220227 ←-
150505 2,220227 150406 3)')));
Output
------
LINESTRING(220268 150415 1,220269.95064912 150416.539364228 1.0181172856673,
220271.823415575 150418.17258804 1.03623457133459,220273.613787707 150419.895736857 ←-
1.05435185700189,....AD INFINITUM ....
220225.586657991 150406.324522731 1.32611114201132,220227 150406 3)
Voir aussi
ST_LineToCurve
7.5.5 ST_Scroll
Synopsis
Description
Modifie le point de départ/fin d’une LineString fermée en fonction du sommet point donné.
Disponibilité : 3.2.0
Exemples
st_asewkt
----------
SRID=4326;LINESTRING(5 5 4 2,0 0 0 1,10 0 2 0,5 5 4 2)
Voir aussi
ST_Normalize
7.5.6 ST_FlipCoordinates
ST_FlipCoordinates — Renvoie une version d’une géométrie dont les axes X et Y sont inversés.
Synopsis
Description
Renvoie une version de la géométrie donnée avec les axes X et Y inversés. Utile pour fixer les géométries qui contiennent des
coordonnées exprimées en latitude/longitude (Y,X).
Disponibilité : 2.0.0
Cette fonction prend en charge les triangles et les réseaux irréguliers triangulés (TIN).
Exemple
Voir aussi
ST_SwapOrdinates
Manuel PostGIS 3.4.0dev 153 / 870
7.5.7 ST_Force2D
Synopsis
Description
Force les géométries à passer en "mode bidimensionnel", de sorte que toutes les représentations de sortie n’auront que les
coordonnées X et Y. Ceci est utile pour forcer une sortie conforme à l’OGC (puisque l’OGC ne spécifie que des géométries à 2
dimensions).
Amélioration : 2.0.0 introduction du support des surfaces polyédriques.
Modifié : 2.1.0. Jusqu’à la version 2.0.x, elle s’appelait ST_Force_2D.
Exemples
SELECT ST_AsEWKT(ST_Force2D(ST_GeomFromEWKT('CIRCULARSTRING(1 1 2, 2 3 2, 4 5 2, 6 7 2, 5 6 ←-
2)')));
st_asewkt
-------------------------------------
CIRCULARSTRING(1 1,2 3,4 5,6 7,5 6)
SELECT ST_AsEWKT(ST_Force2D('POLYGON((0 0 2,0 5 2,5 0 2,0 0 2),(1 1 2,3 1 2,1 3 2,1 1 2)) ←-
'));
st_asewkt
----------------------------------------------
POLYGON((0 0,0 5,5 0,0 0),(1 1,3 1,1 3,1 1))
Voir aussi
ST_Force3D
7.5.8 ST_Force3D
ST_Force3D — Force les géométries en mode XYZ. Il s’agit d’un alias de ST_Force3DZ.
Synopsis
Description
Force les géométries en mode XYZ. Il s’agit d’un alias de ST_Force3DZ. Si une géométrie n’a pas de composante Z, une Zvalue
coordonnée Z est ajoutée.
Amélioration : 2.0.0 introduction du support des surfaces polyédriques.
Modifié : 2.1.0. Jusqu’à la version 2.0.x, elle s’appelait ST_Force_3D.
Modifié : 3.1.0. Ajout de la prise en charge pour pouvoir passer une valeur Z non nulle.
Exemples
SELECT ST_AsEWKT(ST_Force3D('POLYGON((0 0,0 5,5 0,0 0),(1 1,3 1,1 3,1 1))'));
st_asewkt
--------------------------------------------------------------
POLYGON((0 0 0,0 5 0,5 0 0,0 0 0),(1 1 0,3 1 0,1 3 0,1 1 0))
Voir aussi
7.5.9 ST_Force3DZ
Synopsis
Description
Force les géométries à passer en mode XYZ. Si une géométrie n’a pas de composante Z, une Zvalue coordonnée Z est ajoutée.
Amélioration : 2.0.0 introduction du support des surfaces polyédriques.
Modifié : 2.1.0. Jusqu’à la version 2.0.x, elle s’appelait ST_Force_3DZ.
Modifié : 3.1.0. Ajout de la prise en charge pour pouvoir passer une valeur Z non nulle.
Exemples
SELECT ST_AsEWKT(ST_Force3DZ('POLYGON((0 0,0 5,5 0,0 0),(1 1,3 1,1 3,1 1))'));
st_asewkt
--------------------------------------------------------------
POLYGON((0 0 0,0 5 0,5 0 0,0 0 0),(1 1 0,3 1 0,1 3 0,1 1 0))
Voir aussi
7.5.10 ST_Force3DM
Synopsis
Description
Force les géométries à passer en mode XYM. Si une géométrie n’a pas de composante M, une Mvalue coordonnée M est ajoutée.
Si la géométrie a une composante Z, la coordonnée Z est supprimée
Modifié : 2.1.0. Jusqu’à la version 2.0.x, elle s’appelait ST_Force_3DM.
Modifié : 3.1.0. Ajout de la prise en charge de pouvoir passer une valeur M non nulle.
Exemples
SELECT ST_AsEWKT(ST_Force3DM('POLYGON((0 0 1,0 5 1,5 0 1,0 0 1),(1 1 1,3 1 1,1 3 1,1 1 1)) ←-
'));
st_asewkt
---------------------------------------------------------------
POLYGONM((0 0 0,0 5 0,5 0 0,0 0 0),(1 1 0,3 1 0,1 3 0,1 1 0))
Manuel PostGIS 3.4.0dev 156 / 870
Voir aussi
7.5.11 ST_Force4D
Synopsis
Description
Force les géométries en mode XYZM. Zvalue et Mvalue sont ajoutés pour les dimensions Z et M manquantes, respectivement.
Modifié : 2.1.0. Jusqu’à la version 2.0.x, elle s’appelait ST_Force_4D.
Modifié : 3.1.0. Ajout de la prise en charge de pouvoir passer des valeurs Z et M non nulles.
Exemples
st_asewkt
--------------------------------------------------------------------------------------
MULTILINESTRING((0 0 0 1,0 5 0 2,5 0 0 3,0 0 0 4),(1 1 0 1,3 1 0 1,1 3 0 1,1 1 0 1))
Voir aussi
7.5.12 ST_ForcePolygonCCW
ST_ForcePolygonCCW — Oriente tous les anneaux extérieurs dans le sens inverse des aiguilles d’une montre et tous les anneaux
intérieurs dans le sens des aiguilles d’une montre.
Manuel PostGIS 3.4.0dev 157 / 870
Synopsis
Description
Force les (Multi)Polygones à utiliser une orientation dans le sens inverse des aiguilles d’une montre pour leur anneau extérieur,
et une orientation dans le sens des aiguilles d’une montre pour leurs anneaux intérieurs. Les géométries non polygonales sont
renvoyées inchangées.
Disponibilité : 2.4.0
Voir aussi
7.5.13 ST_ForceCollection
Synopsis
Description
Convertit la géométrie en une GEOMETRYCOLLECTION. Ceci est utile pour simplifier la représentation WKB.
Amélioration : 2.0.0 introduction du support des surfaces polyédriques.
Disponibilité : 1.2.2, avant la version 1.3.4 cette fonction plante avec les courbes. Ceci est corrigé dans la version 1.3.4+
Modifié : 2.1.0. Jusqu’à la version 2.0.x, cette fonction était appelée ST_Force_Collection.
Exemples
st_asewkt
----------------------------------------------------------------------------------
GEOMETRYCOLLECTION(POLYGON((0 0 1,0 5 1,5 0 1,0 0 1),(1 1 1,3 1 1,1 3 1,1 1 1)))
Manuel PostGIS 3.4.0dev 158 / 870
-- POLYHEDRAL example --
SELECT ST_AsEWKT(ST_ForceCollection('POLYHEDRALSURFACE(((0 0 0,0 0 1,0 1 1,0 1 0,0 0 0)),
((0 0 0,0 1 0,1 1 0,1 0 0,0 0 0)),
((0 0 0,1 0 0,1 0 1,0 0 1,0 0 0)),
((1 1 0,1 1 1,1 0 1,1 0 0,1 1 0)),
((0 1 0,0 1 1,1 1 1,1 1 0,0 1 0)),
((0 0 1,1 0 1,1 1 1,0 1 1,0 0 1)))'))
st_asewkt
----------------------------------------------------------------------------------
GEOMETRYCOLLECTION(
POLYGON((0 0 0,0 0 1,0 1 1,0 1 0,0 0 0)),
POLYGON((0 0 0,0 1 0,1 1 0,1 0 0,0 0 0)),
POLYGON((0 0 0,1 0 0,1 0 1,0 0 1,0 0 0)),
POLYGON((1 1 0,1 1 1,1 0 1,1 0 0,1 1 0)),
POLYGON((0 1 0,0 1 1,1 1 1,1 1 0,0 1 0)),
POLYGON((0 0 1,1 0 1,1 1 1,0 1 1,0 0 1))
)
Voir aussi
7.5.14 ST_ForcePolygonCW
ST_ForcePolygonCW — Oriente tous les anneaux extérieurs dans le sens des aiguilles d’une montre et tous les anneaux intérieurs
dans le sens inverse des aiguilles d’une montre.
Synopsis
Description
Force les (Multi)Polygones à utiliser une orientation dans le sens des aiguilles d’une montre pour leur anneau extérieur, et une
orientation dans le sens inverse des aiguilles d’une montre pour leurs anneaux intérieurs. Les géométries non polygonales sont
renvoyées inchangées.
Disponibilité : 2.4.0
Voir aussi
7.5.15 ST_ForceSFS
ST_ForceSFS — Forcer les géométries à utiliser uniquement les types de géométrie SFS 1.1.
Synopsis
Description
Cette fonction prend en charge les triangles et les réseaux irréguliers triangulés (TIN).
7.5.16 ST_ForceRHR
ST_ForceRHR — Force l’orientation des sommets d’un polygone à suivre la règle de la main droite.
Synopsis
Description
Force l’orientation des sommets d’un polygone à suivre la règle de la main droite, dans laquelle la zone délimitée par le polygone
se trouve à droite de la limite. En particulier, l’anneau extérieur est orienté dans le sens des aiguilles d’une montre et les anneaux
intérieurs dans le sens inverse. Cette fonction est synonyme de ST_ForcePolygonCW
Note
La définition ci-dessus de la règle de la main droite est en conflit avec des définitions utilisées dans d’autres contextes.
Pour éviter toute confusion, il est recommandé d’utiliser ST_ForcePolygonCW.
Exemples
SELECT ST_AsEWKT(
ST_ForceRHR(
'POLYGON((0 0 2, 5 0 2, 0 5 2, 0 0 2),(1 1 2, 1 3 2, 3 1 2, 1 1 2))'
)
);
st_asewkt
--------------------------------------------------------------
POLYGON((0 0 2,0 5 2,5 0 2,0 0 2),(1 1 2,3 1 2,1 3 2,1 1 2))
(1 row)
Voir aussi
7.5.17 ST_ForceCurve
ST_ForceCurve — Retransformation d’une géométrie dans son type de courbure, le cas échéant.
Synopsis
Description
Transforme une géométrie en sa représentation courbe, le cas échéant : les lignes deviennent des courbes composées, les multi-
lignes deviennent des multicourbes, les polygones deviennent des polygones courbes, les multipolygones deviennent des multi-
surfaces. Si la géométrie en entrée est déjà une représentation courbe, le résultat est identique à celui de l’entrée.
Disponibilité : 2.2.0
Exemples
SELECT ST_AsText(
ST_ForceCurve(
'POLYGON((0 0 2, 5 0 2, 0 5 2, 0 0 2),(1 1 2, 1 3 2, 3 1 2, 1 1 2))'::geometry
)
);
st_astext
----------------------------------------------------------------------
CURVEPOLYGON Z ((0 0 2,5 0 2,0 5 2,0 0 2),(1 1 2,1 3 2,3 1 2,1 1 2))
(1 row)
Voir aussi
ST_LineToCurve
Manuel PostGIS 3.4.0dev 161 / 870
7.5.18 ST_LineToCurve
Synopsis
Description
Convertit les lignes et polygones simples en lignes circulaires et polygones courbes. Notez qu’il faut beaucoup moins de points
pour décrire l’équivalent courbe.
Note
Si l’entrée LINESTRING/POLYGON n’est pas suffisamment courbée pour représenter clairement une courbe, la fonc-
tion renverra la même géométrie d’entrée.
Disponibilité : 1.3.0
Exemples
-- 2D Example
SELECT ST_AsText(ST_LineToCurve(foo.geom)) As curvedastext,ST_AsText(foo.geom) As ←-
non_curvedastext
FROM (SELECT ST_Buffer('POINT(1 3)'::geometry, 3) As geom) As foo;
curvedatext non_curvedastext
--------------------------------------------------------------------|--------------------------------
--3D example
SELECT ST_AsText(ST_LineToCurve(geom)) As curved, ST_AsText(geom) AS not_curved
FROM (SELECT ST_Translate(ST_Force3D(ST_Boundary(ST_Buffer(ST_Point(1,3), 2,2))),0,0,3) AS ←-
geom) AS foo;
curved | not_curved
------------------------------------------------------+----------------------------------------------
Voir aussi
ST_CurveToLine
7.5.19 ST_Multi
Synopsis
Description
Renvoie la géométrie sous la forme d’une collection de géométries MULTI*. Si la géométrie est déjà une collection, elle est
renvoyée inchangée.
Exemples
Voir aussi
ST_AsText
7.5.20 ST_LineExtend
ST_LineExtend — Returns a line with the last and first segments extended the specified distance(s).
Manuel PostGIS 3.4.0dev 163 / 870
Synopsis
Description
Returns a line with the last and first segments extended the specified distance(s). Distance of zero carries out no extension.
Only non-negative distances are allowed. The first (and last) two distinct points in a line are used to determine the direction of
projection, duplicate points are ignored.
Availability: 3.4.0
Voir aussi
ST_LocateAlong, ST_Project
7.5.21 ST_Normalize
Synopsis
Description
Renvoie la géométrie sous sa forme normalisée/canonique. Peut réorganiser les sommets dans les anneaux de polygones, les
anneaux dans un polygone, les éléments dans un complexe multi-géométrique.
La plupart du temps, il n’est utile qu’à des fins de test (comparaison des résultats attendus et obtenus).
Disponibilité : 2.3.0
Exemples
SELECT ST_AsText(ST_Normalize(ST_GeomFromText(
'GEOMETRYCOLLECTION(
POINT(2 3),
MULTILINESTRING((0 0, 1 1),(2 2, 3 3)),
POLYGON(
(0 10,0 0,10 0,10 10,0 10),
(4 2,2 2,2 4,4 4,4 2),
(6 8,8 8,8 6,6 6,6 8)
)
)'
)));
st_astext
Manuel PostGIS 3.4.0dev 164 / 870
-----------------------------------------------------------------------------------------------------
GEOMETRYCOLLECTION(POLYGON((0 0,0 10,10 10,10 0,0 0),(6 6,8 6,8 8,6 8,6 6),(2 2,4 2,4 4,2 ←-
4,2 2)),MULTILINESTRING((2 2,3 3),(0 0,1 1)),POINT(2 3))
(1 row)
Voir aussi
ST_Equals,
7.5.22 ST_Project
ST_Project — Returns a point projected from a start point by a distance and bearing (azimuth).
Synopsis
Description
Returns a point projected from a point along a geodesic using a given distance and azimuth (bearing). This is known as the direct
geodesic problem.
The two-point version uses the path from the first to the second point to implicitly define the azimuth and uses the distance as
before.
The distance is given in meters. Negative values are supported.
The azimuth (also known as heading or bearing) is given in radians. It is measured clockwise from true north.
Negative azimuth values and values greater than 2π (360 degrees) are supported.
Disponibilité : 2.0.0
Enhanced: 2.4.0 Allow negative distance and non-normalized azimuth.
Enhanced: 3.4.0 Allow geometry arguments and two-point form omitting azimuth.
Voir aussi
7.5.23 ST_QuantizeCoordinates
Synopsis
geometry ST_QuantizeCoordinates ( geometry g , int prec_x , int prec_y , int prec_z , int prec_m );
Description
ST_QuantizeCoordinates détermine le nombre de bits (N) requis pour représenter une valeur de coordonnées avec un
nombre spécifié de chiffres après la virgule, puis met à zéro tous les bits sauf les N les plus significatifs. La valeur de coor-
données résultante sera toujours arrondie à la valeur d’origine, mais sa compressibilité sera améliorée. Il peut en résulter une
réduction significative de l’utilisation du disque, à condition que la colonne géométrique utilise un type de stockage compress-
ible. La fonction permet de spécifier un nombre différent de chiffres après la virgule dans chaque dimension ; les dimensions
non spécifiées sont supposées avoir la précision de la dimension x. Les chiffres négatifs sont interprétés comme des chiffres à
gauche de la virgule (c’est-à-dire que prec_x=-2 conservera les valeurs des coordonnées à la centaine la plus proche).
Les coordonnées produites par ST_QuantizeCoordinates sont indépendantes de la géométrie qui contient ces coordonnées
et de la position relative de ces coordonnées dans la géométrie. Par conséquent, les relations topologiques existantes entre les
géométries ne sont pas affectées par l’utilisation de cette fonction. La fonction peut produire une géométrie non valide lorsqu’elle
est appelée avec un nombre de chiffres inférieur à la précision intrinsèque de la géométrie.
Disponibilité : 2.5.0
Informations techniques
PostGIS stocke toutes les valeurs de coordonnées sous forme d’entiers à virgule flottante en double précision, qui peuvent
représenter de manière fiable 15 chiffres significatifs. Cependant, PostGIS peut être utilisé pour gérer des données qui ont
intrinsèquement moins de 15 chiffres significatifs. C’est le cas des données TIGER, qui sont fournies sous forme de coordonnées
géographiques avec six chiffres de précision après la virgule (ce qui ne nécessite que neuf chiffres significatifs pour la longitude
et huit chiffres significatifs pour la latitude)
Lorsque 15 chiffres significatifs sont disponibles, il existe de nombreuses représentations possibles d’un nombre à 9 chiffres
significatifs. Un nombre à virgule flottante en double précision utilise 52 bits explicites pour représenter le significand (mantissa)
de la coordonnée. Seuls 30 bits sont nécessaires pour représenter un mantissa de 9 chiffres significatifs, ce qui laisse 22 bits non
significatifs ; nous pouvons leur donner la valeur que nous voulons et obtenir un nombre qui s’arrondit à notre valeur d’entrée. Par
exemple, la valeur 100,123456 peut être représentée par les nombres à virgule flottante les plus proches de 100,123456000000,
100,123456000001 et 100,123456432199. Tous sont également valables, en ce sens que ST_AsText(geom, 6) renverra le
même résultat avec n’importe laquelle de ces entrées. Comme nous pouvons fixer ces bits à n’importe quelle valeur, ST_QuantizeCoor
fixe les 22 bits non significatifs à zéro. Pour une longue séquence de coordonnées, cela crée un motif de blocs de zéros consécutifs
qui est compressé par PostgreSQL de manière plus efficace.
Note
Seule la taille sur disque de la géométrie est potentiellement affectée par ST_QuantizeCoordinates.
ST_MemSize, qui indique l’utilisation en mémoire de la géométrie, renverra la même valeur quel que soit l’espace
disque utilisé par une géométrie.
Manuel PostGIS 3.4.0dev 166 / 870
Exemples
15 | 01010000005f9a72083cdd5e405f9a72083cdd5e40 | POINT(123.456789123456 ←-
123.456789123456)
14 | 01010000005f9a72083cdd5e405f9a72083cdd5e40 | POINT(123.456789123456 ←-
123.456789123456)
13 | 01010000005f9a72083cdd5e405f9a72083cdd5e40 | POINT(123.456789123456 ←-
123.456789123456)
12 | 01010000005c9a72083cdd5e405c9a72083cdd5e40 | POINT(123.456789123456 ←-
123.456789123456)
11 | 0101000000409a72083cdd5e40409a72083cdd5e40 | POINT(123.456789123456 ←-
123.456789123456)
10 | 0101000000009a72083cdd5e40009a72083cdd5e40 | POINT(123.456789123455 ←-
123.456789123455)
9 | 0101000000009072083cdd5e40009072083cdd5e40 | POINT(123.456789123418 ←-
123.456789123418)
8 | 0101000000008072083cdd5e40008072083cdd5e40 | POINT(123.45678912336 ←-
123.45678912336)
7 | 0101000000000070083cdd5e40000070083cdd5e40 | POINT(123.456789121032 ←-
123.456789121032)
6 | 0101000000000040083cdd5e40000040083cdd5e40 | POINT(123.456789076328 ←-
123.456789076328)
5 | 0101000000000000083cdd5e40000000083cdd5e40 | POINT(123.456789016724 ←-
123.456789016724)
4 | 0101000000000000003cdd5e40000000003cdd5e40 | POINT(123.456787109375 ←-
123.456787109375)
3 | 0101000000000000003cdd5e40000000003cdd5e40 | POINT(123.456787109375 ←-
123.456787109375)
2 | 01010000000000000038dd5e400000000038dd5e40 | POINT(123.45654296875 ←-
123.45654296875)
1 | 01010000000000000000dd5e400000000000dd5e40 | POINT(123.453125 123.453125)
0 | 01010000000000000000dc5e400000000000dc5e40 | POINT(123.4375 123.4375)
-1 | 01010000000000000000c05e400000000000c05e40 | POINT(123 123)
-2 | 01010000000000000000005e400000000000005e40 | POINT(120 120)
-3 | 010100000000000000000058400000000000005840 | POINT(96 96)
-4 | 010100000000000000000058400000000000005840 | POINT(96 96)
-5 | 010100000000000000000058400000000000005840 | POINT(96 96)
-6 | 010100000000000000000058400000000000005840 | POINT(96 96)
-7 | 010100000000000000000058400000000000005840 | POINT(96 96)
-8 | 010100000000000000000058400000000000005840 | POINT(96 96)
-9 | 010100000000000000000058400000000000005840 | POINT(96 96)
-10 | 010100000000000000000058400000000000005840 | POINT(96 96)
-11 | 010100000000000000000058400000000000005840 | POINT(96 96)
-12 | 010100000000000000000058400000000000005840 | POINT(96 96)
-13 | 010100000000000000000058400000000000005840 | POINT(96 96)
-14 | 010100000000000000000058400000000000005840 | POINT(96 96)
Manuel PostGIS 3.4.0dev 167 / 870
Voir aussi
ST_SnapToGrid
7.5.24 ST_RemovePoint
Synopsis
Description
Supprime un point d’une LineString, en fonction de son index (basé sur 0). Utile pour transformer une ligne fermée (anneau) en
une ligne ouverte.
Amélioration : 3.2.0
Disponibilité : 1.1.0
Exemples
Garantit qu’aucune ligne n’est fermée en supprimant le point final des lignes fermées (anneaux). Suppose que geom est de type
LINESTRING
UPDATE sometable
SET geom = ST_RemovePoint(geom, ST_NPoints(geom) - 1)
FROM sometable
WHERE ST_IsClosed(geom);
Voir aussi
7.5.25 ST_RemoveRepeatedPoints
ST_RemoveRepeatedPoints — Renvoie une version d’une géométrie dont les points en double ont été supprimés.
Synopsis
Description
Renvoie une version de la géométrie donnée dont les points consécutifs en double ont été supprimés. La fonction ne traite que
les (Multi)LineStrings, les (Multi)Polygons et les MultiPoints, mais elle peut être appelée avec n’importe quel type de géométrie.
Les éléments des collections de géométries sont traités individuellement. Les extrémités des lignes sont préservées.
Si le paramètre tolérance est fourni, les sommets situés dans la distance de tolérance les uns des autres sont considérés comme
des doublons.
Amélioration : 3.2.0
Disponibilité : 2.2.0
Exemples
Voir aussi
ST_Simplify
7.5.26 ST_Reverse
Synopsis
Description
Peut être utilisé sur n’importe quelle géométrie et inverse l’ordre des sommets.
Amélioration : la prise en charge des courbes a été introduite dans la version 2.4.0.
Exemples
7.5.27 ST_Segmentize
ST_Segmentize — Renvoie une geometry/geography modifiée dont aucun segment ne dépasse une distance donnée.
Synopsis
Description
Renvoie une geometry/geography modifiée dont aucun segment n’est plus long que max_segment_length. La longueur est
calculée en 2D. Les segments sont toujours divisés en sous-segments de même longueur.
• Pour la géométrie, la longueur maximale est exprimée dans les unités du système de référence spatiale.
• En géographie, la longueur maximale est exprimée en mètres. Les distances sont calculées sur la sphère. Les sommets ajoutés
sont créés le long des arcs de grands cercles sphériques définis par les extrémités des segments.
Note
Cette opération ne fait que raccourcir les segments longs. Elle n’allonge pas les segments plus courts que la longueur
maximale.
Warning
Pour les entrées contenant de longs segments, la spécification d’un max_segment_length relativement court peut
entraîner l’ajout d’un très grand nombre de sommets. Cela peut se produire involontairement si l’argument est spécifié
accidentellement comme un nombre de segments, plutôt que comme une longueur maximale.
Manuel PostGIS 3.4.0dev 170 / 870
Disponibilité : 1.2.2
Amélioration : 3.0.0 La segmentation de géométrie produit désormais des sous-segments de longueur égale
Amélioration : 2.3.0 La segmentation d’objets geography produit désormais des sous-segments de longueur égale
Amélioration : la prise en charge des objets de type geography a été introduite dans la version 2.1.0.
Modifié : 2.1.0 Suite à l’introduction de la prise en charge du type geography, l’utilisation ST_Segmentize(’LINESTRING(1
2, 3 4)’, 0.5) provoque une erreur de fonction ambiguë. L’entrée doit être correctement typée en tant que geometry ou ge-
ography. Utilisez ST_GeomFromText, ST_GeogFromText ou un cast vers le type requis (par exemple, ST_Segmentize(’LINESTRI
2, 3 4)’::geometry, 0.5) )
Exemples
La segmentation d’une ligne. Les segments longs sont divisés de manière égale et les segments courts ne sont pas divisés.
SELECT ST_AsText(ST_Segmentize(
'MULTILINESTRING((0 0, 0 1, 0 9),(1 10, 1 18))'::geometry,
5 ) );
---------------------------------------------------
MULTILINESTRING((0 0,0 1,0 5,0 9),(1 10,1 14,1 18))
Segmentation d’une ligne géographique, en utilisant une longueur de segment maximale de 2000 kilomètres. Les sommets sont
ajoutés le long de l’arc de grand cercle reliant les points d’extrémité.
SELECT ST_AsText(
ST_Segmentize(('LINESTRING (0 0, 60 60)'::geography), 2000000));
-------------------------------------------------------------
LINESTRING(0 0,4.252632294621186 8.43596525986862,8.69579947419404 ←-
16.824093489701564,13.550465473227048 25.107950473646188,19.1066053508691 ←-
33.21091076089908,25.779290201459894 41.01711439406505,34.188839517966954 ←-
48.337222885886,45.238153936612264 54.84733442373889,60 60)
Voir aussi
ST_LineSubstring
7.5.28 ST_SetPoint
Synopsis
Description
Remplace le point N de la ligne par le point donné. L’index est basé sur 0. Les index négatifs sont comptés à rebours, de sorte
que -1 est le dernier point. Cette fonction est particulièrement utile dans les triggers lorsqu’il s’agit de maintenir la relation entre
les articulations lorsqu’un sommet se déplace.
Disponibilité : 1.1.0
Mise à jour 2.3.0 : indexation négative
Exemples
---Change last point in a line string (lets play with 3d linestring this time)
SELECT ST_AsEWKT(ST_SetPoint(foo.geom, ST_NumPoints(foo.geom) - 1, ST_GeomFromEWKT('POINT ←-
(-1 1 3)')))
FROM (SELECT ST_GeomFromEWKT('LINESTRING(-1 2 3,-1 3 4, 5 6 7)') As geom) As foo;
st_asewkt
-----------------------
LINESTRING(-1 2 3,-1 3 4,-1 1 3)
Voir aussi
7.5.29 ST_ShiftLongitude
ST_ShiftLongitude — Décale les coordonnées de longitude d’une géométrie entre -180..180 et 0..360.
Manuel PostGIS 3.4.0dev 172 / 870
Synopsis
Description
Lit chaque point/vertex d’une géométrie et déplace sa coordonnée de longitude de -180..0 à 180..360 et vice versa si elle se trouve
entre ces plages. Cette fonction est symétrique, de sorte que le résultat est une représentation 0..360 d’une donnée -180..180 et
une représentation -180..180 d’une donnée 0..360.
Note
Ceci n’est utile que pour les données dont les coordonnées sont exprimées en longitude/latitude ; par exemple, SRID
4326 (WGS 84 géographique)
Warning
Un bug antérieur à la version 1.3.4 empêchait le fonctionnement pour MULTIPOINT. La version 1.3.4+ fonctionne
également avec MULTIPOINT.
Cette fonction prend en charge les triangles et les réseaux irréguliers triangulés (TIN).
Exemples
st_astext
----------
POINT(-90 0)
st_astext
----------
POINT(270 0)
st_astext
----------
LINESTRING(174 12,-178 13)
Manuel PostGIS 3.4.0dev 173 / 870
Voir aussi
ST_WrapX
7.5.30 ST_WrapX
Synopsis
Description
Cette fonction divise les géométries d’entrée et déplace ensuite chaque composant résultant tombant à droite (pour un "move"
négatif) ou à gauche (pour un "move" positif) de la ligne "wrap" donnée dans la direction spécifiée par le paramètre "move", pour
finalement réassembler les morceaux.
Note
Cette fonction est utile pour "recentrer" les données à long terme afin que les caractéristiques intéressantes ne soient
pas produites d’un côté à l’autre.
Exemples
Voir aussi
ST_ShiftLongitude
7.5.31 ST_SnapToGrid
ST_SnapToGrid — Accrocher tous les points de la géométrie d’entrée à une grille régulière.
Synopsis
geometry ST_SnapToGrid(geometry geomA, float originX, float originY, float sizeX, float sizeY);
geometry ST_SnapToGrid(geometry geomA, float sizeX, float sizeY);
geometry ST_SnapToGrid(geometry geomA, float size);
geometry ST_SnapToGrid(geometry geomA, geometry pointOrigin, float sizeX, float sizeY, float sizeZ, float sizeM);
Manuel PostGIS 3.4.0dev 174 / 870
Description
Variante 1,2,3 : Accrocher tous les points de la géométrie d’entrée à la grille définie par l’origine et la taille des cellules. Supprime
les points consécutifs tombant sur la même cellule, et renvoie éventuellement NULL si les points de sortie ne sont pas suffisants
pour définir une géométrie du type donné. Les géométries écrasées d’une collection sont supprimées de celle-ci. Utile pour
réduire la précision.
Variante 4 : Introduite dans la version 1.1.0 - Accroche tous les points de la géométrie d’entrée à la grille définie par son origine
(le deuxième argument doit être un point) et la taille des cellules. Spécifiez 0 comme taille pour toute dimension que vous ne
voulez pas accrocher à une grille.
Note
La géométrie renvoyée peut perdre sa simplicité (voir ST_IsSimple).
Note
Avant la version 1.1.0, cette fonction renvoyait toujours une géométrie 2D. A partir de la version 1.1.0, la géométrie
renvoyée aura la même dimensionnalité que la géométrie d’entrée, les valeurs de dimensions supérieures n’étant pas
modifiées. Utilisez la version prenant un second argument géométrique pour définir toutes les dimensions de la grille.
Disponibilité : 1.0.0RC1
Disponibilité : 1.1.0 - Prise en charge des Z et M
Exemples
SELECT ST_AsText(ST_SnapToGrid(
ST_GeomFromText('LINESTRING(1.1115678 2.123, 4.111111 3.2374897, ←-
4.11112 3.23748667)'),
0.001)
);
st_astext
-------------------------------------
LINESTRING(1.112 2.123,4.111 3.237)
--Snap a 4d geometry
SELECT ST_AsEWKT(ST_SnapToGrid(
ST_GeomFromEWKT('LINESTRING(-1.1115678 2.123 2.3456 1.11111,
4.111111 3.2374897 3.1234 1.1111, -1.11111112 2.123 2.3456 1.1111112)'),
ST_GeomFromEWKT('POINT(1.12 2.22 3.2 4.4444)'),
0.1, 0.1, 0.1, 0.01) );
st_asewkt
------------------------------------------------------------------------------
LINESTRING(-1.08 2.12 2.3 1.1144,4.12 3.22 3.1 1.1144,-1.08 2.12 2.3 1.1144)
--With a 4d geometry - the ST_SnapToGrid(geom,size) only touches x and y coords but keeps m ←-
and z the same
SELECT ST_AsEWKT(ST_SnapToGrid(ST_GeomFromEWKT('LINESTRING(-1.1115678 2.123 3 2.3456,
4.111111 3.2374897 3.1234 1.1111)'),
0.01) );
Manuel PostGIS 3.4.0dev 175 / 870
st_asewkt
---------------------------------------------------------
LINESTRING(-1.11 2.12 3 2.3456,4.11 3.24 3.1234 1.1111)
Voir aussi
7.5.32 ST_Snap
ST_Snap — Accrocher les segments et les sommets de la géométrie d’entrée aux sommets d’une géométrie de référence.
Synopsis
Description
Accroche les sommets et les segments d’une géométrie aux sommets d’une autre géométrie. Une tolérance de distance d’accrochage
est utilisée pour contrôler l’endroit où l’accrochage est effectué. La géométrie résultante est la géométrie d’entrée avec les som-
mets accrochés. Si aucun accrochage n’a lieu, la géométrie d’entrée est renvoyée inchangée.
L’accrochage d’une géométrie à une autre peut améliorer la robustesse des opérations de superposition en éliminant les arêtes
presque coïncidentes (qui posent des problèmes lors du noding et du calcul de l’intersection).
Un accrochage trop important peut entraîner la création d’une topologie non valide, c’est pourquoi le nombre et l’emplacement
des sommets accrochés sont décidés à l’aide d’une heuristique pour déterminer quand il est sûr d’accrocher. Cela peut toutefois
entraîner l’omission de certains accrochages potentiels.
Note
La géométrie renvoyée peut perdre sa simplicité (voir ST_IsSimple) et sa validité (voir ST_IsValid).
Exemples
Manuel PostGIS 3.4.0dev 176 / 870
Voir aussi
ST_SnapToGrid
7.5.33 ST_SwapOrdinates
ST_SwapOrdinates — Renvoie une version de la géométrie donnée avec les valeurs d’ordonnées permutées.
Synopsis
Description
Renvoie une version de la géométrie donnée dont les ordonnées ont été interverties.
Le paramètre ords est une chaîne de 2 caractères désignant les ordonnées à permuter. Les noms valides sont : x, y, z et m.
Disponibilité : 2.2.0
Cette fonction prend en charge les triangles et les réseaux irréguliers triangulés (TIN).
Exemple
-- Scale M value by 2
SELECT ST_AsText(
ST_SwapOrdinates(
ST_Scale(
ST_SwapOrdinates(g,'xm'),
2, 1
),
'xm')
) FROM ( SELECT 'POINT ZM (0 0 0 2)'::geometry g ) foo;
st_astext
--------------------
POINT ZM (0 0 0 4)
Voir aussi
ST_FlipCoordinates
7.6.1 ST_IsValid
Synopsis
Description
Teste si une valeur ST_Geometry est bien formée et valide en 2D selon les règles de l’OGC. Pour les géométries à 3 et 4
dimensions, la validité est toujours testée uniquement en 2 dimensions. Pour les géométries qui ne sont pas valides, une NOTICE
PostgreSQL est émise fournissant les détails de la raison pour laquelle elle n’est pas valide.
Pour la version avec le paramètre flags, les valeurs prises en charge sont documentées dans ST_IsValidDetail Cette version
n’imprime pas de NOTICE expliquant l’invalidité.
Pour plus d’informations sur la définition de la validité des géométries, reportez-vous à Section 4.4.
Note
SQL-MM définit le résultat de ST_IsValid(NULL) comme étant 0, alors que PostGIS renvoie NULL.
Cette méthode implémente la spécification OGC Simple Features Implementation Specification for SQL 1.1.
Note
Les spécifications de l’OGC-SFS et de SQL-MM ne comprennent pas d’argument de type flag pour ST_IsValid.
L’indicateur est une extension de PostGIS.
Exemples
Voir aussi
7.6.2 ST_IsValidDetail
ST_IsValidDetail — Renvoie une ligne valid_detail indiquant si une géométrie est valide ou sinon une raison et une
localisation.
Synopsis
Description
Renvoie une ligne valid_detail, contenant un booléen (valid) indiquant si une géométrie est valide, un varchar (reason)
indiquant une raison pour laquelle elle est invalide et une géométrie (location) indiquant où elle est invalide.
Utile pour améliorer la combinaison de ST_IsValid et ST_IsValidReason afin de générer un rapport détaillé des géométries
invalides.
Le paramètre facultatif flags est un champ de type bit. Il peut avoir les valeurs suivantes :
Exemples
--simple example
SELECT * FROM ST_IsValidDetail('LINESTRING(220227 150406,2220227 150407,222020 150410)');
Voir aussi
ST_IsValid, ST_IsValidReason
Manuel PostGIS 3.4.0dev 182 / 870
7.6.3 ST_IsValidReason
ST_IsValidReason — Renvoie un texte indiquant si une géométrie est valide, ou la raison de son invalidité.
Synopsis
Description
Renvoie un texte indiquant si une géométrie est valide ou, si elle est invalide, une raison pour laquelle elle l’est.
Utile en combinaison avec ST_IsValid pour générer un rapport détaillé des géométries invalides et des raisons.
Les flags autorisés sont documentés dans ST_IsValidDetail.
Effectué par le module GEOS.
Disponibilité : 1.4
Disponibilité : la version 2.0 prend des flags.
Exemples
gid | validity_info
------+--------------------------
5330 | Self-intersection [32 5]
5340 | Self-intersection [42 5]
5350 | Self-intersection [52 5]
Manuel PostGIS 3.4.0dev 183 / 870
--simple example
SELECT ST_IsValidReason('LINESTRING(220227 150406,2220227 150407,222020 150410)');
st_isvalidreason
------------------
Valid Geometry
Voir aussi
ST_IsValid, ST_Summary
7.6.4 ST_MakeValid
ST_MakeValid — Tente de rendre valide une géométrie invalide sans perdre de sommets.
Synopsis
Description
La fonction tente de créer une représentation valide d’une géométrie invalide donnée sans perdre aucun des sommets d’entrée.
Les géométries valides sont retournées inchangées.
Les types de données pris en charge sont : POINTS, MULTIPOINTS, LINESTRINGS, MULTILINESTRINGS, POLYGONS,
MULTIPOLYGONS et GEOMETRYCOLLECTIONS contenant n’importe quel mélange de ces éléments.
En cas de diminution de dimension (total ou partiel), la géométrie de sortie peut être une collection de géométries de dimension
inférieure à égale, ou une géométrie de dimension inférieure.
Les polygones simples peuvent devenir des multigéométries en cas d’auto-intersections.
L’argument params peut être utilisé pour fournir une chaîne d’options permettant de sélectionner la méthode à utiliser pour
construire une géométrie valide. La chaîne d’options est au format "method=linework|structure keepcollapsed=true|false". Si
aucun argument "params" n’est fourni, l’algorithme "linework" sera utilisé par défaut.
La clé "method" a deux valeurs.
• Le "linework" est l’algorithme original, et construit des géométries valides en extrayant d’abord toutes les lignes, en codant ce
linework ensemble, puis en construisant une sortie de valeur à partir du linework.
• La "structure" est un algorithme qui distingue les anneaux intérieurs et extérieurs, construisant une nouvelle géométrie en
réunissant les anneaux extérieurs, puis en différenciant tous les anneaux intérieurs.
La clé "keepcollapsed" est uniquement valable pour l’algorithme "structure" et prend la valeur "true" ou "false". Lorsqu’elle est
définie sur "false", les composants géométriques qui se réduisent à une dimension inférieure, par exemple une ligne à un point,
sont abandonnés.
Effectué par le module GEOS.
Disponibilité : 2.0.0
Amélioré : 2.0.1, améliorations de la vitesse
Amélioration : 2.1.0, ajout du support pour GEOMETRYCOLLECTION et MULTIPOINT.
Amélioration : 3.1.0, suppression des coordonnées avec des valeurs NaN.
Amélioration : 3.2.0, ajout d’options d’algorithme, ’linework’ et ’structure’ qui nécessite GEOS >= 3.10.0.
Exemples
Manuel PostGIS 3.4.0dev 185 / 870
Exemples
SELECT ST_AsText(ST_MakeValid(
'LINESTRING(0 0, 0 0)',
'method=structure keepcollapsed=true'
));
st_astext
------------
POINT(0 0)
SELECT ST_AsText(ST_MakeValid(
'LINESTRING(0 0, 0 0)',
'method=structure keepcollapsed=false'
));
st_astext
------------------
LINESTRING EMPTY
Voir aussi
7.7.1 ST_InverseTransformPipeline
ST_InverseTransformPipeline — Renvoie une nouvelle géométrie dont les coordonnées ont été transformées dans un système de
référence spatial différent en utilisant l’inverse d’un pipeline de transformation de coordonnées défini.
Synopsis
Description
Renvoie une nouvelle géométrie dont les coordonnées ont été transformées dans un système de référence spatial différent à l’aide
d’un pipeline de transformation de coordonnées défini pour aller dans la direction inverse.
Voir ST_TransformPipeline pour plus de détails sur l’écriture d’un pipeline de transformation.
Disponibilité : 3.4.0
Le SRID de la géométrie en entrée est ignoré et le SRID de la géométrie de sortie sera mis à zéro à moins qu’une valeur ne soit
fournie via le paramètre facultatif to_srid. Lors de l’utilisation de ST_TransformPipeline, le pipeline est exécuté dans le sens
direct. En utilisant `ST_InverseTransformPipeline()`, le pipeline est exécuté dans le sens inverse.
Les transformations utilisant des pipelines sont une version spéciale de ST_Transform. Dans la plupart des cas, `ST_Transform`
choisira les opérations correctes pour convertir entre les systèmes de coordonnées, et devrait être préféré.
Manuel PostGIS 3.4.0dev 189 / 870
Exemples
wgs_geom
----------------------------
POINT(2 48.99999999999999)
(1 row)
Exemple GDA2020.
-- using ST_Transform with automatic selection of a conversion pipeline.
SELECT ST_AsText(ST_Transform('SRID=4939;POINT(143.0 -37.0)'::geometry, 7844)) AS ←-
gda2020_auto;
gda2020_auto
-----------------------------------------------
POINT(143.00000635638918 -36.999986706128176)
(1 row)
Voir aussi
ST_Transform, ST_TransformPipeline
7.7.2 ST_SetSRID
Synopsis
Description
Définit le SRID d’une géométrie à une valeur entière particulière. Utile pour construire des boîtes de délimitation pour les
requêtes.
Note
Cette fonction ne transforme en aucune façon les coordonnées de la géométrie - elle définit simplement les méta-
données définissant le système de référence spatiale dans lequel la géométrie est supposée se trouver. Utilisez
ST_Transform si vous souhaitez transformer la géométrie dans une nouvelle projection.
Cette méthode implémente la spécification OGC Simple Features Implementation Specification for SQL 1.1.
Exemples
-- Marquer un point comme WGS 84 long lat puis le transformer en mercator web (Mercator Sphérique) --
SELECT ST_Transform(ST_SetSRID(ST_Point(-123.365556, 48.428611),4326),3785) As spere_merc;
-- the ewkt representation (wrap with ST_AsEWKT) -
SRID=3785;POINT(-13732990.8753491 6178458.96425423)
Voir aussi
7.7.3 ST_SRID
Synopsis
Description
Renvoie l’identifiant de référence spatiale pour la ST_Geometry tel que défini dans la table spatial_ref_sys. Section 4.5
Note
La table spatial_ref_sys est une table qui répertorie tous les systèmes de référence spatiale connus de PostGIS et qui
est utilisée pour les transformations d’un système de référence spatiale à un autre. Il est donc important de vérifier que
vous disposez du bon identifiant de système de référence spatiale si vous envisagez de transformer vos géométries.
Cette méthode implémente la spécification OGC Simple Features Implementation Specification for SQL 1.1. s2.1.1.1
Exemples
Voir aussi
7.7.4 ST_Transform
ST_Transform — Renvoie une nouvelle géométrie dont les coordonnées ont été transformées dans un système de référence
spatial différent.
Synopsis
Description
Renvoie une nouvelle géométrie dont les coordonnées ont été transformées dans un système de référence spatiale différent. La
référence spatiale de destination to_srid peut être identifiée par un paramètre entier SRID valide (c’est-à-dire qu’elle doit
exister dans la table spatial_ref_sys). Il est également possible d’utiliser une référence spatiale définie comme une chaîne
PROJ.4 pour to_proj et/ou from_proj, mais ces méthodes ne sont pas optimisées. Si le système de référence spatiale
de destination est exprimé avec une chaîne PROJ.4 au lieu d’un SRID, le SRID de la géométrie de sortie sera mis à zéro. A
l’exception des fonctions avec from_proj, les géométries d’entrée doivent avoir un SRID défini.
ST_Transform est souvent confondu avec ST_SetSRID. ST_Transform modifie en fait les coordonnées d’une géométrie d’un
système de référence spatiale à un autre, tandis que ST_SetSRID() modifie simplement l’identifiant SRID de la géométrie.
ST_Transform sélectionne automatiquement un pipeline de conversion approprié en fonction des systèmes de référence spatiale
source et cible. Pour utiliser une méthode de conversion spécifique, utilisez ST_TransformPipeline.
Note
PostGIS doit être compilé avec le support PROJ. Utilisez PostGIS_Full_Version pour confirmer que vous avez compilé
le support PROJ.
Note
Si l’on utilise plus d’une transformation, il est utile de disposer d’un index fonctionnel sur les transformations les plus
couramment utilisées afin de tirer parti de l’utilisation de l’index.
Note
Avant la version 1.3.4, cette fonction se bloquait si elle était utilisée avec des géométries contenant des CURVES. Ce
problème est corrigé dans la version 1.3.4+
Exemples
Changer la géométrie des pieds US du plan de l’État du Massachusetts en WGS 84 long lat
SELECT ST_AsText(ST_Transform(ST_GeomFromText('POLYGON((743238 2967416,743238 2967450,
743265 2967450,743265.625 2967416,743238 2967416))',2249),4326)) As wgs_geom;
wgs_geom
---------------------------
POLYGON((-71.1776848522251 42.3902896512902,-71.1776843766326 42.3903829478009,
-71.1775844305465 42.3903826677917,-71.1775825927231 42.3902893647987,-71.177684
8522251 42.3902896512902));
(1 row)
st_asewkt
--------------------------------------------------------------------------------------
SRID=4326;CIRCULARSTRING(-71.1776848522251 42.3902896512902 1,-71.1776843766326 ←-
42.3903829478009 2,
-71.1775844305465 42.3903826677917 3,
-71.1775825927231 42.3902893647987 3,-71.1776848522251 42.3902896512902 4)
Exemple de création d’un index fonctionnel partiel. Pour les tables dont vous n’êtes pas sûr que toutes les géométries seront
renseignées, il est préférable d’utiliser un index partiel qui laisse de côté les géométries nulles, ce qui permet à la fois de
conserver de l’espace et de rendre votre index plus petit et plus efficace.
CREATE INDEX idx_geom_26986_parcels
ON parcels
USING gist
(ST_Transform(geom, 26986))
WHERE geom IS NOT NULL;
Exemples d’utilisation du texte PROJ.4 pour transformer avec des références spatiales personnalisées.
-- Find intersection of two polygons near the North pole, using a custom Gnomic projection
-- See http://boundlessgeo.com/2012/02/flattening-the-peel/
WITH data AS (
SELECT
ST_GeomFromText('POLYGON((170 50,170 72,-130 72,-130 50,170 50))', 4326) AS p1,
ST_GeomFromText('POLYGON((-170 68,-170 90,-141 90,-141 68,-170 68))', 4326) AS p2,
'+proj=gnom +ellps=WGS84 +lat_0=70 +lon_0=-160 +no_defs'::text AS gnom
)
SELECT ST_AsText(
ST_Transform(
ST_Intersection(ST_Transform(p1, gnom), ST_Transform(p2, gnom)),
gnom, 4326))
FROM data;
st_astext
--------------------------------------------------------------------------------
POLYGON((-170 74.053793645338,-141 73.4268621378904,-141 68,-170 68,-170 74.053793645338) ←-
)
Parfois, la transformation de coordonnées impliquant un décalage de grille peut échouer, par exemple si PROJ.4 n’a pas été
construit avec des fichiers de décalage de grille ou si la coordonnée ne se trouve pas dans la plage pour laquelle le décalage de
Manuel PostGIS 3.4.0dev 193 / 870
grille est défini. Par défaut, PostGIS génère une erreur si un fichier de décalage de grille n’est pas présent, mais ce comportement
peut être configuré pour chaque SRID, soit en testant différentes valeurs to_proj de texte PROJ.4, soit en modifiant la valeur
proj4text dans la table spatial_ref_sys.
Par exemple, le paramètre proj4text +datum=NAD87 est une forme abrégée du paramètre +nadgrids suivant :
+nadgrids=@conus,@alaska,@ntv2_0.gsb,@ntv1_can.dat
Le préfixe @ signifie qu’aucune erreur n’est signalée si les fichiers ne sont pas présents, mais si la fin de la liste est atteinte sans
qu’aucun fichier n’ait été approprié (c’est-à-dire trouvé et se chevauchant), une erreur est émise.
Si, à l’inverse, vous voulez vous assurer qu’au moins les fichiers standard sont présents, mais que si tous les fichiers ont été
analysés sans résultat, une transformation nulle est appliquée, vous pouvez utiliser :
+nadgrids=@conus,@alaska,@ntv2_0.gsb,@ntv1_can.dat,null
Le fichier de décalage de grille nul est un fichier de décalage de grille valide couvrant le monde entier et n’appliquant aucun
décalage. Ainsi, pour un exemple complet, si vous vouliez modifier PostGIS de manière à ce que les transformations du SRID
4267 qui ne se situent pas dans la plage correcte n’entraînent pas d’ERREUR, vous utiliseriez ce qui suit :
UPDATE spatial_ref_sys SET proj4text = '+proj=longlat +ellps=clrk66 +nadgrids=@conus, ←-
@alaska,@ntv2_0.gsb,@ntv1_can.dat,null +no_defs' WHERE srid = 4267;
Voir aussi
7.7.5 ST_TransformPipeline
ST_TransformPipeline — Retourner une nouvelle géométrie avec des coordonnées transformées dans un système de référence
spatial différent à l’aide d’un pipeline de transformation de coordonnées défini.
Synopsis
Description
Retourner une nouvelle géométrie dont les coordonnées ont été transformées dans un système de référence spatial différent à
l’aide d’un pipeline de transformation de coordonnées défini.
Les pipelines de transformation sont définis à l’aide de l’un des formats de texte suivants :
Disponibilité : 3.4.0
Le SRID de la géométrie d’entrée est ignoré, et le SRID de la géométrie de sortie sera mis à zéro à moins qu’une valeur ne soit
fournie via le paramètre optionnel to_srid. Lors de l’utilisation de `ST_TransformPipeline()`, le pipeline est exécuté dans la
direction avant. En utilisant ST_InverseTransformPipeline le pipeline est exécuté dans le sens inverse.
Les transformations utilisant des pipelines sont une version spéciale de ST_Transform. Dans la plupart des cas, `ST_Transform`
choisira les opérations correctes pour convertir entre les systèmes de coordonnées, et devrait être préféré.
Manuel PostGIS 3.4.0dev 194 / 870
Exemples
utm_geom
--------------------------------------------
POINT(426857.9877165967 5427937.523342293)
(1 row)
-- Inverse direction
SELECT ST_AsText(ST_InverseTransformPipeline('POINT(426857.9877165967 5427937.523342293)':: ←-
geometry,
'urn:ogc:def:coordinateOperation:EPSG::16031')) AS wgs_geom;
wgs_geom
----------------------------
POINT(2 48.99999999999999)
(1 row)
Exemple GDA2020.
-- using ST_Transform with automatic selection of a conversion pipeline.
SELECT ST_AsText(ST_Transform('SRID=4939;POINT(143.0 -37.0)'::geometry, 7844)) AS ←-
gda2020_auto;
gda2020_auto
-----------------------------------------------
POINT(143.00000635638918 -36.999986706128176)
(1 row)
gda2020_code
----------------------------------------------
POINT(143.0000063280214 -36.999986718287545)
(1 row)
gda2020_pipeline
----------------------------------------------
POINT(143.0000063280214 -36.999986718287545)
(1 row)
Voir aussi
ST_Transform, ST_InverseTransformPipeline
Manuel PostGIS 3.4.0dev 195 / 870
7.7.6 postgis_srs_codes
Synopsis
Description
Exemples
postgis_srs_codes
-------------------
2000
20004
20005
20006
20007
20008
20009
2001
20010
20011
Voir aussi
7.7.7 postgis_srs
Synopsis
Description
Renvoie un enregistrement de métadonnées pour le auth_srid demandé pour le auth_name donné. L’enregistrement
contiendra les éléments suivants : auth_name, auth_srid, srname, srtext, proj4text, et les angles de la zone
d’utilisation, point_sw et point_ne.
Disponibilité : 3.4.0
Proj version 6+
Manuel PostGIS 3.4.0dev 196 / 870
Exemples
auth_name | EPSG
auth_srid | 3005
srname | NAD83 / BC Albers
srtext | PROJCS["NAD83 / BC Albers", ... ]]
proj4text | +proj=aea +lat_0=45 +lon_0=-126 +lat_1=50 +lat_2=58.5 +x_0=1000000 +y_0=0 + ←-
datum=NAD83 +units=m +no_defs +type=crs
point_sw | 0101000020E6100000E17A14AE476161C00000000000204840
point_ne | 0101000020E610000085EB51B81E855CC0E17A14AE47014E40
Voir aussi
7.7.8 postgis_srs_all
postgis_srs_all — Renvoie des enregistrements de métadonnées pour chaque système de référence spatiale dans la base de
données Proj sous-jacente.
Synopsis
Description
Renvoie un ensemble d’enregistrements de métadonnées dans la base de données Proj sous-jacente. Les enregistrements auront le
auth_name, auth_srid, srname, srtext, proj4text, et les angles de la zone d’utilisation, point_sw et point_ne.
Disponibilité : 3.4.0
Proj version 6+
Exemples
Voir aussi
7.7.9 postgis_srs_search
postgis_srs_search — Renvoyer les enregistrements de métadonnées pour les systèmes de coordonnées projetées dont les zones
d’utilisation contiennent entièrement le paramètre bounds.
Synopsis
Description
Renvoie un ensemble d’enregistrements de métadonnées pour les systèmes de coordonnées projetées dont les zones d’utilisation
contiennent entièrement le paramètre bounds. Chaque enregistrement contiendra le auth_name, auth_srid, srname,
srtext, proj4text, et les angles de la zone d’utilisation, point_sw et point_ne.
La recherche ne porte que sur les systèmes de coordonnées projetées et vise à permettre aux utilisateurs d’explorer les systèmes
possibles en fonction de l’étendue de leurs données.
Disponibilité : 3.4.0
Proj version 6+
Exemples
Examinez une table pour connaître l’étendue maximale et trouvez les systèmes de coordonnées projetées qui pourraient convenir.
WITH ext AS (
SELECT ST_Extent(geom) AS geom, Max(ST_SRID(geom)) AS srid
FROM foo
)
SELECT auth_name, auth_srid, srname,
ST_AsText(point_sw) AS point_sw,
ST_AsText(point_ne) AS point_ne
FROM ext
CROSS JOIN postgis_srs_search(ST_SetSRID(ext.geom, ext.srid))
LIMIT 3;
Manuel PostGIS 3.4.0dev 198 / 870
Voir aussi
7.8.1.1 ST_BdPolyFromText
ST_BdPolyFromText — Construit un Polygon à partir d’une collection de lignes fermées, exprimées sous forme de Multi-
LineString en représentation Well-Known text.
Synopsis
Description
Construit un Polygon à partir d’une collection de lignes fermées, exprimées sous forme de MultiLineString en représentation
Well-Known text.
Note
Renvoie une erreur si le WKT n’est pas une MULTILINESTRING. Renvoie une erreur si le résultat est un MULTIPOLY-
GON. Utiliser ST_BdMPolyFromText dans ce cas, ou voir ST_BuildArea() pour une approche basée sur une fonction
spécifique.
Cette méthode implémente la spécification OGC Simple Features Implementation Specification for SQL 1.1. s3.2.6.2
Effectué par le module GEOS.
Disponibilité : 1.1.0
Voir aussi
ST_BuildArea, ST_BdMPolyFromText
7.8.1.2 ST_BdMPolyFromText
ST_BdMPolyFromText — Construit un MultiPolygon à partir d’une collection de lignes fermées, exprimées sous forme de
MultiLineString en représentation Well-Known text.
Synopsis
Description
Construit un Polygon à partir d’une collection de lignes fermées, de polygones ou de MultiLineStrings exprimés en représentation
Well-Known text.
Note
Renvoie une erreur si le WKT n’est pas une MULTILINESTRING. Force le type de retour en MULTIPOLYGON même si
le résultat est en fait composé d’un seul POLYGON. Utiliser ST_BdPolyFromText si l’on est sûr que le résultat produit
des Polygon, ou voir la fonction spécifique PostGIS ST_BuildArea().
Cette méthode implémente la spécification OGC Simple Features Implementation Specification for SQL 1.1. s3.2.6.2
Effectué par le module GEOS.
Disponibilité : 1.1.0
Voir aussi
ST_BuildArea, ST_BdPolyFromText
7.8.1.3 ST_GeogFromText
ST_GeogFromText — Retourne un objet de type geography à partir de sa représentation Well-Know Text (WKT ou EWKT).
Synopsis
Description
Retourne un objet de type geography à partir de sa représentation Well-Know Text (WKT ou EWKT). Le SRID 4326 est pris par
défaut. Ceci est un alias pour ST_GeographyFromText. Les coordonnées des points sont exprimées en longitude latitude.
Exemples
Voir aussi
ST_AsText, ST_GeographyFromText
7.8.1.4 ST_GeographyFromText
ST_GeographyFromText — Retourne un objet de type geography à partir de sa représentation Well-Know Text (WKT ou
EWKT).
Manuel PostGIS 3.4.0dev 200 / 870
Synopsis
Description
Retourne un objet de type geography à partir de sa représentation Well-Know Text (WKT ou EWKT). SRID 4326 par défaut.
Voir aussi
ST_GeogFromText, ST_AsText
7.8.1.5 ST_GeomCollFromText
ST_GeomCollFromText — Crée une collection Geometry à partir de la collection WKT avec le SRID donné. Si le SRID n’est
pas donné, la valeur par défaut est 0.
Synopsis
Description
Crée une géométrie de collection à partir de la représentation Well-Known-Text (WKT) avec le SRID donné. Si le SRID n’est
pas donné, la valeur par défaut est 0.
OGC SPEC 3.2.6.2 - l’option SRID est issue des tests de conformité
Retourne null si le WKT n’est pas une GEOMETRYCOLLECTION
Note
Si vous êtes absolument sûrs que toutes les géométries WKT sont des collections, ne pas utiliser cette fonction. Elle
est plus lente que ST_GeomFromText à cause d’une étape de validation supplémentaire.
Cette méthode implémente la spécification OGC Simple Features Implementation Specification for SQL 1.1. s3.2.6.2
Exemples
Voir aussi
ST_GeomFromText, ST_SRID
7.8.1.6 ST_GeomFromEWKT
ST_GeomFromEWKT — Retourne un objet ST_Geometry à partir de sa représentation textuelle étendue (Extended Well-Known
Text representation, EWKT).
Manuel PostGIS 3.4.0dev 201 / 870
Synopsis
Description
Retourne un objet ST_Geometry à partir de sa représentation textuelle étendue OGC (Extended Well-Known Text representation,
EWKT).
Note
Le format EWKT n’est pas une norme OGC, mais un format spécifique à PostGIS incluant l’identifiant du système de
référence des coordonnées (SRID)
Cette fonction prend en charge les triangles et les réseaux irréguliers triangulés (TIN).
Exemples
SELECT ST_GeomFromEWKT('SRID=4269;POLYGON((-71.1776585052917 ←-
42.3902909739571,-71.1776820268866 42.3903701743239,
-71.1776063012595 42.3903825660754,-71.1775826583081 42.3903033653531,-71.1776585052917 ←-
42.3902909739571))');
Voir aussi
ST_AsEWKT, ST_GeomFromText
7.8.1.7 ST_GeomFromMARC21
ST_GeomFromMARC21 — Prend les données géographiques MARC21/XML en entrée et renvoie un objet géométrique Post-
GIS.
Synopsis
Description
Cette fonction crée une géométrie PostGIS à partir d’un enregistrement MARC21/XML, qui peut contenir un POINT ou un
POLYGON. En cas d’entrées de données géographiques multiples dans le même enregistrement MARC21/XML, un MULTIPOINT
ou MULTIPOLYGON sera renvoyé. Si la notice contient des types de géométrie mixtes, une GEOMETRYCOLLECTION sera re-
tournée. Il renvoie NULL si l’enregistrement MARC21/XML ne contient pas de données géographiques (datafield :034).
Prise en charge des versions LOC MARC21/XML :
• MARC21/XML 1.1
Note
Les données mathématiques cartographiques codées MARC21/XML ne fournissent actuellement aucun moyen de
décrire le système de référence spatiale des coordonnées codées, de sorte que cette fonction retournera toujours une
géométrie avec SRID 0.
Note
Les géométries POLYGON retournées seront toujours orientées dans le sens des aiguilles d’une montre.
Manuel PostGIS 3.4.0dev 203 / 870
Exemples
st_astext
-------------------
POINT(-4.5 54.25)
(1 row)
st_astext
-------------------------------------------------------------------------------------
(1 row)
-------------------------------------------------------------------------------------
GEOMETRYCOLLECTION(POLYGON((13.1 52.65,13.516666666666667 ←-
52.65,13.516666666666667 52.38333333333333,13.1 52.38333333333333,13.1 ←-
52.65)),POINT(-4.5 54.25))
(1 row)
Voir aussi
ST_AsMARC21
7.8.1.8 ST_GeometryFromText
ST_GeometryFromText — Retourne un objet ST_Geometry à partir de sa représentation textuelle Well-Known Text (WKT).
Alias pour ST_GeomFromText
Synopsis
Description
Cette méthode implémente la spécification OGC Simple Features Implementation Specification for SQL 1.1.
Voir aussi
ST_GeomFromText
7.8.1.9 ST_GeomFromText
ST_GeomFromText — Retourne un objet ST_Geometry à partir de sa représentation textuelle Well-Known Text (WKT).
Synopsis
Description
Construit un objet Postgis de type geometry à partir d’une représentation OGC Well-Known Text WKT.
Note
Il existe deux variantes de la fonction ST_GeomFromText. La première ne prend pas de SRID et renvoie une géométrie
sans système de référence spatiale défini (SRID=0). La seconde prend un SRID comme deuxième argument et renvoie
une géométrie qui inclut ce SRID comme partie de ses métadonnées.
Cette méthode implémente la spécification OGC Simple Features Implementation Specification for SQL 1.1. s3.2.6.2 -
l’option SRID est issue des tests de conformité.
Note
Bien que non conforme à l’OGC, ST_MakePoint est plus rapide que ST_GeomFromText et ST_PointFromText. Il est
également plus facile à utiliser pour les valeurs de coordonnées numériques. ST_Point est une autre option similaire
en vitesse à ST_MakePoint et est conforme à l’OGC, mais ne prend pas en charge autre chose que les points 2D.
Warning
Changement : 2.0.0 dans les version précédentes de PostGIS ST_GeomFromText(’GEOMETRYCOLLECTION(EMPT
etait autorisé. C’est désormais interdit dans PostGIS 2.0.0 pour respecter la norme SQL/MM. La forme privilégiée
désormais est : ST_GeomFromText(’GEOMETRYCOLLECTION EMPTY’)
Manuel PostGIS 3.4.0dev 206 / 870
Exemples
Voir aussi
7.8.1.10 ST_LineFromText
ST_LineFromText — Construit une géométrie à partir d’une représentation WKT avec le SRID donné. Si aucun SRID n’est
donné, la valeur par défaut est 0.
Synopsis
Description
Crée une géométrie à partir de WKT avec le SRID donné. Si le SRID n’est pas donné, la valeur par défaut est 0. Si le WKT
passé n’est pas un LINESTRING, null est retourné.
Note
OGC SPEC 3.2.6.2 - option SRID issue des tests de conformité.
Note
Si vous êtes sûrs que toutes les géométries WKT sont des LINESTRINGS, la fonction ST_GeomFromText est plus
efficace car elle ne contrôle pas le type de la géométrie renvoyée.
Cette méthode implémente la spécification OGC Simple Features Implementation Specification for SQL 1.1. s3.2.6.2
Exemples
Voir aussi
ST_GeomFromText
7.8.1.11 ST_MLineFromText
Synopsis
Description
Crée une géométrie à partir du texte connu (WKT) avec le SRID donné. Si le SRID n’est pas donné, la valeur par défaut est 0.
OGC SPEC 3.2.6.2 - l’option SRID est issue des tests de conformité
Retourne NULL si le WKT n’est pas une MULTILINESTRING
Note
Si vous êtes absolument sûrs que toutes les géométries WKT sont des points, ne pas utiliser cette fonction. Elle est
plus lente que ST_GeomFromText à cause d’une étape de validation supplémentaire.
Cette méthode implémente la spécification OGC Simple Features Implementation Specification for SQL 1.1. s3.2.6.2
Exemples
Voir aussi
ST_GeomFromText
7.8.1.12 ST_MPointFromText
ST_MPointFromText — Créé une Geometry depuis un WKT avec le SRID donné. Si le SRID n’est pas fourni, il sera défini par
défaut à 0.
Synopsis
Description
Créé une Geometry depuis un WKT avec le SRID donné. Si le SRID n’est pas fourni, il sera défini par défaut à 0.
OGC SPEC 3.2.6.2 - l’option SRID est issue des tests de conformité
Retourne NULL si le WKT n’est pas une MULTIPOINT
Note
Si vous êtes absolument sûrs que toutes les géométries WKT sont des points, ne pas utiliser cette fonction. Elle est
plus lente que ST_GeomFromText à cause d’une étape de validation supplémentaire.
Cette méthode implémente la spécification OGC Simple Features Implementation Specification for SQL 1.1. 3.2.6.2
Exemples
Voir aussi
ST_GeomFromText
7.8.1.13 ST_MPolyFromText
ST_MPolyFromText — Crée une géométrie multi-polygone à partir de WKT avec le SRID donné. Si le SRID n’est pas donné,
la valeur par défaut est 0.
Manuel PostGIS 3.4.0dev 209 / 870
Synopsis
Description
Crée un MultiPolygone à partir de WKT avec le SRID donné. Si le SRID n’est pas donné, la valeur par défaut est 0.
OGC SPEC 3.2.6.2 - l’option SRID est issue des tests de conformité
Retourne une erreur si le WKT n’est pas un MULTIPOLYGON
Note
Si vous êtes absolument sûrs que toutes les géométries WKT sont des multipolygones, ne pas utiliser cette fonction.
Elle est plus lente que ST_GeomFromText à cause d’une étape de validation supplémentaire.
Cette méthode implémente la spécification OGC Simple Features Implementation Specification for SQL 1.1. s3.2.6.2
Exemples
Voir aussi
ST_GeomFromText, ST_SRID
7.8.1.14 ST_PointFromText
ST_PointFromText — Construit une géométrie point à partir d’une représentation WKT et le SRID donné. Si aucun SRID n’est
donné, la valeur par défaut est 0.
Synopsis
Description
Construit un objet point ST_Geometry de PostGIS à partir de la représentation textuelle Well-Known de l’OGC. Si le SRID n’est
pas donné, il prend par défaut la valeur inconnue (actuellement 0). Si la géométrie n’est pas une représentation de point WKT,
retourne null. Si la représentation WKT n’est pas du tout valide, une erreur est générée.
Note
Il existe 2 versions de la fonction ST_PointFromText : la première ne prend pas de SRID en paramètre et re-
tourne une geometry sans système de coordonnées. La seconde prend un SRID en second paramètre et retourne
une ST_Geometry incluant un SRID dans ses métadonnées. Ce SRID doit obligatoirement exister dans la table spa-
tial_ref_sys.
Note
Si vous êtes absolument sûrs que toutes les géométries WKT sont des points, ne pas utiliser cette fonction. Elle est
plus lente que ST_GeomFromText à cause d’une étape de validation supplémentaire. Si le point doit être construit à
partir de coordonnées latitude longitude et que la performance est recherchée, utiliser la fonction ST_MakePoint ou
son équivalent OGC ST_Point.
Cette méthode implémente la spécification OGC Simple Features Implementation Specification for SQL 1.1. s3.2.6.2 -
l’option SRID est issue des tests de conformité.
Exemples
Voir aussi
7.8.1.15 ST_PolygonFromText
ST_PolygonFromText — Créé une Geometry depuis un WKT avec le SRID donné. Si le SRID n’est pas fourni, il sera défini par
défaut à 0.
Synopsis
Description
Crée une géométrie à partir de WKT avec le SRID donné. Si le SRID n’est pas donné, la valeur par défaut est 0. Retourne null
si WKT n’est pas un polygone.
OGC SPEC 3.2.6.2 - l’option SRID est issue des tests de conformité
Manuel PostGIS 3.4.0dev 211 / 870
Note
Si vous êtes absolument sûrs que toutes les géométries WKT sont des polygones, ne pas utiliser cette fonction. Elle
est plus lente que ST_GeomFromText à cause d’une étape de validation supplémentaire.
Cette méthode implémente la spécification OGC Simple Features Implementation Specification for SQL 1.1. s3.2.6.2
Exemples
point_is_not_poly
----------
t
Voir aussi
ST_GeomFromText
7.8.1.16 ST_WKTToSQL
ST_WKTToSQL — Retourne un objet ST_Geometry à partir de sa représentation textuelle Well-Known Text (WKT). Alias pour
ST_GeomFromText
Synopsis
Description
Voir aussi
ST_GeomFromText
7.8.2.1 ST_GeogFromWKB
ST_GeogFromWKB — Retourne un objet de type geography à partir de sa représentation binaire Well-Know Binary (WKB ou
EWKB).
Manuel PostGIS 3.4.0dev 212 / 870
Synopsis
Description
ST_GeogFromWKB prend en paramètre une représentation binaire d’une géométrie (WKB ou EWKB) et crée une instance de
type geography. Cette fonction assure le rôle de Geometry Factory en SQL.
Si le SRID n’est pas spécifié, la valeur 4326 est prise (WGS 84 long lat).
Exemples
--Although bytea rep contains single \, these need to be escaped when inserting into a ←-
table
SELECT ST_AsText(
ST_GeogFromWKB(E'\\001\\002\\000\\000\\000\\002\\000\\000\\000\\037\\205\\353Q ←-
\\270~\\\\\\300\\323Mb\\020X\\231C@\\020X9\\264\\310~\\\\\\300)\\\\\\217\\302\\365\\230 ←-
C@')
);
st_astext
------------------------------------------------------
LINESTRING(-113.98 39.198,-113.981 39.195)
(1 row)
Voir aussi
ST_GeogFromText, ST_AsBinary
7.8.2.2 ST_GeomFromEWKB
ST_GeomFromEWKB — Retourne un objet ST_Geometry à partir de sa représentation binaire étendue (Extended Well-Known
Binary representation, EWKB).
Synopsis
Description
Retourne un objet ST_Geometry à partir de sa représentation textuelle étendue OGC (Extended Well-Known Text representation,
EWKT).
Note
Le format EWKB n’est pas une norme OGC, mais un format spécifique à PostGIS incluant l’identifiant du système de
référence des coordonnées (SRID)
Manuel PostGIS 3.4.0dev 213 / 870
Cette fonction prend en charge les triangles et les réseaux irréguliers triangulés (TIN).
Exemples
line string binary rep 0f LINESTRING(-71.160281 42.258729,-71.160837 42.259113,-71.161144 42.25932) in NAD 83 long lat
(4269).
Note
NOTE : Si le paramètre standard_conforming_strings est à la valeur off, il est nécessaire d’échapper les car-
actères \ et ’ avec \ et ". Ceci diffère de la représentation AsEWKB.
Note
Dans PostgreSQL 9.1+ - standard_conforming_strings est activé par défaut, alors que dans les versions précédentes
il était désactivé. Vous pouvez modifier les valeurs par défaut selon vos besoins pour une seule requête ou au niveau
de la base de données ou du serveur. Voici comment procéder avec standard_conforming_strings = on. Dans ce cas,
nous échappons le ’ avec le standard ansi ’, mais les barres obliques ne sont pas échappées
Voir aussi
7.8.2.3 ST_GeomFromWKB
ST_GeomFromWKB — Retourne un objet de type geometry à partir de sa représentation binaire Well-Know Binary (WKB) et
d’un SRID optionnel.
Synopsis
Description
ST_GeomFromWKB prend en paramètre une représentation binaire d’une géométrie (WKB ou EWKB) et un SRID option-
nel (SRID) et crée une instance de type geometry. Cette fonction assure le rôle de Geometry Factory en SQL. Alias pour
ST_WKBToSQL.
Si le SRID n’est pas précisé, la valeur 0 (indéfini) est prise par défaut.
Cette méthode implémente la spécification OGC Simple Features Implementation Specification for SQL 1.1. s3.2.7.2 - le
paramètre optionnel est issu des tests de conformité
Exemples
--Although bytea rep contains single \, these need to be escaped when inserting into a ←-
table
-- unless standard_conforming_strings is set to on.
SELECT ST_AsEWKT(
ST_GeomFromWKB(E'\\001\\002\\000\\000\\000\\002\\000\\000\\000\\037\\205\\353Q ←-
\\270~\\\\\\300\\323Mb\\020X\\231C@\\020X9\\264\\310~\\\\\\300)\\\\\\217\\302\\365\\230 ←-
C@',4326)
);
st_asewkt
------------------------------------------------------
SRID=4326;LINESTRING(-113.98 39.198,-113.981 39.195)
(1 row)
SELECT
ST_AsText(
ST_GeomFromWKB(
ST_AsEWKB('POINT(2 5)'::geometry)
)
);
st_astext
------------
POINT(2 5)
(1 row)
Voir aussi
7.8.2.4 ST_LineFromWKB
ST_LineFromWKB — Construit une LINESTRING depuis la représentation binaire WKB et le srid donné
Synopsis
Description
ST_LineFromWKB prend en paramètre une représentation binaire d’une géométrie (WKB ou EWKB) et un SRID (SRID)
et crée une instance du bon type géométrique, en l’occurence une LINESTRING. Cette fonction assure le rôle de Geometry
Factory en SQL.
Si le SRID n’est pas précisé, la valeur 0 est prise par défaut. NULL est retourné si le paramètre bytea donné ne représente pas
une LINESTRING.
Note
OGC SPEC 3.2.6.2 - option SRID issue des tests de conformité.
Note
Si vous êtes sûrs que toutes les géométries WKT sont des LINESTRINGs, la fonction ST_GeomFromWKB est plus
efficace car elle ne contrôle pas le type de la géométrie renvoyée.
Cette méthode implémente la spécification OGC Simple Features Implementation Specification for SQL 1.1. s3.2.6.2
Exemples
Voir aussi
ST_GeomFromWKB, ST_LinestringFromWKB
7.8.2.5 ST_LinestringFromWKB
ST_LinestringFromWKB — Construit une géométrie depuis la représentation binaire WKB et le SRID donné.
Synopsis
Description
La fonction ST_LinestringFromWKB prend en paramètre une représentation binaire d’une géométrie (WKB ou EWKB)
et un SRID (SRID) et crée une instance du bon type géométrique, en l’occurence une LINESTRING. Cette fonction assure le
rôle de Geometry Factory en SQL.
Si le SRID n’est pas précisé, la valeur 0 est prise par défaut. NULL est retourné si le paramètre bytea donné ne représente pas
une LINESTRING. Alias pour ST_LineFromWKB.
Manuel PostGIS 3.4.0dev 216 / 870
Note
OGC SPEC 3.2.6.2 - SRID optionnel issu des tests de conformité.
Note
Si vous êtes sûrs que toutes les géométries WKT sont des LINESTRINGs, la fonction ST_GeomFromWKB est plus
efficace car elle ne contrôle pas le type de la géométrie renvoyée.
Cette méthode implémente la spécification OGC Simple Features Implementation Specification for SQL 1.1. s3.2.6.2
Exemples
SELECT
ST_LineStringFromWKB(
ST_AsBinary(ST_GeomFromText('LINESTRING(1 2, 3 4)'))
) AS aline,
ST_LinestringFromWKB(
ST_AsBinary(ST_GeomFromText('POINT(1 2)'))
) IS NULL AS null_return;
aline | null_return
------------------------------------------------
010200000002000000000000000000F ... | t
Voir aussi
ST_GeomFromWKB, ST_LineFromWKB
7.8.2.6 ST_PointFromWKB
ST_PointFromWKB — Construit une géométrie depuis la représentation binaire WKB et le SRID donné.
Synopsis
Description
ST_PointFromWKB prend en paramètre une représentation binaire d’une géométrie et un SRID (SRID) et crée une instance
du bon type géométrique, en l’occurence une POINT . Cette fonction assure le rôle de Geometry Factory en SQL.
Si le SRID n’est pas précisé, la valeur 0 est prise par défaut. NULL est retourné si le paramètre bytea donné ne représente pas
une géométrie POINT.
Cette méthode implémente la spécification OGC Simple Features Implementation Specification for SQL 1.1. s3.2.7.2
Exemples
SELECT
ST_AsText(
ST_PointFromWKB(
ST_AsEWKB('POINT(2 5)'::geometry)
)
);
st_astext
------------
POINT(2 5)
(1 row)
SELECT
ST_AsText(
ST_PointFromWKB(
ST_AsEWKB('LINESTRING(2 5, 2 6)'::geometry)
)
);
st_astext
-----------
(1 row)
Voir aussi
ST_GeomFromWKB, ST_LineFromWKB
7.8.2.7 ST_WKBToSQL
ST_WKBToSQL — Retourne un objet ST_Geometry à partir de sa représentation textuelle Well-Known Binary (WKB). Alias
pour ST_GeomFromWKB sans SRID
Synopsis
Description
Voir aussi
ST_GeomFromWKB
7.8.3.1 ST_Box2dFromGeoHash
Synopsis
Description
Exemples
SELECT ST_Box2dFromGeoHash('9qqj7nmxncgyy4d0dbxqz0');
st_geomfromgeohash
--------------------------------------------------
BOX(-115.172816 36.114646,-115.172816 36.114646)
st_box2dfromgeohash
----------------------
BOX(-180 -90,180 90)
Voir aussi
7.8.3.2 ST_GeomFromGeoHash
Synopsis
Description
Retourne une Geometry à partir d’une chaîne GeoHash. La géométrie sera un polygone représentant les limites du GeoHash.
Si aucune precision n’est spécifiée, ST_GeomFromGeoHash retourne un polygone basé sur la précision complète de la
chaîne GeoHash en entrée.
Si precision est spécifié, ST_GeomFromGeoHash utilise autant de caractère du GeoHash pour créer le polygone.
Disponibilité : 2.1.0
Manuel PostGIS 3.4.0dev 219 / 870
Exemples
SELECT ST_AsText(ST_GeomFromGeoHash('9qqj7nmxncgyy4d0dbxqz0'));
st_astext
-----------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------
POLYGON((-115.17282128334 36.1146408319473,-115.17282128334 ←-
36.1146461963654,-115.172810554504 36.1146461963654,-115.172810554504 ←-
36.1146408319473,-115.17282128334 36.1146408319473))
Voir aussi
ST_GeoHash,ST_Box2dFromGeoHash, ST_PointFromGeoHash
7.8.3.3 ST_GeomFromGML
ST_GeomFromGML — Prend en paramètre une représentation GML d’une géométrie et renvoie un objet PostGIS de type
geometry.
Synopsis
Description
Cette fonction prend en charge les triangles et les réseaux irréguliers triangulés (TIN).
Le format GML supporte des objets de dimensions différentes (2D et 3D dans la même MultiGeometry par exemple). PostGIS
ne supportant pas cela, la fonction convertit toute la géometrie en 2D si une seule coordonnée Z manque.
Le format GML supporte des objets ayant des SRID différents dans la même MultiGeometry. PostGIS ne supportant pas
cela, ST_GeomFromGML reprojète toutes les sous géométries dans le SRS du noeud racine. Si aucun attribut srsName n’est
disponible pour le noeud racine GML, la fonction renvoie une erreur.
La fonction ST_GeomFromGML n’impose pas d’utiliser un espace de noms GML explicite. Pour les usages courants, il peut
être ignoré. Il est en revanche nécessaire en cas d’utilisation de la fonctionnalité XLink dans le GML.
Note
La fonction ST_GeomFromGML ne supporte pas les géométries de type SQL/MM courbes.
SELECT ST_GeomFromGML('
<gml:LineString srsName="EPSG:4269">
<gml:coordinates>
-71.16028,42.258729 -71.160837,42.259112 ←-
-71.161143,42.25932
</gml:coordinates>
</gml:LineString
>');
SELECT ST_GeomFromGML('
<gml:LineString xmlns:gml="http://www.opengis.net/gml"
xmlns:xlink="http://www.w3.org/1999/xlink"
srsName="urn:ogc:def:crs:EPSG::4269">
<gml:pointProperty>
<gml:Point gml:id="p1"
><gml:pos
>42.258729 -71.16028</gml:pos
></gml:Point>
</gml:pointProperty>
<gml:pos
>42.259112 -71.160837</gml:pos>
<gml:pointProperty>
<gml:Point xlink:type="simple" xlink:href="#p1"/>
</gml:pointProperty>
</gml:LineString
>'););
Manuel PostGIS 3.4.0dev 221 / 870
SELECT ST_AsEWKT(ST_GeomFromGML('
<gml:PolyhedralSurface>
<gml:polygonPatches>
<gml:PolygonPatch>
<gml:exterior>
<gml:LinearRing
><gml:posList srsDimension="3"
>0 0 0 0 0 1 0 1 1 0 1 0 0 0 0</gml:posList
></gml:LinearRing>
</gml:exterior>
</gml:PolygonPatch>
<gml:PolygonPatch>
<gml:exterior>
<gml:LinearRing
><gml:posList srsDimension="3"
>0 0 0 0 1 0 1 1 0 1 0 0 0 0 0</gml:posList
></gml:LinearRing>
</gml:exterior>
</gml:PolygonPatch>
<gml:PolygonPatch>
<gml:exterior>
<gml:LinearRing
><gml:posList srsDimension="3"
>0 0 0 1 0 0 1 0 1 0 0 1 0 0 0</gml:posList
></gml:LinearRing>
</gml:exterior>
</gml:PolygonPatch>
<gml:PolygonPatch>
<gml:exterior>
<gml:LinearRing
><gml:posList srsDimension="3"
>1 1 0 1 1 1 1 0 1 1 0 0 1 1 0</gml:posList
></gml:LinearRing>
</gml:exterior>
</gml:PolygonPatch>
<gml:PolygonPatch>
<gml:exterior>
<gml:LinearRing
><gml:posList srsDimension="3"
>0 1 0 0 1 1 1 1 1 1 1 0 0 1 0</gml:posList
></gml:LinearRing>
</gml:exterior>
</gml:PolygonPatch>
<gml:PolygonPatch>
<gml:exterior>
<gml:LinearRing
><gml:posList srsDimension="3"
>0 0 1 1 0 1 1 1 1 0 1 1 0 0 1</gml:posList
></gml:LinearRing>
</gml:exterior>
</gml:PolygonPatch>
</gml:polygonPatches>
</gml:PolyhedralSurface
>'));
-- result --
POLYHEDRALSURFACE(((0 0 0,0 0 1,0 1 1,0 1 0,0 0 0)),
((0 0 0,0 1 0,1 1 0,1 0 0,0 0 0)),
((0 0 0,1 0 0,1 0 1,0 0 1,0 0 0)),
((1 1 0,1 1 1,1 0 1,1 0 0,1 1 0)),
Manuel PostGIS 3.4.0dev 222 / 870
Voir aussi
7.8.3.4 ST_GeomFromGeoJSON
ST_GeomFromGeoJSON — Prend en entrée une géométrie au format geojson et renvoie un objet Postgis de type geometry.
Synopsis
Description
Note
Si JSON-C n’est pas disponible sur le système, une erreur est renvoyée. Pour activer JSON-C, lancer configure --with-
jsondir=/path/to/json-c. Cf. Section 2.2.3 pour plus de détails.
Exemples
SELECT ST_AsText(ST_GeomFromGeoJSON('{"type":"Point","coordinates":[-48.23456,20.12345]}')) ←-
As wkt;
wkt
------
POINT(-48.23456 20.12345)
-- a 3D linestring
SELECT ST_AsText(ST_GeomFromGeoJSON('{"type":"LineString","coordinates ←-
":[[1,2,3],[4,5,6],[7,8,9]]}')) As wkt;
wkt
-------------------
LINESTRING(1 2,4 5,7 8)
Manuel PostGIS 3.4.0dev 223 / 870
Voir aussi
7.8.3.5 ST_GeomFromKML
ST_GeomFromKML — Prend en entrée une géométrie au format KML et renvoie un objet Postgis de type geometry.
Synopsis
Description
Construit un objet Postgis de type geometry à partir d’une représentation OGC KML.
La fonction ST_GeomFromKML fonctionne uniquement avec le fragment KML représentant la géométrie. Elle renvoie une
erreur si un document KML complet est utilisé.
versions OGC KML supportées :
Note
La fonction ST_GeomFromGML ne supporte pas les géométries de type SQL/MM courbes.
SELECT ST_GeomFromKML('
<LineString>
<coordinates
>-71.1663,42.2614
-71.1667,42.2616</coordinates>
</LineString
>');
Voir aussi
7.8.3.6 ST_GeomFromTWKB
ST_GeomFromTWKB — Crée une instance de geometry depuis une représentation de géométrie en TWKB ("Tiny Well-Known
Binary").
Manuel PostGIS 3.4.0dev 224 / 870
Synopsis
Description
La fonction ST_GeomFromTWKB prend une représentation de géométrie TWKB ("Tiny Well-Known Binary") et crée une
instance du type de géométrie approprié.
Exemples
st_astext
-----------------------------
LINESTRING(126 34, 127 35)
(1 row)
SELECT ST_AsEWKT(
ST_GeomFromTWKB(E'\\x620002f7f40dbce4040105')
);
st_asewkt
------------------------------------------------------
LINESTRING(-113.98 39.198,-113.981 39.195)
(1 row)
Voir aussi
ST_AsTWKB
7.8.3.7 ST_GMLToSQL
ST_GMLToSQL — Retourne un objet de type ST_Geometry à partir de sa représentation GML. Alias pour ST_GeomFromGML
Synopsis
Description
Cette méthode implémente la spécification SQL/MM. SQL-MM 3 : 5.1.50 (sauf pour le support des courbes).
Disponibilité : 1.5, nécessite libxml2 1.6+
Amélioration : 2.0.0 introduction du support TIN et surfaces polyédriques.
Amélioration : 2.0.0 paramètre optionnel de srid par défaut ajouté.
Voir aussi
7.8.3.8 ST_LineFromEncodedPolyline
ST_LineFromEncodedPolyline — Crée une LineString depuis une polyligne encodée ( "Encoded Polyline" )
Synopsis
Description
Crée une LineString à partir d’une chaîne de polyligne encodée ( "Encoded Polyline")
L’option precision spécifie le nombre de décimales qui seront préservées dans la polyligne encodée. La valeur doit être la
même à l’encodage et au décodage, sinon les coordonnées seront incorrectes.
Voir http://developers.google.com/maps/documentation/utilities/polylinealgorithm
Disponibilité : 2.2.0
Exemples
Voir aussi
ST_AsEncodedPolyline
7.8.3.9 ST_PointFromGeoHash
Synopsis
Description
Retourne une point à partir d’une chaîne GeoHash. Le point représente le centre du GeoHash.
Si aucune precision n’est spécifiée, ST_PointFromGeoHash retourne une un point basé sur la précision complète de la chaîne
GeoHash en entrée.
Si precision est spécifié, ST_PointFromGeoHash utilise autant de caractère du GeoHash pour créer le point.
Disponibilité : 2.1.0
Manuel PostGIS 3.4.0dev 226 / 870
Exemples
SELECT ST_AsText(ST_PointFromGeoHash('9qqj7nmxncgyy4d0dbxqz0'));
st_astext
------------------------------
POINT(-115.172816 36.114646)
Voir aussi
7.8.3.10 ST_FromFlatGeobufToTable
ST_FromFlatGeobufToTable — Crée une table basée sur la structure des données FlatGeobuf.
Synopsis
Description
Crée une table basée sur la structure des données FlatGeobuf. (http://flatgeobuf.org).
schema Nom du schéma.
table Nom de la table.
data Données FlatGeobuf en entrée.
Disponibilité : 3.2.0
7.8.3.11 ST_FromFlatGeobuf
Synopsis
Description
Lit les données FlatGeobuf (http://flatgeobuf.org). REMARQUE : les chaînes binaires de PostgreSQL ne peuvent pas dépasser 1
Go.
tabletype référence à un type de table.
data données d’entrée FlatGeobuf.
Disponibilité : 3.2.0
Manuel PostGIS 3.4.0dev 227 / 870
7.9.1.1 ST_AsEWKT
ST_AsEWKT — Renvoie la représentation Well-Known Text (WKT) de la géométrie avec les métadonnées SRID.
Synopsis
Description
Renvoie la représentation Well-Known Text de la géométrie préfixée par le SRID. L’argument facultatif maxdecimaldigits
peut être utilisé pour réduire le nombre maximal de chiffres décimaux après la virgule flottante utilisés dans la sortie (valeur par
défaut : 15).
Pour effectuer la conversion inverse de la représentation EWKT en géométrie PostGIS, utilisez ST_GeomFromEWKT.
Warning
L’utilisation du paramètre maxdecimaldigits peut rendre la géométrie de sortie invalide. Pour éviter cela, utilisez
d’abord ST_ReducePrecision avec une taille de grille appropriée.
Note
La spécification WKT ne comprend pas le SRID. Pour obtenir le format WKT de l’OGC, utilisez ST_AsText.
Warning
Le format WKT ne maintient pas la précision. Pour éviter la troncature flottante, utilisez le format ST_AsBinary ou
ST_AsEWKB pour le transport.
Cette fonction prend en charge les triangles et les réseaux irréguliers triangulés (TIN).
Manuel PostGIS 3.4.0dev 228 / 870
Exemples
SELECT ST_AsEWKT('0103000020E61000000100000005000000000000
000000000000000000000000000000000000000000000000000000
F03F000000000000F03F000000000000F03F000000000000F03
F000000000000000000000000000000000000000000000000'::geometry);
st_asewkt
--------------------------------
SRID=4326;POLYGON((0 0,0 1,1 1,1 0,0 0))
(1 row)
SELECT ST_AsEWKT('0108000080030000000000000060 ←-
E30A4100000000785C0241000000000000F03F0000000018
E20A4100000000485F024100000000000000400000000018
E20A4100000000305C02410000000000000840')
--st_asewkt---
CIRCULARSTRING(220268 150415 1,220227 150505 2,220227 150406 3)
Voir aussi
7.9.1.2 ST_AsText
ST_AsText — Renvoie la représentation Well-Known Text (WKT) de la géométrie/geography sans métadonnées SRID.
Synopsis
Description
Renvoie la représentation OGC Well-Known Text (WKT) de la géométrie/geography. L’argument facultatif maxdecimaldigits
peut être utilisé pour limiter le nombre de chiffres après la virgule dans les ordonnées de sortie (valeur par défaut : 15).
Pour effectuer la conversion inverse de la représentation WKT en géométrie PostGIS, utilisez ST_GeomFromText.
Note
La représentation WKT standard de l’OGC n’inclut pas le SRID. Pour inclure le SRID dans la représentation de sortie,
utilisez la fonction PostGIS non standard ST_AsEWKT
Warning
La représentation textuelle des nombres en WKT peut ne pas maintenir une précision totale en virgule flottante. Pour
garantir une précision totale pour le stockage ou le transport des données, il est préférable d’utiliser le format Well-
Known Binary (WKB) (voir ST_AsBinary et maxdecimaldigits).
Manuel PostGIS 3.4.0dev 229 / 870
Warning
L’utilisation du paramètre maxdecimaldigits peut rendre la géométrie de sortie invalide. Pour éviter cela, utilisez
d’abord ST_ReducePrecision avec une taille de grille appropriée.
Cette méthode implémente la spécification OGC Simple Features Implementation Specification for SQL 1.1. s2.1.1.1
Exemples
SELECT ST_AsText('01030000000100000005000000000000000000
000000000000000000000000000000000000000000000000
F03F000000000000F03F000000000000F03F000000000000F03
F000000000000000000000000000000000000000000000000');
st_astext
--------------------------------
POLYGON((0 0,0 1,1 1,1 0,0 0))
Voir aussi
7.9.2.1 ST_AsBinary
ST_AsBinary — Renvoie la représentation OGC/ISO Well-Known Binary (WKB) de la géométrie/geography sans les métadon-
nées SRID.
Synopsis
Description
Renvoie la représentation OGC/ISO Well-Known Binary (WKB) de la géométrie. La première variante de fonction propose
par défaut un encodage utilisant l’endian de la machine serveur. La deuxième variante de la fonction prend un argument texte
spécifiant l’encodage endian, soit little-endian (’NDR’) ou big-endian (’XDR’).
Le format WKB est utile pour lire les données géométriques de la base de données et maintenir une précision numérique totale.
Cela permet d’éviter les arrondis de précision qui peuvent se produire avec les formats texte tels que WKT.
Pour effectuer la conversion inverse de la géométrie WKB en géométrie PostGIS, utilisez ST_GeomFromWKB.
Note
Le format WKB de l’OGC/ISO ne comprend pas le SRID. Pour obtenir le format EWKB qui inclut le SRID, utilisez
ST_AsEWKB
Note
Le comportement par défaut dans PostgreSQL 9.0 a été modifié pour sortir bytea en encodage hexagonal. Si vos outils
GUI nécessitent l’ancien comportement, alors SET bytea_output=’escape’ dans votre base de données.
Cette méthode implémente la spécification OGC Simple Features Implementation Specification for SQL 1.1. s2.1.1.1
Cette fonction prend en charge les triangles et les réseaux irréguliers triangulés (TIN).
Exemples
st_asbinary
--------------------------------
\x01030000000100000005000000000000000000000000000000000000000000000000000000000000
000000f03f000000000000f03f000000000000f03f000000000000f03f0000000000000000000000
00000000000000000000000000
Manuel PostGIS 3.4.0dev 231 / 870
Voir aussi
7.9.2.2 ST_AsEWKB
ST_AsEWKB — Renvoie la représentation Extended Well-Known Binary (EWKB) de la géométrie avec les métadonnées SRID.
Synopsis
Description
Renvoie la représentation Extended Well-Known Binary (EWKB) de la géométrie avec les métadonnées SRID. La première
variante de la fonction utilise par défaut l’encodage endian de la machine du serveur. La deuxième variante de la fonction prend
un argument texte spécifiant l’encodage endian, soit little-endian (’NDR’) ou big-endian (’XDR’).
Le format WKB est utile pour lire les données géométriques de la base de données et maintenir une précision numérique totale.
Cela permet d’éviter les arrondis de précision qui peuvent se produire avec les formats texte tels que WKT.
Pour effectuer la conversion inverse de la géométrie EWKB en géométrie PostGIS, utilisez ST_GeomFromEWKB.
Note
Pour obtenir le format OGC/ISO WKB, utilisez ST_AsBinary. Notez que le format OGC/ISO WKB ne comprend pas le
SRID.
Cette fonction prend en charge les triangles et les réseaux irréguliers triangulés (TIN).
Exemples
st_asewkb
--------------------------------
\x0103000020e610000001000000050000000000000000000000000000000000000000000000000000
00000000000000f03f000000000000f03f000000000000f03f000000000000f03f00000000000000
0000000000000000000000000000000000
Manuel PostGIS 3.4.0dev 232 / 870
Voir aussi
7.9.2.3 ST_AsHEXEWKB
ST_AsHEXEWKB — Renvoie une géométrie au format HEXEWKB (en tant que texte) en utilisant l’encodage little-endian
(NDR) ou big-endian (XDR).
Synopsis
Description
Renvoie une géométrie au format HEXEWKB (en tant que texte) en utilisant l’encodage little-endian (NDR) ou big-endian
(XDR). Si aucun encodage n’est spécifié, NDR est utilisé.
Note
Disponibilité : 1.2.2
Exemples
st_ashexewkb
--------
0103000020E6100000010000000500
00000000000000000000000000000000
00000000000000000000000000000000F03F
000000000000F03F000000000000F03F000000000000F03
F000000000000000000000000000000000000000000000000
Manuel PostGIS 3.4.0dev 233 / 870
7.9.3.1 ST_AsEncodedPolyline
Synopsis
Description
Renvoie la géométrie sous forme de polyligne encodée. Ce format est utilisé par Google Maps avec précision=5 et par Open
Source Routing Machine avec précision=5 et 6.
L’option precision spécifie le nombre de décimales qui seront préservées dans la polyligne encodée. La valeur doit être la
même à l’encodage et au décodage, sinon les coordonnées seront incorrectes.
Disponibilité : 2.2.0
Exemples
Base
SELECT ST_AsEncodedPolyline(GeomFromEWKT('SRID=4326;LINESTRING(-120.2 38.5,-120.95 ←-
40.7,-126.453 43.252)'));
--result--
|_p~iF~ps|U_ulLnnqC_mqNvxq ` @
Utiliser en conjonction avec geography linestring et geography segmentize, et mettre sur google maps
-- the SQL for Boston to San Francisco, segments every 100 KM
SELECT ST_AsEncodedPolyline(
ST_Segmentize(
ST_GeogFromText('LINESTRING(-71.0519 42.4935,-122.4483 37.64)'),
100000)::geometry) As encodedFlightPath;
Le javascript ressemblera à quelque chose comme ceci où la variable $ est remplacée par le résultat de la requête
<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?libraries= ←-
geometry"
></script>
<script type="text/javascript">
flightPath = new google.maps.Polyline({
path: google.maps.geometry.encoding.decodePath("$encodedFlightPath ←-
"),
map: map,
strokeColor: '#0000CC',
strokeOpacity: 1.0,
strokeWeight: 4
});
</script>
Voir aussi
ST_LineFromEncodedPolyline, ST_Segmentize
Manuel PostGIS 3.4.0dev 234 / 870
7.9.3.2 ST_AsFlatGeobuf
Synopsis
Description
Renvoie une représentation FlatGeobuf (http://flatgeobuf.org) d’un ensemble de lignes correspondant à une FeatureCollection.
REMARQUE : les octets PostgreSQL ne peuvent pas dépasser 1 Go.
row données de ligne avec au moins une colonne de géométrie.
index basculer la création d’un index spatial. La valeur par défaut est false.
geom_name est le nom de la colonne de géométrie dans les données de la ligne. Si elle est NULL, elle prendra par défaut la
première colonne de géométrie trouvée.
Disponibilité : 3.2.0
7.9.3.3 ST_AsGeobuf
Synopsis
Description
Renvoie une représentation Geobuf (https://github.com/mapbox/geobuf) d’un ensemble de lignes correspondant à une FeatureC-
ollection. Chaque géométrie en entrée est analysée afin de déterminer la précision maximale pour un stockage optimal. Notez
que Geobuf dans sa forme actuelle ne peut pas être streamé, donc la sortie complète sera assemblée en mémoire.
row données de ligne avec au moins une colonne de géométrie.
geom_name est le nom de la colonne de géométrie dans les données de la ligne. Si elle est NULL, elle prendra par défaut la
première colonne de géométrie trouvée.
Disponibilité : 2.4.0
Exemples
7.9.3.4 ST_AsGeoJSON
Synopsis
Description
Renvoie une géométrie sous la forme d’une "géométrie" GeoJSON, ou une ligne sous la forme d’une "caractéristique" GeoJSON.
(Voir le spécifications GeoJSON RFC 7946). Les géométries 2D et 3D sont toutes deux supportées. GeoJSON ne supporte que
les types de géométrie SFS 1.1 (pas de support des courbes par exemple).
L’argument maxdecimaldigits peut être utilisé pour réduire le nombre maximum de décimales utilisées dans la sortie (par
défaut 9). Si vous utilisez EPSG:4326 et que vous sortez la géométrie uniquement pour l’affichage, maxdecimaldigits=6
peut être un bon choix pour de nombreuses cartes.
Warning
L’utilisation du paramètre maxdecimaldigits peut rendre la géométrie de sortie invalide. Pour éviter cela, utilisez
d’abord ST_ReducePrecision avec une taille de grille appropriée.
L’argument options peut être utilisé pour ajouter BBOX ou CRS dans la sortie GeoJSON :
La spécification GeoJSON indique que les polygones sont orientés selon la règle de la main droite, et certains clients exigent
cette orientation. Ceci peut être assuré en utilisant ST_ForcePolygonCCW . La spécification exige également que la géométrie
soit dans le système de coordonnées WGS84 (SRID = 4326). Si nécessaire, la géométrie peut être projetée en WGS84 en utilisant
ST_Transform : ST_Transform( geom, 4326 ).
GeoJSON peut être testé et visualisé en ligne sur geojson.io et geojsonlint.com. Il est largement pris en charge par les frameworks
de cartographie web :
Disponibilité : 1.3.4
Disponibilité : 1.5.0 Le support de la géographie a été introduit.
Modifié : 2.0.0 supporte les args par défaut et les args nommés.
Modifié : la version 3.0.0 prend en charge les enregistrements en tant que données d’entrée
Modifié : 3.0.0 SRID de sortie si ce n’est pas EPSG:4326.
Exemples
st_asgeojson
-----------------------------------------------------------------------------------------------------
Une autre façon de générer des caractéristiques avec une propriété id est d’utiliser les fonctions et les opérateurs JSONB :
SELECT jsonb_build_object(
'type', 'Feature',
'id', id,
'geometry', ST_AsGeoJSON(geom)::jsonb,
'properties', to_jsonb( t.* ) - 'id' - 'geom'
) AS json
FROM (VALUES (1, 'one', 'POINT(1 1)'::geometry)) AS t(id, name, geom);
json
-----------------------------------------------------------------------------------------------------
{"id": 1, "type": "Feature", "geometry": {"type": "Point", "coordinates": [1, 1]}, " ←-
properties": {"name": "one"}}
N’oubliez pas de transformer vos données en longitude et latitude WGS84 pour vous conformer à la spécification GeoJSON :
SELECT ST_AsGeoJSON(ST_Transform(geom,4326)) from fe_edges limit 1;
st_asgeojson
-----------------------------------------------------------------------------------------------------
{"type":"MultiLineString","coordinates":[[[-89.734634999999997,31.492072000000000],
[-89.734955999999997,31.492237999999997]]]}
{"type":"LineString","coordinates":[[1,2,3],[4,5,6]]}
Manuel PostGIS 3.4.0dev 237 / 870
Voir aussi
7.9.3.5 ST_AsGML
Synopsis
Description
Renvoie la géométrie sous la forme d’un élément GML (Geography Markup Language). Le paramètre de version, s’il est spécifié,
peut être 2 ou 3. Si aucun paramètre de version n’est spécifié, la valeur par défaut est 2. L’argument maxdecimaldigits peut
être utilisé pour réduire le nombre maximum de décimales utilisées dans la sortie (15 par défaut).
Warning
L’utilisation du paramètre maxdecimaldigits peut rendre la géométrie de sortie invalide. Pour éviter cela, utilisez
d’abord ST_ReducePrecision avec une taille de grille appropriée.
L’argument ’namespace prefix’ peut être utilisé pour spécifier un préfixe d’espace de noms personnalisé ou aucun préfixe (s’il est
vide). Si l’argument est nul ou omis, le préfixe ’gml’ est utilisé
Disponibilité : 1.3.2
Disponibilité : 1.5.0 Le support de la géographie a été introduit.
Amélioration : la prise en charge du préfixe 2.0.0 a été introduite. L’option 4 pour GML3 a été introduite pour permettre
l’utilisation de LineString au lieu de Curve tag pour les lignes. La prise en charge GML3 des surfaces polyédriques et des TINS
a été introduite. L’option 32 a été introduite pour produire la boîte.
Modifié : 2.0.0 utiliser les args nommés par défaut
Amélioration : 2.1.0 La prise en charge des identifiants a été introduite pour GML 3.
Manuel PostGIS 3.4.0dev 238 / 870
Note
Seule la version 3+ de ST_AsGML prend en charge les surfaces polyédriques et les TINS.
Cette fonction prend en charge les triangles et les réseaux irréguliers triangulés (TIN).
Exemples : Version 2
Exemples : Version 3
-- Output the envelope (32) , reverse (lat lon instead of lon lat) (16), long srs (1)= 32 | ←-
16 | 1 = 49 --
SELECT ST_AsGML(3, ST_GeomFromText('LINESTRING(1 2, 3 4, 10 20)',4326), 5, 49);
st_asgml
Manuel PostGIS 3.4.0dev 239 / 870
--------
<gml:Envelope srsName="urn:ogc:def:crs:EPSG::4326">
<gml:lowerCorner
>2 1</gml:lowerCorner>
<gml:upperCorner
>20 10</gml:upperCorner>
</gml:Envelope
>
-- Polyhedral Example --
SELECT ST_AsGML(3, ST_GeomFromEWKT('POLYHEDRALSURFACE( ((0 0 0, 0 0 1, 0 1 1, 0 1 0, 0 0 0) ←-
),
((0 0 0, 0 1 0, 1 1 0, 1 0 0, 0 0 0)), ((0 0 0, 1 0 0, 1 0 1, 0 0 1, 0 0 0)),
((1 1 0, 1 1 1, 1 0 1, 1 0 0, 1 1 0)),
((0 1 0, 0 1 1, 1 1 1, 1 1 0, 0 1 0)), ((0 0 1, 1 0 1, 1 1 1, 0 1 1, 0 0 1)) )'));
st_asgml
--------
<gml:PolyhedralSurface>
<gml:polygonPatches>
<gml:PolygonPatch>
<gml:exterior>
<gml:LinearRing>
<gml:posList srsDimension="3"
>0 0 0 0 0 1 0 1 1 0 1 0 0 0 0</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:PolygonPatch>
<gml:PolygonPatch>
<gml:exterior>
<gml:LinearRing>
<gml:posList srsDimension="3"
>0 0 0 0 1 0 1 1 0 1 0 0 0 0 0</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:PolygonPatch>
<gml:PolygonPatch>
<gml:exterior>
<gml:LinearRing>
<gml:posList srsDimension="3"
>0 0 0 1 0 0 1 0 1 0 0 1 0 0 0</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:PolygonPatch>
<gml:PolygonPatch>
<gml:exterior>
<gml:LinearRing>
<gml:posList srsDimension="3"
>1 1 0 1 1 1 1 0 1 1 0 0 1 1 0</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:PolygonPatch>
<gml:PolygonPatch>
<gml:exterior>
<gml:LinearRing>
<gml:posList srsDimension="3"
>0 1 0 0 1 1 1 1 1 1 1 0 0 1 0</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:PolygonPatch>
<gml:PolygonPatch>
<gml:exterior>
<gml:LinearRing>
Manuel PostGIS 3.4.0dev 240 / 870
<gml:posList srsDimension="3"
>0 0 1 1 0 1 1 1 1 0 1 1 0 0 1</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:PolygonPatch>
</gml:polygonPatches>
</gml:PolyhedralSurface
>
Voir aussi
ST_GeomFromGML
7.9.3.6 ST_AsKML
Synopsis
Description
Renvoie la géométrie sous la forme d’un élément KML (Keyhole Markup Language). Le nombre maximal de décimales par
défaut est de 15, la valeur par défaut du namespace est sans préfixe.
Warning
L’utilisation du paramètre maxdecimaldigits peut rendre la géométrie de sortie invalide. Pour éviter cela, utilisez
d’abord ST_ReducePrecision avec une taille de grille appropriée.
Note
Exige que PostGIS soit compilé avec le support Proj. Utilisez PostGIS_Full_Version pour confirmer que vous avez
compilé le support Proj.
Note
Disponibilité : 1.2.2 - les variantes ultérieures qui incluent le paramétrage de la version sont disponibles dans la version
1.3.2
Note
Amélioré : 2.0.0 - Ajout d’un préfixe namespace, utilisation d’arguments par défaut et d’arguments nommés
Note
Modifié : 3.0.0 - Suppression de la signature de la variante "versioned"
Manuel PostGIS 3.4.0dev 241 / 870
Note
La sortie AsKML ne fonctionnera pas avec les géométries qui n’ont pas de SRID
Exemples
st_askml
--------
<Polygon
><outerBoundaryIs
><LinearRing
><coordinates
>0,0 0,1 1,1 1,0 0,0</coordinates
></LinearRing
></outerBoundaryIs
></Polygon>
--3d linestring
SELECT ST_AsKML('SRID=4326;LINESTRING(1 2 3, 4 5 6)');
<LineString
><coordinates
>1,2,3 4,5,6</coordinates
></LineString>
Voir aussi
ST_AsSVG, ST_AsGML
7.9.3.7 ST_AsLatLonText
Synopsis
Description
Note
On suppose que le point se trouve dans une projection lat/lon. Les coordonnées X (lon) et Y (lat) sont normalisées
dans la sortie à la plage "normale" (-180 à +180 pour lon, -90 à +90 pour lat).
Manuel PostGIS 3.4.0dev 242 / 870
Le paramètre text est une chaîne de caractères contenant le format du texte résultant, similaire à une chaîne de caractères de date.
Les symboles autorisés sont "D" pour les degrés, "M" pour les minutes, "S" pour les secondes et "C" pour la direction cardinale
(NSEW). Les jetons DMS peuvent être répétés pour indiquer la largeur et la précision souhaitées ("SSS.SSSS" signifie "1,0023").
Les lettres "M", "S" et "C" sont facultatives. Si "C" est omis, les degrés sont indiqués avec un signe "-" s’il s’agit du sud ou de
l’ouest. Si "S" est omis, les minutes sont affichées sous forme décimale avec autant de chiffres de précision que vous le spécifiez.
Si "M" est également omis, les degrés sont affichés sous forme décimale avec autant de chiffres de précision que vous le spécifiez.
Si la chaîne de caractères format est omise (ou de longueur nulle), un format par défaut sera utilisé.
Disponibilité : 2.0
Exemples
Degrés décimaux.
SELECT (ST_AsLatLonText('POINT (-3.2342342 -2.32498)', 'D.DDDD degrees C'));
st_aslatlontext
-----------------------------------
2.3250 degrees S 3.2342 degrees W
7.9.3.8 ST_AsMARC21
ST_AsMARC21 — Renvoie la géométrie sous forme d’enregistrement MARC21/XML avec un champ de données géographiques
(034).
Manuel PostGIS 3.4.0dev 243 / 870
Synopsis
Description
Cette fonction renvoie un enregistrement MARC21/XML avec Coded Cartographic Mathematical Data représentant la boîte de
délimitation d’une géométrie donnée. Le paramètre format permet de coder les coordonnées dans les sous-champs $d,$e,$f
et $g dans tous les formats pris en charge par la norme MARC21/XML. Les formats valides sont les suivants :
Le signe décimal peut également être une virgule, par exemple hdddmm,mmmm.
La précision des formats décimaux peut être limitée par le nombre de caractères après le signe décimal, par exemple hdddmm.mm
pour des minutes décimales avec une précision de deux décimales.
Cette fonction ignore les dimensions Z et M.
Prise en charge des versions LOC MARC21/XML :
• MARC21/XML 1.1
Disponibilité : 3.3.0
Note
Cette fonction ne prend pas en charge les géométries non lon/lat, car elles ne sont pas prises en charge par la norme
MARC21/XML (Coded Cartographic Mathematical Data).
Note
La norme MARC21/XML ne prévoit aucun moyen d’annoter le système de référence spatiale pour les données math-
ématiques cartographiques codées, ce qui signifie que cette information sera perdue après la conversion au format
MARC21/XML.
Exemples
st_asmarc21
-------------------------------------------------
<record xmlns="http://www.loc.gov/MARC21/slim">
<datafield tag="034" ind1="1" ind2=" ">
<subfield code="a"
>a</subfield>
Manuel PostGIS 3.4.0dev 244 / 870
<subfield code="d"
>W0043015</subfield>
<subfield code="e"
>W0043015</subfield>
<subfield code="f"
>N0541512</subfield>
<subfield code="g"
>N0541512</subfield>
</datafield>
</record>
SELECT ST_AsMARC21('SRID=4326;POLYGON((-4.5792388916015625 ←-
54.18172660239091,-4.56756591796875 ←-
54.196993557130355,-4.546623229980469 ←-
54.18313300502024,-4.5792388916015625 54.18172660239091))'::geometry,' ←-
hddd.dddd');
<record xmlns="http://www.loc.gov/MARC21/slim">
<datafield tag="034" ind1="1" ind2=" ">
<subfield code="a"
>a</subfield>
<subfield code="d"
>W004.5792</subfield>
<subfield code="e"
>W004.5466</subfield>
<subfield code="f"
>N054.1970</subfield>
<subfield code="g"
>N054.1817</subfield>
</datafield>
</record>
Conversion d’une GEOMETRYCOLLECTION en MARC21/XML en minutes décimales. L’ordre des géométries dans la sortie
MARC21/XML correspond à leur ordre dans la collection.
SELECT ST_AsMARC21('SRID=4326;GEOMETRYCOLLECTION(POLYGON((13.1 ←-
52.65,13.516666666666667 52.65,13.516666666666667 52.38333333333333,13.1 ←-
52.38333333333333,13.1 52.65)),POINT(-4.5 54.25))'::geometry,'hdddmm. ←-
mmmm');
st_asmarc21
-------------------------------------------------
<record xmlns="http://www.loc.gov/MARC21/slim">
<datafield tag="034" ind1="1" ind2=" ">
<subfield code="a"
>a</subfield>
<subfield code="d"
>E01307.0000</subfield>
<subfield code="e"
>E01331.0000</subfield>
<subfield code="f"
>N05240.0000</subfield>
<subfield code="g"
>N05224.0000</subfield>
Manuel PostGIS 3.4.0dev 245 / 870
</datafield>
<datafield tag="034" ind1="1" ind2=" ">
<subfield code="a"
>a</subfield>
<subfield code="d"
>W00430.0000</subfield>
<subfield code="e"
>W00430.0000</subfield>
<subfield code="f"
>N05415.0000</subfield>
<subfield code="g"
>N05415.0000</subfield>
</datafield>
</record>
Voir aussi
ST_GeomFromMARC21
7.9.3.9 ST_AsMVTGeom
ST_AsMVTGeom — Transforme une géométrie dans l’espace de coordonnées d’une tuile MVT.
Synopsis
geometry ST_AsMVTGeom(geometry geom, box2d bounds, integer extent=4096, integer buffer=256, boolean clip_geom=true);
Description
Transforme une géométrie dans l’espace de coordonnées d’une tuile MVT (Mapbox Vector Tile), en l’ajustant aux limites de
la tuile si nécessaire. La géométrie doit être dans le système de coordonnées de la carte cible (en utilisant ST_Transform si
nécessaire). Il s’agit généralement de Web Mercator (SRID:3857).
La fonction tente de préserver la validité de la géométrie et la corrige si nécessaire. Cela peut entraîner l’effondrement de la
géométrie résultante à une dimension inférieure.
Les limites rectangulaires de la tuile dans l’espace de coordonnées de la carte cible doivent être fournies, afin que la géométrie
puisse être transformée et coupée si nécessaire. Les limites peuvent être générées à l’aide de ST_TileEnvelope.
Cette fonction est utilisée pour convertir la géométrie dans l’espace de coordonnées de la tuile requis par ST_AsMVT.
geom est la géométrie à transformer, dans le système de coordonnées de la carte cible.
bounds est la limite rectangulaire de la tuile dans l’espace de coordonnées de la carte, sans tampon.
extent est la taille de l’étendue de la tuile dans l’espace de coordonnées de la tuile tel que défini par la spécification MVT. La
valeur par défaut est 4096.
buffer est la taille du tampon dans l’espace de coordonnées de la tuile pour le découpage de la géométrie. La valeur par défaut
est 256.
clip_geom est un booléen qui contrôle si les géométries sont découpées ou encodées telles quelles. La valeur par défaut est
true.
Disponibilité : 2.4.0
Manuel PostGIS 3.4.0dev 246 / 870
Note
A partir de la version 3.0, Wagyu peut être choisi au moment de la configuration pour découper et valider les polygones
MVT. Cette bibliothèque est plus rapide et produit des résultats plus corrects que la bibliothèque par défaut de GEOS,
mais elle peut mettre de côté de petits polygones.
Exemples
SELECT ST_AsText(ST_AsMVTGeom(
ST_GeomFromText('POLYGON ((0 0, 10 0, 10 5, 0 -5, 0 0))'),
ST_MakeBox2D(ST_Point(0, 0), ST_Point(4096, 4096)),
4096, 0, false));
st_astext
--------------------------------------------------------------------
MULTIPOLYGON(((5 4096,10 4091,10 4096,5 4096)),((5 4096,0 4101,0 4096,5 4096)))
Exemple canonique d’une tuile Web Mercator utilisant les limites calculées d’une tuile pour interroger et découper la géométrie.
SELECT ST_AsMVTGeom(
ST_Transform( geom, 3857 ),
ST_TileEnvelope(12, 513, 412), extent =
> 4096, buffer =
> 64) AS geom
FROM data
WHERE geom && ST_TileEnvelope(12, 513, 412, margin =
> (64.0 / 4096))
Voir aussi
7.9.3.10 ST_AsMVT
ST_AsMVT — Fonction d’agrégation renvoyant une représentation MVT d’un ensemble de lignes.
Synopsis
Description
Une fonction agrégée qui renvoie une représentation binaire Mapbox Vector Tile d’un ensemble de lignes correspondant à une
couche de tuiles. Les lignes doivent contenir une colonne de géométrie qui sera encodée comme une géométrie d’élément. La
géométrie doit être dans l’espace de coordonnées de la tuile et valide conformément à la spécification MVT. ST_AsMVTGeom
peut être utilisé pour transformer la géométrie dans l’espace de coordonnées des tuiles. Les autres colonnes de la ligne sont
encodées en tant qu’attributs de caractéristiques.
Le format Mapbox Vector Tile peut stocker des éléments avec différents ensembles d’attributs. Pour utiliser cette fonctionnalité,
il convient de fournir une colonne JSONB dans les données de la ligne contenant des objets Json à un niveau de profondeur. Les
clés et les valeurs des valeurs JSONB seront encodées en tant qu’attributs d’entités.
Les tuiles à couches multiples peuvent être créées en concaténant plusieurs appels à cette fonction en utilisant || ou STRING_AGG.
Manuel PostGIS 3.4.0dev 247 / 870
Important
Ne pas appeler avec un GEOMETRYCOLLECTION comme élément de la ligne. Cependant, vous pouvez utiliser
ST_AsMVTGeom pour préparer une collection de géométrie à inclure.
Exemples
WITH mvtgeom AS
(
SELECT ST_AsMVTGeom(geom, ST_TileEnvelope(12, 513, 412), extent =
> 4096, buffer =
> 64) AS geom, name, description
FROM points_of_interest
WHERE geom && ST_TileEnvelope(12, 513, 412, margin =
> (64.0 / 4096))
)
SELECT ST_AsMVT(mvtgeom.*)
FROM mvtgeom;
Voir aussi
ST_AsMVTGeom, ST_TileEnvelope
7.9.3.11 ST_AsSVG
Synopsis
Description
Renvoie la géométrie sous forme de données de chemin SVG (Scalar Vector Graphics). Utilisez 1 comme deuxième argument
pour que les données de chemin soient implémentées en termes de déplacements relatifs, la valeur par défaut (ou 0) utilise des
déplacements absolus. Le troisième argument peut être utilisé pour réduire le nombre maximal de chiffres décimaux utilisés dans
la sortie (15 par défaut). Les géométries ponctuelles seront rendues sous la forme cx/cy lorsque l’argument ’rel’ est 0, x/y lorsque
’rel’ est 1. Les géométries multipoints sont délimitées par des virgules (","), les géométries GeometryCollection sont délimitées
par des points-virgules (" ;").
For working with PostGIS SVG graphics, checkout pg_svg library which provides plpgsql functions for working with outputs
from ST_AsSVG.
Enhanced: 3.4.0 to support all curve types
Modifié : 2.0.0 pour utiliser les args par défaut et supporter les args nommés
Note
Disponibilité : 1.2.2. Disponibilité : 1.4.0 Modifié dans PostGIS 1.4.0 pour inclure la commande L dans le chemin absolu
afin de se conformer à http://www.w3.org/TR/SVG/paths.html#PathDataBNF
Exemples
st_assvg
--------
M 0 0 L 0 -1 1 -1 1 0 Z
Circular string
SELECT ST_AsSVG( ST_GeomFromText('CIRCULARSTRING(-2 0,0 2,2 0,0 2,2 4)') );
st_assvg
--------
M -2 0 A 2 2 0 0 1 2 0 A 2 2 0 0 1 2 -4
Multi-curve
SELECT ST_AsSVG('MULTICURVE((5 5,3 5,3 3,0 3),
CIRCULARSTRING(0 0,2 1,2 2))'::geometry, 0, 0);
st_assvg
------------------------------------------------
M 5 -5 L 3 -5 3 -3 0 -3 M 0 0 A 2 2 0 0 0 2 -2
Multi-surface
SELECT ST_AsSVG('MULTISURFACE(
CURVEPOLYGON(CIRCULARSTRING(-2 0,-1 -1,0 0,1 -1,2 0,0 2,-2 0),
(-1 0,0 0.5,1 0,0 1,-1 0)),
((7 8,10 10,6 14,4 11,7 8)))'::geometry, 0, 2);
st_assvg
---------------------------------------------------------
M -2 0 A 1 1 0 0 0 0 0 A 1 1 0 0 0 2 0 A 2 2 0 0 0 -2 0 Z
M -1 0 L 0 -0.5 1 0 0 -1 -1 0 Z
M 7 -8 L 10 -10 6 -14 4 -11 Z
Manuel PostGIS 3.4.0dev 249 / 870
7.9.3.12 ST_AsTWKB
ST_AsTWKB — Renvoie la géométrie sous forme de TWKB, diminutif de "Tiny Well-Known Binary"
Synopsis
bytea ST_AsTWKB(geometry geom, integer prec=0, integer prec_z=0, integer prec_m=0, boolean with_sizes=false, boolean
with_boxes=false);
bytea ST_AsTWKB(geometry[] geom, bigint[] ids, integer prec=0, integer prec_z=0, integer prec_m=0, boolean with_sizes=false,
boolean with_boxes=false);
Description
Renvoie la géométrie au format TWKB (Tiny Well-Known Binary). TWKB est un format binaire compressé dont l’objectif est
de minimiser la taille de la sortie.
Les paramètres relatifs aux chiffres décimaux déterminent le degré de précision stocké dans la sortie. Par défaut, les valeurs sont
arrondies à l’unité la plus proche avant l’encodage. Si vous souhaitez transférer plus de précision, augmentez le nombre. Par
exemple, une valeur de 1 implique que le premier chiffre à droite du point décimal sera préservé.
Les paramètres "sizes" et "bounding boxes" déterminent si les informations optionnelles concernant la longueur encodée de
l’objet et les limites de l’objet sont incluses dans la sortie. Par défaut, elles ne le sont pas. Ne les activez pas à moins que votre
logiciel client n’en ait l’utilité, car ils ne font qu’utiliser de l’espace (et économiser de l’espace est l’objectif de TWKB).
La forme tableau de la fonction est utilisée pour convertir une collection de géométries et d’identifiants uniques en une collection
TWKB qui préserve les identifiants. Cette fonction est utile pour les clients qui souhaitent décompresser une collection et accéder
ensuite à d’autres informations sur les objets qu’elle contient. Vous pouvez créer les tableaux à l’aide de la fonction array_agg.
Les autres paramètres sont les mêmes que pour la forme simple de la fonction.
Note
La spécification du format est disponible en ligne à l’adresse https://github.com/TWKB/Specification, et le code perme-
ttant de créer un client JavaScript est disponible à l’adresse https://github.com/TWKB/twkb.js.
Exemples
Pour créer un objet TWKB agrégé comprenant des identifiants, il faut d’abord agréger les géométries et les objets souhaités en
utilisant "array_agg()", puis appeler la fonction TWKB appropriée.
SELECT ST_AsTWKB(array_agg(geom), array_agg(gid)) FROM mytable;
st_astwkb
--------------------------------------------
\x040402020400000202
Voir aussi
7.9.3.13 ST_AsX3D
ST_AsX3D — Renvoie une géométrie au format X3D xml node element : ISO-IEC-19776-1.2-X3DEncodings-XML
Synopsis
Description
Renvoie une géométrie sous la forme d’un élément de nœud X3D xml formaté http://www.web3d.org/standards/number/19776-1.
Si maxdecimaldigits (précision) n’est pas spécifié, la valeur par défaut est 15.
Note
Il existe plusieurs options pour traduire les géométries PostGIS en X3D, car les types de géométrie X3D ne corre-
spondent pas directement aux types de géométrie PostGIS, et nous avons évité certains types X3D plus récents qui
pourraient constituer de meilleures correspondances, car la plupart des outils de rendu ne les prennent pas en charge
actuellement. Ce sont les correspondances que nous avons choisies. N’hésitez pas à poster un ticket de bug si vous
avez des idées sur l’idée ou sur la façon dont nous pouvons permettre aux gens de dénoter leurs correspondances
préférées.
Voici comment nous faisons actuellement correspondre les types 2D/3D de PostGIS aux types X3D
L’argument ’options’ est un champ de bits. Pour PostGIS 2.2+, il est utilisé pour indiquer si les coordonnées doivent être
représentées avec le nœud géospatial X3D GeoCoordinates et si l’axe x/y doit être inversé. Par défaut, ST_AsX3D produit les
données sous forme de base de données (long,lat ou X,Y), mais la valeur par défaut de lat/lon, y/x de X3D peut être préférée.
• 0 : X/Y dans l’ordre de la base de données (par exemple long/lat = X,Y est l’ordre standard de la base de données), valeur par
défaut, et coordonnées non spatiales (juste un bon vieux Coordinate tag).
• 1 : Inverser X et Y. Si cette option est utilisée en conjonction avec l’option GeoCoordinate, la sortie sera par défaut "lati-
tude_first" et les coordonnées seront également inversées.
• 2 : Sortie des coordonnées enGeoSpatial GeoCoordinates. Cette option génère une erreur si les géométries ne sont pas en
WGS 84 long lat (srid : 4326). C’est actuellement le seul type de GeoCoordinate pris en charge. Référence aux spécifications
X3D spécifiant un système de référence spatiale.. La sortie par défaut sera GeoCoordinate geoSystem=’"GD" "WE"
"longitude_first"’. Si vous préférez la sortie par défaut X3D de GeoCoordinate geoSystem=’"GD" "WE"
"latitude_first"’, utilisez (2 + 1) = 3
Note
La prise en charge de la géométrie 2D n’est pas encore terminée. Les anneaux intérieurs sont actuellement dessinés
comme des polygones séparés. Nous y travaillons.
De nombreuses avancées ont lieu dans l’espace 3D, en particulier avec X3D Integration with HTML5
Il existe également une visionneuse X3D open source que vous pouvez utiliser pour visualiser les géométries rendues. Des bi-
naires Wrl http://freewrl.sourceforge.net/ gratuits sont disponibles pour Mac, Linux et Windows. Utilisez le FreeWRL_Launcher
pour visualiser les géométries.
Consultez également PostGIS minimalist X3D viewer qui utilise cette fonction et x3dDom html/js open source toolkit.
Disponibilité : 2.0.0: ISO-IEC-19776-1.2-X3DEncodings-XML
Amélioration : 2.2.0 : Prise en charge des coordonnées géographiques et de l’inversion des axes (x/y, long/lat). Voir les options
pour plus de détails.
Cette fonction prend en charge les triangles et les réseaux irréguliers triangulés (TIN).
Exemple : Créer un document X3D entièrement fonctionnel - Cela permet de générer un cube qui peut être visualisé dans
FreeWrl et d’autres visionneuses X3D.
x3ddoc
--------
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE X3D PUBLIC "ISO//Web3D//DTD X3D 3.0//EN" "http://www.web3d.org/specifications/x3d ←-
-3.0.dtd">
<X3D>
<Scene>
<Transform>
<Shape>
<Appearance>
<Material emissiveColor='0 0 1'/>
</Appearance>
Manuel PostGIS 3.4.0dev 252 / 870
<IndexedFaceSet coordIndex='0 1 2 3 -1 4 5 6 7 -1 8 9 10 11 -1 12 13 14 15 -1 16 17 ←-
18 19 -1 20 21 22 23'>
<Coordinate point='0 0 0 0 0 1 0 1 1 0 1 0 0 0 0 0 1 0 1 1 0 1 0 0 0 0 0 1 0 0 ←-
1 0 1 0 0 1 1 1 0 1 1 1 1 0 1 1 0 0 0 1 0 0 1 1 1 1 1 1 1 0 0 0 1 1 0 1 1 1 ←-
1 0 1 1' />
</IndexedFaceSet>
</Shape>
</Transform>
</Scene>
</X3D
>
Bâtiments PostGIS
Copiez et collez le résultat de cette requête dans x3d scene viewer et cliquez sur Show
SELECT string_agg('<Shape
>' || ST_AsX3D(ST_Extrude(geom, 0,0, i*0.5)) ||
'<Appearance>
<Material diffuseColor="' || (0.01*i)::text || ' 0.8 0.2" specularColor="' || ←-
(0.05*i)::text || ' 0 0.5"/>
</Appearance>
</Shape
>', '')
FROM ST_Subdivide(ST_Letters('PostGIS'),20) WITH ORDINALITY AS f(geom,i);
SELECT ST_AsX3D(
ST_Translate(
ST_Force_3d(
ST_Buffer(ST_Point(10,10),5, 'quad_segs=2')), 0,0,
3)
,6) As x3dfrag;
x3dfrag
--------
<IndexedFaceSet coordIndex="0 1 2 3 4 5 6 7">
<Coordinate point="15 10 3 13.535534 6.464466 3 10 5 3 6.464466 6.464466 3 5 10 3 ←-
6.464466 13.535534 3 10 15 3 13.535534 13.535534 3 " />
</IndexedFaceSet
>
Manuel PostGIS 3.4.0dev 253 / 870
Exemple : TIN
x3dfrag
--------
<IndexedTriangleSet index='0 1 2 3 4 5'
><Coordinate point='0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 1 1 0'/></IndexedTriangleSet
>
Exemple : multiligne fermée (la limite d’un polygone avec des trous)
SELECT ST_AsX3D(
ST_GeomFromEWKT('MULTILINESTRING((20 0 10,16 -12 10,0 -16 10,-12 -12 ←-
10,-20 0 10,-12 16 10,0 24 10,16 16 10,20 0 10),
(12 0 10,8 8 10,0 12 10,-8 8 10,-8 0 10,-8 -4 10,0 -8 10,8 -4 10,12 0 10))')
) As x3dfrag;
x3dfrag
--------
<IndexedLineSet coordIndex='0 1 2 3 4 5 6 7 0 -1 8 9 10 11 12 13 14 15 8'>
<Coordinate point='20 0 10 16 -12 10 0 -16 10 -12 -12 10 -20 0 10 -12 16 10 0 24 10 16 ←-
16 10 12 0 10 8 8 10 0 12 10 -8 8 10 -8 0 10 -8 -4 10 0 -8 10 8 -4 10 ' />
</IndexedLineSet
>
7.9.3.14 ST_GeoHash
Synopsis
Description
Calcule une représentation GeoHash d’une géométrie. Un GeoHash encode un point géographique sous forme de texte qui peut
être trié et recherché en fonction du préfixe. Un GeoHash plus court est une représentation moins précise d’un point. Il peut être
considéré comme une boîte qui contient le point.
Les valeurs géométriques non ponctuelles dont l’étendue n’est pas nulle peuvent également être mises en correspondance avec
des codes GeoHash. La précision du code dépend de l’étendue géographique de la géométrie.
Si maxchars n’est pas spécifié, le code GeoHash renvoyé correspond à la plus petite cellule contenant la géométrie d’entrée.
Les points renvoient un GeoHash avec 20 caractères de précision (ce qui est suffisant pour contenir la double précision de
l’entrée). D’autres types géométriques peuvent renvoyer un GeoHash avec moins de précision, en fonction de l’étendue de la
Manuel PostGIS 3.4.0dev 254 / 870
géométrie. Les géométries plus grandes sont représentées avec moins de précision, les plus petites avec plus de précision. La
boîte déterminée par le code GeoHash contient toujours l’élément d’entrée.
Si maxchars est spécifié, le code GeoHash renvoyé comporte au maximum ce nombre de caractères. Il correspond à une
représentation (éventuellement) de moindre précision de la géométrie d’entrée. Pour les non-points, le point de départ du calcul
est le centre de la boîte de délimitation de la géométrie.
Disponibilité : 1.4.0
Note
ST_GeoHash exige que la géométrie d’entrée soit en coordonnées géographiques (lon/lat).
Exemples
st_geohash
----------------------
c0w3hf1s70w3hf1s70w3
st_geohash
------------
c0w3h
-- This line contains the point, so the GeoHash is a prefix of the point code
SELECT ST_GeoHash('LINESTRING(-126 48, -126.1 48.1)'::geometry);
st_geohash
------------
c0w3
Voir aussi
7.10 Opérateurs
7.10.1.1 &&
Synopsis
Description
L’opérateur && renvoi VRAI si la boite englobante 2D de la géométrie A intersecte la boite englobante 2D de la géométrie B.
Note
Cette opérande utilisera tous les index qui peuvent être disponibles sur les géométries.
Exemples
Voir aussi
7.10.1.2 &&(geometry,box2df)
&&(geometry,box2df) — Renvoie TRUE si la boîte de délimitation 2D (en cache) d’une géométrie intersecte une boîte de
délimitation 2D de précision flottante (BOX2DF).
Synopsis
Description
L’opérateur && renvoie TRUE si la boîte de délimitation 2D mise en cache de la géométrie A intersecte la boîte de délimitation
2D B, en utilisant la précision float. Cela signifie que si B est un box2d (double précision), il sera converti en interne en une boîte
de délimitation 2D à précision flottante (BOX2DF)
Note
Cet opérande est destiné à être utilisé en interne par les index BRIN, plus que par les utilisateurs.
Manuel PostGIS 3.4.0dev 256 / 870
Disponibilité : 2.3.0 le support des Block Range INdexes (BRIN) a été introduit. Nécessite PostgreSQL 9.5+.
Exemples
overlaps
----------
t
(1 row)
Voir aussi
7.10.1.3 &&(box2df,geometry)
&&(box2df,geometry) — Renvoie TRUE si une boîte de délimitation 2D de précision flottante (BOX2DF) intersecte la boîte de
délimitation 2D (mise en cache) d’une géométrie.
Synopsis
Description
L’opérateur && renvoie TRUE si la boîte de délimitation 2D A intersecte la boîte de délimitation 2D mise en cache de la géométrie
B, en utilisant la précision float. Cela signifie que si A est un box2d (double précision), il sera converti en interne en une boîte de
délimitation 2D à précision flottante (BOX2DF)
Note
Cet opérande est destiné à être utilisé en interne par les index BRIN, plus que par les utilisateurs.
Disponibilité : 2.3.0 le support des Block Range INdexes (BRIN) a été introduit. Nécessite PostgreSQL 9.5+.
Exemples
overlaps
----------
t
(1 row)
Manuel PostGIS 3.4.0dev 257 / 870
Voir aussi
7.10.1.4 &&(box2df,box2df)
&&(box2df,box2df) — Renvoie TRUE si deux boîtes de délimitation 2D à précision flottante (BOX2DF) se croisent.
Synopsis
Description
L’opérateur && renvoie TRUE si deux boîtes de délimitation 2D A et B se croisent, en utilisant la précision float. Cela signifie
que si A (ou B) est un box2d (double précision), il sera converti en interne en une boîte de délimitation 2D de précision flottante
(BOX2DF)
Note
Cet opérateur est destiné à être utilisé en interne par les index BRIN, plus que par les utilisateurs.
Disponibilité : 2.3.0 le support des Block Range INdexes (BRIN) a été introduit. Nécessite PostgreSQL 9.5+.
Exemples
overlaps
----------
t
(1 row)
Voir aussi
7.10.1.5 &&&
&&& — Renvoie TRUE si la boîte de délimitation n-D de A intersecte la boîte de délimitation n-D de B.
Synopsis
Description
L’opérateur &&& renvoie TRUE si la boîte de délimitation n-D de la géométrie A intersecte la boîte de délimitation n-D de la
géométrie B.
Note
Cette opérande utilisera tous les index qui peuvent être disponibles sur les géométries.
Disponibilité : 2.0.0
Cette fonction prend en charge les triangles et les réseaux irréguliers triangulés (TIN).
Exemples : LineStrings 3D
Exemples : LineStrings 3M
Voir aussi
&&
Manuel PostGIS 3.4.0dev 259 / 870
7.10.1.6 &&&(geometry,gidx)
&&&(geometry,gidx) — Renvoie TRUE si la boîte de délimitation n-D (en cache) d’une géométrie intersecte une boîte de
délimitation de précision flottante n-D (GIDX).
Synopsis
Description
L’opérateur &&& renvoie TRUE si la boîte de délimitation n-D mise en cache de la géométrie A intersecte la boîte de délimitation
n-D B, en utilisant la précision float. Cela signifie que si B est un box3d (double précision), il sera converti en interne en une
boîte de délimitation 3D de précision flottante (GIDX)
Note
Cet opérateur est destiné à être utilisé en interne par les index BRIN, plus que par les utilisateurs.
Disponibilité : 2.3.0 le support des Block Range INdexes (BRIN) a été introduit. Nécessite PostgreSQL 9.5+.
Cette fonction prend en charge les triangles et les réseaux irréguliers triangulés (TIN).
Exemples
overlaps
----------
t
(1 row)
Voir aussi
&&&(gidx,geometry), &&&(gidx,gidx)
7.10.1.7 &&&(gidx,geometry)
&&&(gidx,geometry) — Renvoie TRUE si une boîte de délimitation de précision flottante n-D (GIDX) intersecte la boîte de
délimitation n-D (mise en cache) d’une géométrie.
Synopsis
Description
L’opérateur &&& renvoie TRUE si la boîte de délimitation n-D A intersecte la boîte de délimitation n-D mise en cache de la
géométrie B, en utilisant la précision float. Cela signifie que si A est un box3d (à double précision), il sera converti en interne en
une boîte de délimitation 3D à précision flottante (GIDX)
Note
Cet opérateur est destiné à être utilisé en interne par les index BRIN, plus que par les utilisateurs.
Disponibilité : 2.3.0 le support des Block Range INdexes (BRIN) a été introduit. Nécessite PostgreSQL 9.5+.
Cette fonction prend en charge les triangles et les réseaux irréguliers triangulés (TIN).
Exemples
overlaps
----------
t
(1 row)
Voir aussi
&&&(geometry,gidx), &&&(gidx,gidx)
7.10.1.8 &&&(gidx,gidx)
&&&(gidx,gidx) — Renvoie TRUE si deux boîtes de délimitation (GIDX) de précision flottante n-D se croisent.
Synopsis
Description
L’opérateur &&& renvoie TRUE si deux boîtes de délimitation n-D A et B se croisent, en utilisant la précision float. Cela signifie
que si A (ou B) est un box3d (double précision), il sera converti en interne en une boîte de délimitation 3D de précision flottante
(GIDX).
Note
Cet opérateur est destiné à être utilisé en interne par les index BRIN, plus que par les utilisateurs.
Manuel PostGIS 3.4.0dev 261 / 870
Disponibilité : 2.3.0 le support des Block Range INdexes (BRIN) a été introduit. Nécessite PostgreSQL 9.5+.
Cette fonction prend en charge les triangles et les réseaux irréguliers triangulés (TIN).
Exemples
overlaps
----------
t
(1 row)
Voir aussi
&&&(geometry,gidx), &&&(gidx,geometry)
7.10.1.9 &<
Synopsis
Description
L’opérateur &< renvoie TRUE si la boîte de délimitation de la géométrie A chevauche ou est à gauche de la boîte de délimitation
de la géométrie B, ou plus exactement, chevauche ou n’est PAS à droite de la boîte de délimitation de la géométrie B.
Note
Cette opérande utilisera tous les index qui peuvent être disponibles sur les géométries.
Exemples
Voir aussi
7.10.1.10 &<|
Synopsis
Description
L’opérateur &<| renvoie TRUE si la boîte de délimitation de la géométrie A chevauche ou est en dessous de la boîte de délim-
itation de la géométrie B, ou plus exactement, chevauche ou n’est PAS au-dessus de la boîte de délimitation de la géométrie
B.
Note
Cette opérande utilisera tous les index qui peuvent être disponibles sur les géométries.
Exemples
Voir aussi
7.10.1.11 &>
Synopsis
Description
L’opérateur &> renvoie TRUE si la boîte de délimitation de la géométrie A chevauche ou est à droite de la boîte de délimitation
de la géométrie B, ou plus exactement, chevauche ou n’est PAS à gauche de la boîte de délimitation de la géométrie B.
Note
Cette opérande utilisera tous les index qui peuvent être disponibles sur les géométries.
Exemples
Voir aussi
7.10.1.12 <<
Synopsis
Description
L’opérateur << renvoie TRUE si la boîte de délimitation de la géométrie A est strictement à gauche de la boîte de délimitation de
la géométrie B.
Note
Cette opérande utilisera tous les index qui peuvent être disponibles sur les géométries.
Exemples
Voir aussi
7.10.1.13 <<|
Synopsis
Description
L’opérateur <<| renvoie TRUE si la boîte de délimitation de la géométrie A est strictement inférieure à la boîte de délimitation
de la géométrie B.
Note
Cette opérande utilisera tous les index qui peuvent être disponibles sur les géométries.
Manuel PostGIS 3.4.0dev 265 / 870
Exemples
Voir aussi
7.10.1.14 =
= — Renvoie TRUE si les coordonnées et l’ordre des coordonnées de la géométrie/géographie A sont les mêmes que les coor-
données et l’ordre des coordonnées de la géométrie/géographie B.
Synopsis
Description
L’opérateur = renvoie TRUE si les coordonnées et l’ordre des coordonnées de la géométrie/géographie A sont les mêmes que les
coordonnées et l’ordre des coordonnées de la géométrie/géographie B. PostgreSQL utilise les opérateurs =, <, et > définis pour
les géométries pour effectuer des classements internes et des comparaisons de géométries (c’est-à-dire dans une clause GROUP
BY ou ORDER BY).
Note
Seules les géométries/géographies qui sont exactement égales à tous égards, avec les mêmes coordonnées, dans le
même ordre, sont considérées comme égales par cet opérateur. Pour une "égalité spatiale", qui ignore des choses
comme l’ordre des coordonnées, et peut détecter des caractéristiques qui couvrent la même zone spatiale avec des
représentations différentes, utilisez ST_OrderingEquals ou ST_Equals
Caution
Cet opérande n’utilisera PAS les index qui peuvent être disponibles sur les géométries. Pour un test d’égalité exact
assisté par index, combinez = avec &&.
Modifié : 2.4.0, dans les versions précédentes, il s’agissait d’une égalité de boîte de délimitation et non d’une égalité géométrique.
Si vous avez besoin d’une égalité de boîte de délimitation, utilisez ~= à la place.
Manuel PostGIS 3.4.0dev 266 / 870
Exemples
SELECT ST_AsText(column1)
FROM ( VALUES
('LINESTRING(0 0, 1 1)'::geometry),
('LINESTRING(1 1, 0 0)'::geometry)) AS foo;
st_astext
---------------------
LINESTRING(0 0,1 1)
LINESTRING(1 1,0 0)
(2 rows)
-- Note: the GROUP BY uses the "=" to compare for geometry equivalency.
SELECT ST_AsText(column1)
FROM ( VALUES
('LINESTRING(0 0, 1 1)'::geometry),
('LINESTRING(1 1, 0 0)'::geometry)) AS foo
GROUP BY column1;
st_astext
---------------------
LINESTRING(0 0,1 1)
LINESTRING(1 1,0 0)
(2 rows)
--pt_intersect --
f
Voir aussi
ST_Equals, ST_OrderingEquals, ~=
7.10.1.15 >>
Synopsis
Description
L’opérateur >> renvoie TRUE si la boîte de délimitation de la géométrie A est strictement à droite de la boîte de délimitation de
la géométrie B.
Note
Cette opérande utilisera tous les index qui peuvent être disponibles sur les géométries.
Exemples
Voir aussi
7.10.1.16 @
Synopsis
Description
L’opérateur @ renvoie TRUE si la boîte de délimitation de la géométrie A est complètement contenue par la boîte de délimitation
de la géométrie B.
Note
Cette opérande utilisera tous les index qui peuvent être disponibles sur les géométries.
Manuel PostGIS 3.4.0dev 268 / 870
Exemples
Voir aussi
~, &&
7.10.1.17 @(geometry,box2df)
@(geometry,box2df) — Renvoie TRUE si la boîte de délimitation 2D d’une géométrie est contenue dans une boîte de délimitation
2D à précision flottante (BOX2DF).
Synopsis
Description
L’opérateur @ renvoie TRUE si la boîte de délimitation 2D de la géométrie A est contenue dans la boîte de délimitation 2D B,
en utilisant la précision float. Cela signifie que si B est un box2d (double précision), il sera converti en interne en une boîte de
délimitation 2D de précision flottante (BOX2DF)
Note
Cet opérande est destiné à être utilisé en interne par les index BRIN, plus que par les utilisateurs.
Disponibilité : 2.3.0 le support des Block Range INdexes (BRIN) a été introduit. Nécessite PostgreSQL 9.5+.
Exemples
Manuel PostGIS 3.4.0dev 269 / 870
is_contained
--------------
t
(1 row)
Voir aussi
7.10.1.18 @(box2df,geometry)
@(box2df,geometry) — Renvoie TRUE si une boîte de délimitation de précision flottante 2D (BOX2DF) est contenue dans la
boîte de délimitation 2D d’une géométrie.
Synopsis
Description
L’opérateur @ renvoie TRUE si la boîte de délimitation 2D A est contenue dans la boîte de délimitation 2D de la géométrie B,
en utilisant la précision float. Cela signifie que si B est un box2d (double précision), il sera converti en interne en une boîte de
délimitation 2D de précision flottante (BOX2DF)
Note
Cet opérande est destiné à être utilisé en interne par les index BRIN, plus que par les utilisateurs.
Disponibilité : 2.3.0 le support des Block Range INdexes (BRIN) a été introduit. Nécessite PostgreSQL 9.5+.
Exemples
is_contained
--------------
t
(1 row)
Voir aussi
7.10.1.19 @(box2df,box2df)
@(box2df,box2df) — Renvoie TRUE si une boîte de délimitation de précision flottante 2D (BOX2DF) est contenue dans une
autre boîte de délimitation de précision flottante 2D.
Synopsis
Description
L’opérateur @ renvoie TRUE si la boîte de délimitation 2D A est contenue dans la boîte de délimitation 2D B, en utilisant
la précision float. Cela signifie que si A (ou B) est un box2d (double précision), il sera converti en interne en une boîte de
délimitation 2D à précision flottante (BOX2DF)
Note
Cet opérande est destiné à être utilisé en interne par les index BRIN, plus que par les utilisateurs.
Disponibilité : 2.3.0 le support des Block Range INdexes (BRIN) a été introduit. Nécessite PostgreSQL 9.5+.
Exemples
is_contained
--------------
t
(1 row)
Voir aussi
7.10.1.20 |&>
Synopsis
Description
L’opérateur |&> renvoie TRUE si la boîte de délimitation de la géométrie A chevauche ou est au-dessus de la boîte de délimitation
de la géométrie B, ou plus exactement, chevauche ou n’est PAS au-dessous de la boîte de délimitation de la géométrie B.
Note
Cette opérande utilisera tous les index qui peuvent être disponibles sur les géométries.
Exemples
Voir aussi
7.10.1.21 |>>
Synopsis
Description
L’opérateur |>> renvoie TRUE si la boîte de délimitation de la géométrie A est strictement au-dessus de la boîte de délimitation
de la géométrie B.
Note
Cette opérande utilisera tous les index qui peuvent être disponibles sur les géométries.
Manuel PostGIS 3.4.0dev 272 / 870
Exemples
Voir aussi
7.10.1.22 ~
Synopsis
Description
L’opérateur ~ renvoie TRUE si la boîte de délimitation de la géométrie A contient complètement la boîte de délimitation de la
géométrie B.
Note
Cette opérande utilisera tous les index qui peuvent être disponibles sur les géométries.
Exemples
Voir aussi
@, &&
7.10.1.23 ~(geometry,box2df)
~(geometry,box2df) — Renvoie TRUE si la boîte de délimitation 2D d’une géométrie contient une boîte de délimitation de
précision flottante 2D (GIDX).
Synopsis
Description
L’opérateur ~ renvoie TRUE si la boîte de délimitation 2D d’une géométrie A contient la boîte de délimitation 2D B, en utilisant
la précision float. Cela signifie que si B est un box2d (double précision), il sera converti en interne en une boîte de délimitation
2D de précision flottante (BOX2DF)
Note
Cet opérande est destiné à être utilisé en interne par les index BRIN, plus que par les utilisateurs.
Disponibilité : 2.3.0 le support des Block Range INdexes (BRIN) a été introduit. Nécessite PostgreSQL 9.5+.
Exemples
contains
----------
t
(1 row)
Voir aussi
7.10.1.24 ~(box2df,geometry)
~(box2df,geometry) — Renvoie TRUE si une boîte de délimitation de précision flottante 2D (BOX2DF) contient la boîte de
délimitation 2D d’une géométrie.
Synopsis
Description
L’opérateur ~ renvoie TRUE si la boîte de délimitation 2D A contient la boîte de délimitation de la géométrie B, en utilisant la
précision float. Cela signifie que si A est un box2d (double précision), il sera converti en interne en une boîte de délimitation 2D
de précision flottante (BOX2DF)
Note
Cet opérande est destiné à être utilisé en interne par les index BRIN, plus que par les utilisateurs.
Disponibilité : 2.3.0 le support des Block Range INdexes (BRIN) a été introduit. Nécessite PostgreSQL 9.5+.
Exemples
contains
----------
t
(1 row)
Voir aussi
7.10.1.25 ~(box2df,box2df)
~(box2df,box2df) — Renvoie TRUE si une boîte de délimitation de précision flottante 2D (BOX2DF) contient une autre boîte de
délimitation de précision flottante 2D (BOX2DF).
Synopsis
Description
L’opérateur ~ renvoie TRUE si la boîte de délimitation 2D A contient la boîte de délimitation 2D B, en utilisant la précision float.
Cela signifie que si A est un box2d (double précision), il sera converti en interne en une boîte de délimitation 2D de précision
flottante (BOX2DF)
Note
Cet opérande est destiné à être utilisé en interne par les index BRIN, plus que par les utilisateurs.
Manuel PostGIS 3.4.0dev 275 / 870
Disponibilité : 2.3.0 le support des Block Range INdexes (BRIN) a été introduit. Nécessite PostgreSQL 9.5+.
Exemples
contains
----------
t
(1 row)
Voir aussi
7.10.1.26 ~=
Synopsis
Description
L’opérateur ~= renvoie TRUE si la boîte de délimitation de la géométrie/géographie A est la même que la boîte de délimitation
de la géométrie/géographie B.
Note
Cette opérande utilisera tous les index qui peuvent être disponibles sur les géométries.
Warning
Cet opérateur a changé de comportement dans PostGIS 1.5, passant de la vérification de l’égalité géométrique réelle
à la vérification de l’égalité du rectangle de délimitation. Pour compliquer les choses, le comportement de votre base
de données dépend également du type de mise à niveau (hard ou soft) que vous avez effectué. Pour savoir quel est
le comportement de votre base de données, vous pouvez exécuter la requête ci-dessous. Pour vérifier l’égalité réelle,
utilisez ST_OrderingEquals ou ST_Equals.
Manuel PostGIS 3.4.0dev 276 / 870
Exemples
Voir aussi
ST_Equals, ST_OrderingEquals, =
7.10.2.1 <->
Synopsis
Description
L’opérateur <-> renvoie la distance 2D entre deux géométries. Utilisé dans la clause "ORDER BY" fournit des ensembles de
résultats de plus proches voisins assistés par index. Pour PostgreSQL inférieur à 9.5, donne uniquement la distance centroïde
des boîtes englobantes et pour PostgreSQL 9.5+, fait une vraie recherche de distance KNN donnant la vraie distance entre les
géométries, et la sphère de distance pour les géographies.
Note
Cet opérande utilise les index 2D GiST qui peuvent être disponibles sur les géométries. Il est différent des autres
opérateurs qui utilisent des index spatiaux en ce sens que l’index spatial n’est utilisé que lorsque l’opérateur est dans
la clause ORDER BY.
Note
L’index n’intervient que si l’une des géométries est une constante (pas dans une sous-requête/cte). Par exemple,
’SRID=3005;POINT(1011102 450541)’::geometry au lieu de a.geom
Reportez-vous à l’atelier PostGIS : La recherche du plus proche voisin pour un exemple détaillé.
Amélioré : 2.2.0 -- Comportement KNN ("K nearest neighbor") réel pour la géométrie et la géographie pour PostgreSQL 9.5+.
Note : pour la géographie, KNN est basé sur la sphère plutôt que sur le sphéroïde. Pour PostgreSQL 9.4 et moins, le support de
la géographie est nouveau mais ne supporte que le centroïde de la boîte de délimitation.
Modifié : 2.2.0 -- Pour les utilisateurs de PostgreSQL 9.5, l’ancienne syntaxe Hybrid peut être plus lente, donc vous voudrez
vous débarrasser de ce hack si vous exécutez votre code uniquement sur PostGIS 2.2+ 9.5+. Voir les exemples ci-dessous.
Disponibilité : 2.0.0 -- Le KNN fournit des voisins les plus proches basés sur les distances entre les centroïdes géométriques au
lieu des distances réelles. Résultats exacts pour les points, inexacts pour tous les autres types. Disponible pour PostgreSQL 9.1+
Manuel PostGIS 3.4.0dev 277 / 870
Exemples
d | edabbr | vaabbr
------------------+--------+--------
0 | ALQ | 128
5541.57712511724 | ALQ | 129A
5579.67450712005 | ALQ | 001
6083.4207708641 | ALQ | 131
7691.2205404848 | ALQ | 003
7900.75451037313 | ALQ | 122
8694.20710669982 | ALQ | 129B
9564.24289057111 | ALQ | 130
12089.665931705 | ALQ | 127
18472.5531479404 | ALQ | 002
(10 rows)
d | edabbr | vaabbr
------------------+--------+--------
0 | ALQ | 128
5541.57712511724 | ALQ | 129A
5579.67450712005 | ALQ | 001
6083.4207708641 | ALQ | 131
7691.2205404848 | ALQ | 003
7900.75451037313 | ALQ | 122
8694.20710669982 | ALQ | 129B
9564.24289057111 | ALQ | 130
12089.665931705 | ALQ | 127
18472.5531479404 | ALQ | 002
(10 rows)
Si vous exécutez "EXPLAIN ANALYZE" sur les deux requêtes, vous constaterez une amélioration des performances pour la
seconde.
Pour les utilisateurs utilisant PostgreSQL < 9.5, utilisez une requête hybride pour trouver les vrais plus proches voisins. D’abord
une requête CTE utilisant le KNN assisté par index, puis une requête exacte pour obtenir l’ordre correct :
WITH index_query AS (
SELECT ST_Distance(geom, 'SRID=3005;POINT(1011102 450541)'::geometry) as d,edabbr, vaabbr
FROM va2005
ORDER BY geom <-> 'SRID=3005;POINT(1011102 450541)'::geometry LIMIT 100)
SELECT *
FROM index_query
ORDER BY d limit 10;
d | edabbr | vaabbr
------------------+--------+--------
0 | ALQ | 128
5541.57712511724 | ALQ | 129A
5579.67450712005 | ALQ | 001
6083.4207708641 | ALQ | 131
7691.2205404848 | ALQ | 003
7900.75451037313 | ALQ | 122
Manuel PostGIS 3.4.0dev 278 / 870
Voir aussi
7.10.2.2 |=|
|=| — Renvoie la distance entre les trajectoires A et B à leur point d’approche le plus proche.
Synopsis
Description
L’opérateur |=| renvoie la distance 3D entre deux trajectoires (Voir ST_IsValidTrajectory). C’est la même chose que ST_DistanceCPA
mais en tant qu’opérateur, il peut être utilisé pour effectuer des recherches du plus proche voisin en utilisant un index à N dimen-
sions (nécessite PostgreSQL 9.5.0 ou plus).
Note
Cet opérande utilisera les index ND GiST qui peuvent être disponibles sur les géométries. Il est différent des autres
opérateurs qui utilisent des index spatiaux en ce sens que l’index spatial n’est utilisé que lorsque l’opérateur est dans
la clause ORDER BY.
Note
L’index n’intervient que si l’une des géométries est une constante (pas dans une sous-requête/cte). Par exemple,
’SRID=3005;LINESTRINGM(0 0 0,0 0 1)’::geometry au lieu de a.geom
Disponibilité : 2.2.0. La prise en charge des index est disponible uniquement pour PostgreSQL 9.5+
Exemples
380 | 5.06797130410151
390 | 7.72262293958322
385 | 9.8004461358071
405 | 10.9534397988433
(5 rows)
Voir aussi
7.10.2.3 <#>
Synopsis
Description
L’opérateur <#> renvoie la distance entre deux boîtes de délimitation en virgule flottante, en les lisant éventuellement à partir d’un
index spatial (PostgreSQL 9.1+ requis). Utile pour effectuer un ordonnancement par distance du plus proche voisin approximate.
Note
Cet opérande utilisera tous les index qui peuvent être disponibles sur les géométries. Il est différent des autres opéra-
teurs qui utilisent des index spatiaux en ce sens que l’index spatial n’est utilisé que lorsque l’opérateur est dans la
clause ORDER BY.
Note
L’index n’intervient que si l’une des géométries est une constante, par exemple ORDER BY
(ST_GeomFromText(’POINT(1 2)’) <#> geom) au lieu de g1.geom <#>.
Exemples
SELECT *
FROM (
SELECT b.tlid, b.mtfcc,
b.geom <#
> ST_GeomFromText('LINESTRING(746149 2948672,745954 2948576,
745787 2948499,745740 2948468,745712 2948438,
745690 2948384,745677 2948319)',2249) As b_dist,
ST_Distance(b.geom, ST_GeomFromText('LINESTRING(746149 2948672,745954 ←-
2948576,
745787 2948499,745740 2948468,745712 2948438,
745690 2948384,745677 2948319)',2249)) As act_dist
FROM bos_roads As b
ORDER BY b_dist, b.tlid
LIMIT 100) As foo
ORDER BY act_dist, tlid LIMIT 10;
Manuel PostGIS 3.4.0dev 280 / 870
Voir aussi
7.10.2.4 <<->>
<<->> — Renvoie la distance n-D entre les centroïdes des boîtes de délimitation A et B.
Synopsis
Description
L’opérateur <<->> renvoie la distance n-D (euclidienne) entre les centroïdes des boîtes englobantes de deux géométries. Utile
pour effectuer le classement par distance du plus proche voisin approximate.
Note
Cet opérande utilise les index GiST n-D qui peuvent être disponibles sur les géométries. Il est différent des autres
opérateurs qui utilisent des index spatiaux en ce sens que l’index spatial n’est utilisé que lorsque l’opérateur est dans
la clause ORDER BY.
Note
L’index n’intervient que si l’une des géométries est une constante (pas dans une sous-requête/cte). Par exemple,
’SRID=3005;POINT(1011102 450541)’::geometry au lieu de a.geom
Voir aussi
<<#>>, <->
7.10.2.5 <<#>>
Synopsis
Description
L’opérateur <<#>> renvoie la distance entre deux boîtes de délimitation en virgule flottante, en les lisant éventuellement à partir
d’un index spatial (PostgreSQL 9.1+ requis). Utile pour effectuer un classement par distance du plus proche voisin approximate.
Note
Cet opérande utilisera tous les index qui peuvent être disponibles sur les géométries. Il est différent des autres opéra-
teurs qui utilisent des index spatiaux en ce sens que l’index spatial n’est utilisé que lorsque l’opérateur est dans la
clause ORDER BY.
Note
L’index n’intervient que si l’une des géométries est une constante, par exemple ORDER BY
(ST_GeomFromText(’POINT(1 2)’) <<#>> geom) au lieu de g1.geom <<#>>.
Voir aussi
<<->>, <#>
7.11.1.1 ST_3DIntersects
ST_3DIntersects — Teste si deux géométries se croisent dans l’espace en 3D - uniquement pour les points, les lignes, les
polygones, les surfaces polyédriques (aire)
Synopsis
Description
Overlaps, Touches, Within impliquent tous une intersection spatiale. Si l’un des éléments susmentionnés renvoie un résultat
positif, les géométries se recoupent également dans l’espace. Disjoint implique faux pour l’intersection spatiale.
Note
Cette fonction inclut une comparaison de la boîte englobante qui utilise tous les index disponibles sur les géométries.
Manuel PostGIS 3.4.0dev 282 / 870
Modifié : 3.0.0 SFCGAL backend supprimé, GEOS backend supporte les TINs.
Disponibilité : 2.0.0
Cette fonction prend en charge les triangles et les réseaux irréguliers triangulés (TIN).
Exemples de géométrie
Exemples TIN
Voir aussi
ST_Intersects
7.11.1.2 ST_Contains
ST_Contains — Tests si chaque point de B est situé dans A, et que leurs intérieurs ont un point commun
Synopsis
Description
Renvoie TRUE si la géométrie A contient la géométrie B. A contient B si et seulement si tous les points de B se trouvent à
l’intérieur (c’est-à-dire à l’intérieur ou à la limite) de A (ou, de manière équivalente, si aucun point de B ne se trouve à l’extérieur
de A), et si les intérieurs de A et de B ont au moins un point en commun.
In mathematical terms: ST_Contains(A, B) ⇔ (A B = B) ∧ (Int(A) Int(B) 6= ∅)
T T
La relation contains est réflexive : toute géométrie se contient elle-même. (En revanche, dans le prédicat ST_ContainsProperly,
une géométrie ne se contientpas elle-même correctement). La relation est antisymétrique : si ST_Contains(A,B) = true
et ST_Contains(B,A) = true, alors les deux géométries doivent être topologiquement égales (ST_Equals(A,B) =
true).
ST_Contains est le contraire de ST_Within. Ainsi, ST_Contains(A,B) = ST_Within(B,A).
Manuel PostGIS 3.4.0dev 283 / 870
Note
Comme les intérieurs doivent avoir un point commun, une subtilité de la définition est que les polygones et les lignes
ne contiennent pas de lignes et de points se trouvant entièrement dans leur limite. Pour plus de détails, voir Subtleties
of OGC Covers, Contains, Within. Le prédicat ST_Covers fournit une relation plus inclusive.
Note
Cette fonction inclut une comparaison de la boîte englobante qui utilise tous les index disponibles sur les géométries.
Pour éviter l’utilisation d’un index, utilisez la fonction _ST_Contains.
Important
Amélioration : 3.0.0 a permis la prise en charge de GEOMETRYCOLLECTION
Important
N’utilisez pas cette fonction avec des géométries non valides. Vous obtiendrez des résultats inattendus.
Cette méthode implémente la spécification OGC Simple Features Implementation Specification for SQL 1.1. s2.1.1.2 //
s2.1.13.3 - identique à within(geometry B, geometry A)
Exemples
En raison de la condition d’intersection intérieure, la ST_Contains renvoie FALSE dans les situations suivantes (alors que la
ST_Covers renvoie TRUE) :
-- Result
smallcontainsbig | bigcontainssmall | bigcontainsunion | bigisunion | bigcoversexterior | ←-
bigcontainsexterior
------------------+------------------+------------------+------------+-------------------+-----------
f | t | t | t | t | f
Voir aussi
7.11.1.3 ST_ContainsProperly
Synopsis
Description
Returns true if every point of B lies in the interior of A (or equivalently, no point of B lies in the the boundary or exterior of A).
In mathematical terms: ST_ContainsProperly(A, B) ⇔ Int(A)
T
B=B
A contains B properly if the DE-9IM Intersection Matrix for the two geometries matches [T**FF*FF*]
A ne se contient pas proprement, mais se contient.
Ce prédicat peut être utilisé pour calculer les intersections d’un ensemble de géométries avec une grande géométrie polygonale.
L’intersection étant une opération assez lente, il peut être plus efficace d’utiliser containsProperly pour filtrer les géométries de
test qui se trouvent entièrement à l’intérieur de la zone. Dans ce cas, on sait a priori que l’intersection correspond exactement à
la géométrie d’essai originale.
Note
Cette fonction inclut une comparaison de la boîte englobante qui utilise tous les index disponibles sur les géométries.
Pour éviter l’utilisation d’un index, utilisez la fonction _ST_ContainsProperly.
Manuel PostGIS 3.4.0dev 287 / 870
Note
L’avantage de ce prédicat par rapport à ST_Contains et ST_Intersects est qu’il peut être calculé plus efficacement,
sans qu’il soit nécessaire de calculer la topologie en des points individuels.
Important
Amélioration : 3.0.0 a permis la prise en charge de GEOMETRYCOLLECTION
Important
N’utilisez pas cette fonction avec des géométries non valides. Vous obtiendrez des résultats inattendus.
Exemples
f | t | f | t | t ←-
| f
Voir aussi
7.11.1.4 ST_CoveredBy
Synopsis
Description
Renvoie true si chaque point de la geometry/geography A se trouve à l’intérieur (c’est-à-dire coupe l’intérieur ou la limite) de
la geometry/geography B. De manière équivalente, teste qu’aucun point de A ne se trouve à l’extérieur (dans l’extérieur) de B.
In mathematical terms: ST_CoveredBy(A, B) ⇔ A
T
B=A
ST_CoveredBy est le contraire de ST_Covers. Ainsi, ST_CoveredBy(A,B) = ST_Covers(B,A).
En général, cette fonction devrait être utilisée à la place de ST_Within, car elle a une définition plus simple qui n’a pas la
particularité que "les limites ne sont pas à l’intérieur de leur géométrie".
Note
Cette fonction inclut une comparaison de la boîte englobante qui utilise tous les index disponibles sur les géométries.
Pour éviter l’utilisation d’un index, utilisez la fonction _ST_CoveredBy.
Important
Amélioration : 3.0.0 a permis la prise en charge de GEOMETRYCOLLECTION
Important
N’utilisez pas cette fonction avec des géométries non valides. Vous obtiendrez des résultats inattendus.
Exemples
Voir aussi
7.11.1.5 ST_Covers
Synopsis
Description
Renvoie true si chaque point de la geometry/geography B se trouve à l’intérieur (c’est-à-dire qu’il coupe l’intérieur ou la limite)
de la geometry/geography A. De façon équivalente, teste qu’aucun point de B ne se trouve à l’extérieur (dans l’extérieur) de A.
In mathematical terms: ST_Covers(A, B) ⇔ A
T
B=B
ST_Covers est le contraire de ST_CoveredBy. Ainsi, ST_Covers(A,B) = ST_CoveredBy(B,A).
En général, cette fonction devrait être utilisée à la place de ST_Contains, car elle a une définition plus simple qui n’a pas la
particularité que "les géométries ne contiennent pas leur frontière".
Note
Cette fonction inclut une comparaison de la boîte englobante qui utilise tous les index disponibles sur les géométries.
Pour éviter l’utilisation d’un index, utilisez la fonction _ST_Covers.
Important
Amélioration : 3.0.0 a permis la prise en charge de GEOMETRYCOLLECTION
Important
N’utilisez pas cette fonction avec des géométries non valides. Vous obtiendrez des résultats inattendus.
Exemples
Exemple géométrique
--a circle covering a circle
SELECT ST_Covers(smallc,smallc) As smallinsmall,
ST_Covers(smallc, bigc) As smallcoversbig,
ST_Covers(bigc, ST_ExteriorRing(bigc)) As bigcoversexterior,
ST_Contains(bigc, ST_ExteriorRing(bigc)) As bigcontainsexterior
FROM (SELECT ST_Buffer(ST_GeomFromText('POINT(1 2)'), 10) As smallc,
ST_Buffer(ST_GeomFromText('POINT(1 2)'), 20) As bigc) As foo;
--Result
smallinsmall | smallcoversbig | bigcoversexterior | bigcontainsexterior
--------------+----------------+-------------------+---------------------
t | f | t | f
(1 row)
Exemple géographique
-- a point with a 300 meter buffer compared to a point, a point and its 10 meter buffer
SELECT ST_Covers(geog_poly, geog_pt) As poly_covers_pt,
ST_Covers(ST_Buffer(geog_pt,10), geog_pt) As buff_10m_covers_cent
FROM (SELECT ST_Buffer(ST_GeogFromText('SRID=4326;POINT(-99.327 31.4821)'), 300) As ←-
geog_poly,
ST_GeogFromText('SRID=4326;POINT(-99.33 31.483)') As geog_pt ) As foo;
poly_covers_pt | buff_10m_covers_cent
----------------+------------------
f | t
Voir aussi
7.11.1.6 ST_Crosses
ST_Crosses — Teste si deux géométries ont en commun certains points intérieurs, mais pas tous
Synopsis
Description
Compares two geometry objects and returns true if their intersection "spatially crosses"; that is, the geometries have some, but
not all interior points in common. The intersection of the interiors of the geometries must be non-empty and must have dimension
less than the maximum dimension of the two input geometries, and the intersection of the two geometries must not equal either
geometry. Otherwise, it returns false. The crosses relation is symmetric and irreflexive.
In mathematical terms: ST_Crosses(A, B) ⇔ (dim( Int(A) Int(B) ) < max( dim( Int(A) ), dim( Int(B) ) )) ∧ (A B 6= A) ∧ (A
T T T
B 6= B)
Les géométries se croisent si leur matrice d’intersection DE-9IM correspond :
Note
La spécification OpenGIS Simple Features définit ce prédicat uniquement pour les situations Point/Ligne, Point/Zone,
Ligne/Ligne et Ligne/Zone. Le STC / GEOS étend la définition pour qu’elle s’applique également aux situations Ligne/-
Point, Zone/Point et Zone/Ligne. Cela rend la relation symétrique.
Note
Cette fonction inclut une comparaison de la boîte englobante qui utilise tous les index disponibles sur les géométries.
Important
Amélioration : 3.0.0 a permis la prise en charge de GEOMETRYCOLLECTION
Cette méthode implémente la spécification OGC Simple Features Implementation Specification for SQL 1.1. s2.1.13.3
Exemples
Prenons le cas d’un utilisateur qui dispose de deux tables : une table de routes et une table d’autoroutes.
Pour obtenir une liste des routes qui traversent une autoroute, utilisez une requête similaire à :
SELECT roads.id
FROM roads, highways
WHERE ST_Crosses(roads.geom, highways.geom);
Voir aussi
ST_Contains, ST_Overlaps
7.11.1.7 ST_Disjoint
Synopsis
Description
Returns true if two geometries are disjoint. Geometries are disjoint if they have no point in common.
Manuel PostGIS 3.4.0dev 293 / 870
If any other spatial relationship is true for a pair of geometries, they are not disjoint. Disjoint implies that ST_Intersects is false.
In mathematical terms: ST_Disjoint(A, B) ⇔ A
T
B=∅
Important
Amélioration : 3.0.0 a permis la prise en charge de GEOMETRYCOLLECTION
Note
Cet appel de fonction n’utilise pas d’index. Un prédicat négatif ST_Intersects peut être utilisé comme une alternative
plus performante qui utilise des index : ST_Disjoint(A,B) = NOT ST_Intersects(A,B)
Note
NOTE : il s’agit de la version "autorisée" qui renvoie un booléen et non un entier.
Cette méthode implémente la spécification OGC Simple Features Implementation Specification for SQL 1.1. s2.1.1.2
//s2.1.13.3 - a.Relate(b, ’FF*FF****’)
Exemples
Voir aussi
ST_Intersects
7.11.1.8 ST_Equals
Synopsis
Description
Returns true if the given geometries are "topologically equal". Use this for a ’better’ answer than ’=’. Topological equality
means that the geometries have the same dimension, and their point-sets occupy the same space. This means that the order of
vertices may be different in topologically equal geometries. To verify the order of points is consistent use ST_OrderingEquals (it
must be noted ST_OrderingEquals is a little more stringent than simply verifying order of points are the same).
In mathematical terms: ST_Equals(A, B) ⇔ A = B
The following relation holds: ST_Equals(A, B) ⇔ ST_Within(A,B) ∧ ST_Within(B,A)
Important
Amélioration : 3.0.0 a permis la prise en charge de GEOMETRYCOLLECTION
Cette méthode implémente la spécification OGC Simple Features Implementation Specification for SQL 1.1. s2.1.1.2
Exemples
Voir aussi
7.11.1.9 ST_Intersects
ST_Intersects — Teste si deux géométries se croisent (elles ont au moins un point en commun)
Synopsis
Description
Returns true if two geometries intersect. Geometries intersect if they have any point in common.
Pour les objets de type geography, une tolérance de distance de 0,00001 mètre est utilisée (les points très proches sont donc
considérés comme se croisant).
In mathematical terms: ST_Intersects(A, B) ⇔ A B 6= ∅
T
Les géométries se croisent si leur matrice d’intersection DE-9IM correspond à l’un des éléments suivants :
• T********
• *T*******
• ***T*****
• ****T****
L’intersection spatiale est impliquée par tous les autres tests de relations spatiales, à l’exception de ST_Disjoint, qui teste que les
géométries ne se croisent PAS.
Note
Cette fonction inclut une comparaison de la boîte englobante qui utilise tous les index disponibles sur les géométries.
Modifié : 3.0.0 La version SFCGAL a été supprimée et la prise en charge native des TINS 2D a été ajoutée.
Amélioré : 2.5.0 Supporte GEOMETRYCOLLECTION.
Amélioré : 2.3.0 Amélioration du court-circuit PIP étendu à la prise en charge des multipoints avec peu de points. Les versions
précédentes ne prenaient en charge que les points dans les polygones.
Effectuée par le module GEOS (pour geometry), la geography est native
Disponibilité : la version 1.5 a introduit la prise en charge du type geography.
Note
Pour geography, cette fonction a une tolérance de distance d’environ 0,00001 mètre et utilise la sphère plutôt que le
calcul du sphéroïde.
Note
NOTE : il s’agit de la version "autorisée" qui renvoie un booléen et non un entier.
Cette méthode implémente la spécification OGC Simple Features Implementation Specification for SQL 1.1. s2.1.1.2
//s2.1.13.3 - ST_Intersects(g1, g2 ) --> Not (ST_Disjoint(g1, g2 ))
Cette fonction prend en charge les triangles et les réseaux irréguliers triangulés (TIN).
Manuel PostGIS 3.4.0dev 296 / 870
Exemples de géométrie
-- Look up in table. Make sure table has a GiST index on geometry column for faster lookup.
SELECT id, name FROM cities WHERE ST_Intersects(geom, 'SRID=4326;POLYGON((28 53,27.707 ←-
52.293,27 52,26.293 52.293,26 53,26.293 53.707,27 54,27.707 53.707,28 53))');
id | name
----+-------
2 | Minsk
(1 row)
Exemples géographiques
SELECT ST_Intersects(
'SRID=4326;LINESTRING(-43.23456 72.4567,-43.23456 72.4568)'::geography,
'SRID=4326;POINT(-43.23456 72.4567772)'::geography
);
st_intersects
---------------
t
Voir aussi
7.11.1.10 ST_LineCrossingDirection
Synopsis
Description
En ayant 2 lignes en entrée, renvoie un nombre entier entre -3 et 3 indiquant le type de croisement qui existe entre elles. 0 indique
qu’il n’y a pas de croisement. Cette fonction n’est prise en charge que pour les LINESTRINGs.
Le numéro de croisement a la signification suivante :
Disponibilité : 1.4
Exemples
A_cross_B | B_cross_A
-----------+-----------
-1 | 1
Exemple: LIGNE MULTICROISEMENT FIN IDENTIQUE AU PREMIER GAUCHE et LIGNE MULTICROISEMENT FIN
IDENTIQUE AU PREMIER DROITE
Manuel PostGIS 3.4.0dev 298 / 870
A_cross_B | B_cross_A
-----------+-----------
3 | -3
A_cross_B | B_cross_A
-----------+-----------
-2 | 2
Voir aussi
ST_Crosses
7.11.1.11 ST_OrderingEquals
ST_OrderingEquals — Teste si deux géométries représentent la même géométrie et ont des points dans le même ordre direction-
nel
Synopsis
Description
ST_OrderingEquals compare deux géométries et renvoie t (TRUE) si les géométries sont égales et si les coordonnées sont dans
le même ordre ; sinon, il renvoie f (FALSE).
Note
Cette fonction est mise en œuvre conformément à la spécification SQL d’ArcSDE plutôt que SQL-MM.
http://edndoc.esri.com/arcsde/9.1/sql_api/sqlapi3.htm#ST_OrderingEquals
Exemples
Voir aussi
7.11.1.12 ST_Overlaps
ST_Overlaps — Teste si deux géométries ont la même dimension et se croisent, mais si chacune a au moins un point qui n’est
pas dans l’autre
Synopsis
Description
Returns TRUE if geometry A and B "spatially overlap". Two geometries overlap if they have the same dimension, their interiors
intersect in that dimension. and each has at least one point inside the other (or equivalently, neither one covers the other). The
overlaps relation is symmetric and irreflexive.
In mathematical terms: ST_Overlaps(A, B) ⇔ ( dim(A) = dim(B) = dim( Int(A) Int(B) )) ∧ (A B 6= A) ∧ (A B 6= B)
T T T
Note
Cette fonction inclut une comparaison de la boîte englobante qui utilise tous les index disponibles sur les géométries.
Pour éviter l’utilisation d’un index, utilisez la fonction _ST_Overlaps.
Important
Amélioration : 3.0.0 a permis la prise en charge de GEOMETRYCOLLECTION
Cette méthode implémente la spécification OGC Simple Features Implementation Specification for SQL 1.1. s2.1.1.2 //
s2.1.13.3
Exemples
Un point sur une LineString est contenu, mais comme il a une dimension inférieure, il ne se chevauche pas et ne se croise pas.
SELECT ST_Overlaps(a,b) AS overlaps, ST_Crosses(a,b) AS crosses,
ST_Intersects(a, b) AS intersects, ST_Contains(b,a) AS b_contains_a
FROM (SELECT ST_GeomFromText('POINT (100 100)') As a,
ST_GeomFromText('LINESTRING (30 50, 40 160, 160 40, 180 160)') AS b) AS t
Une chaîne de lignes qui recouvre partiellement un polygone l’intersecte et le traverse, mais ne se chevauche pas car elle a des
dimensions différentes.
SELECT ST_Overlaps(a,b) AS overlaps, ST_Crosses(a,b) AS crosses,
ST_Intersects(a, b) AS intersects, ST_Contains(a,b) AS contains
FROM (SELECT ST_GeomFromText('POLYGON ((40 170, 90 30, 180 100, 40 170))') AS a,
ST_GeomFromText('LINESTRING(10 10, 190 190)') AS b) AS t;
Deux polygones qui se croisent mais dont aucun n’est contenu par l’autre se chevauchent, mais ne se croisent pas car leur
intersection a la même dimension.
SELECT ST_Overlaps(a,b) AS overlaps, ST_Crosses(a,b) AS crosses,
ST_Intersects(a, b) AS intersects, ST_Contains(b, a) AS b_contains_a,
ST_Dimension(a) AS dim_a, ST_Dimension(b) AS dim_b,
ST_Dimension(ST_Intersection(a,b)) AS dim_int
FROM (SELECT ST_GeomFromText('POLYGON ((40 170, 90 30, 180 100, 40 170))') AS a,
ST_GeomFromText('POLYGON ((110 180, 20 60, 130 90, 110 180))') AS b) As t;
Manuel PostGIS 3.4.0dev 303 / 870
Voir aussi
7.11.1.13 ST_Relate
ST_Relate — Teste si deux géométries ont une relation topologique correspondant à un modèle de matrice d’intersection, ou
calcule leur matrice d’intersection
Synopsis
Description
Ces fonctions permettent de tester et d’évaluer la relation spatiale (topologique) entre deux géométries, telle que définie par le
Dimensionally Extended 9-Intersection Model (DE-9IM).
Le DE-9IM est une matrice à 9 éléments indiquant la dimension des intersections entre l’intérieur, la frontière et l’extérieur
de deux géométries. Elle est représentée par une chaîne de texte de 9 caractères utilisant les symboles "F", "0", "1", "2" (par
exemple, ’FF1FF0102’).
Un type spécifique de relation spatiale peut être testé en faisant correspondre la matrice d’intersection à un motif de matrice
d’intersection. Les motifs peuvent inclure les symboles supplémentaires "T" (signifiant "l’intersection est non vide") et "*"
(signifiant "n’importe quelle valeur"). Les relations spatiales communes sont fournies par les fonctions nommées ST_Contains,
ST_ContainsProperly, ST_Covers, ST_CoveredBy, ST_Crosses, ST_Disjoint, ST_Equals, ST_Intersects, ST_Overlaps, ST_Touches,
et ST_Within. L’utilisation d’un modèle explicite permet de tester plusieurs conditions d’intersection, de croisement, etc. en une
seule étape. Elle permet également de tester des relations spatiales qui n’ont pas de fonction de relation spatiale nommée. Par
exemple, la relation "Interior-Intersects" possède le motif DE-9IM T********, qui n’est évalué par aucun prédicat nommé.
Pour plus d’informations, voir Section 5.1.
Variante 1: Teste si deux géométries sont spatialement liées selon le intersectionMatrixPattern donné.
Note
Contrairement à la plupart des prédicats de relations spatiales nommées, ce prédicat n’inclut PAS automatiquement un
appel d’index. La raison en est que certaines relations sont vraies pour des géométries qui ne s’intersectent PAS (par
exemple Disjoint). Si vous utilisez un modèle de relation qui nécessite une intersection, incluez l’appel à l’index &&.
Note
Il est préférable d’utiliser une fonction de relation nommée si elle est disponible, car elle utilise automatiquement un
index spatial lorsqu’il existe. En outre, elles peuvent mettre en œuvre des optimisations de performance qui ne sont
pas disponibles avec l’évaluation de la relation complète.
Variante 2: Renvoie la chaîne matricielle DE-9IM pour la relation spatiale entre les deux géométries d’entrée. La chaîne
matricielle peut être testée pour vérifier si elle correspond à un modèle DE-9IM en utilisant ST_RelateMatch.
Variante 3: Comme la variante 2, mais permet de spécifier une Boundary Node Rule. Une boundary node rule permet de
contrôler plus finement si les extrémités des multilignes sont considérées comme se situant à l’intérieur ou à la limite du DE-
9IM. Les valeurs de boundaryNodeRule sont les suivantes :
Manuel PostGIS 3.4.0dev 304 / 870
• 1 : OGC-Mod2 - les extrémités des lignes sont dans la frontière si elles apparaissent un nombre impair de fois. C’est la règle
définie par la norme SFS de l’OGC, et c’est la valeur par défaut de la ST_Relate.
• 2 : Endpoint - tous les points d’extrémité sont dans la frontière.
• 3 : MultivalentEndpoint - les points d’extrémité sont dans la frontière s’ils apparaissent plus d’une fois. En d’autres ter-
mes, la frontière est constituée de tous les points d’extrémité "attachés" ou "internes" (mais pas des points d’extrémité "non
attachés/externes").
• 4 : MonovalentEndpoint - les points d’extrémité sont dans la frontière s’ils n’apparaissent qu’une seule fois. En d’autres
termes, la frontière est constituée de tous les points d’extrémité "non attachés" ou "extérieurs".
Cette fonction ne figure pas dans la spécification de l’OGC, mais elle est implicite. voir s2.1.13.2
Cette méthode implémente la spécification OGC Simple Features Implementation Specification for SQL 1.1. s2.1.1.2 //
s2.1.13.3
Important
Amélioration : 3.0.0 a permis la prise en charge de GEOMETRYCOLLECTION
Exemples
Test d’un modèle de relation spatiale personnalisé comme condition de requête, avec && pour permettre l’utilisation d’un index
spatial.
-- Find compounds that properly intersect (not just touch) a poly (Interior Intersects)
Utilisation de différentes Boundary Node Rules pour calculer la relation spatiale entre une LineString et une MultiLineString
avec une extrémité dupliquée (3 3) :
• En utilisant la règle OGC-Mod2 (1), l’extrémité dupliquée se trouve dans l’ intérieur de la MultiLineString, de sorte que
l’entrée de la matrice DE-9IM [aB:bI] est 0 et [aB:bB] est F.
• En utilisant la règle Endpoint (2), l’extrémité dupliquée se trouve dans la limite de la MultiLineString, de sorte que l’entrée
de la matrice DE-9IM [aB:bI] est F et [aB:bB] est 0.
bnr_mod2 | bnr_endpoint
-----------+--------------
FF10F0102 | FF1F00102
Voir aussi
Section 5.1, ST_RelateMatch, ST_Contains, ST_ContainsProperly, ST_Covers, ST_CoveredBy, ST_Crosses, ST_Disjoint, ST_Equals,
ST_Intersects, ST_Overlaps, ST_Touches, ST_Within
7.11.1.14 ST_RelateMatch
ST_RelateMatch — Teste si une matrice d’intersection DE-9IM correspond à un modèle de matrice d’intersection
Synopsis
Description
Teste si une Dimensionally Extended 9-Intersection Model (DE-9IM) intersectionMatrix satisfait un intersectionMatrixP
Les valeurs de la matrice d’intersection peuvent être calculées par ST_Relate.
Pour plus d’informations, voir Section 5.1.
Effectué par le module GEOS
Disponibilité : 2.0.0
Exemples
Modèles de relations spatiales communes mis en correspondance avec les valeurs de la matrice d’intersection, pour une ligne
dans différentes positions par rapport à un polygone
SELECT pat.name AS relationship, pat.val AS pattern,
mat.name AS position, mat.val AS matrix,
ST_RelateMatch(mat.val, pat.val) AS match
FROM (VALUES ( 'Equality', 'T1FF1FFF1' ),
( 'Overlaps', 'T*T***T**' ),
( 'Within', 'T*F**F***' ),
( 'Disjoint', 'FF*FF****' )) AS pat(name,val)
CROSS JOIN
(VALUES ('non-intersecting', 'FF1FF0212'),
('overlapping', '1010F0212'),
('inside', '1FF0FF212')) AS mat(name,val);
Voir aussi
7.11.1.15 ST_Touches
ST_Touches — Teste si deux géométries ont au moins un point en commun, mais que leurs intérieurs ne se croisent pas
Synopsis
Description
Retourne TRUE si A et B se croisent, mais que leurs intérieurs ne se croisent pas. De manière équivalente, A et B ont au moins
un point en commun, et les points communs se situent dans au moins une frontière. Pour les entrées point/point, la relation est
toujours FALSE, puisque les points n’ont pas de frontière.
In mathematical terms: ST_Touches(A, B) ⇔ (Int(A) Int(B) 6= ∅) ∧ (A B 6= ∅)
T T
Cette relation est valable si la matrice d’intersection DE-9IM pour les deux géométries correspond à l’une d’entre elles :
• FT*******
• F**T*****
• F***T****
Manuel PostGIS 3.4.0dev 307 / 870
Note
Cette fonction inclut une comparaison de la boîte englobante qui utilise tous les index disponibles sur les géométries.
Pour éviter d’utiliser un index, utilisez plutôt la _ST_Touches.
Important
Amélioration : 3.0.0 a permis la prise en charge de GEOMETRYCOLLECTION
Cette méthode implémente la spécification OGC Simple Features Implementation Specification for SQL 1.1. s2.1.1.2 //
s2.1.13.3
Exemples
7.11.1.16 ST_Within
ST_Within — Tests si chaque point de A se trouve dans B, et que leurs intérieurs ont un point commun
Synopsis
Description
Renvoie TRUE si la géométrie A est à l’intérieur de la géométrie B. A est à l’intérieur de B si et seulement si tous les points de A
se trouvent à l’intérieur (c’est-à-dire à l’intérieur ou à la limite) de B (ou de manière équivalente, aucun point de A ne se trouve
à l’extérieur de B), et si les intérieurs de A et de B ont au moins un point en commun.
Pour que cette fonction ait un sens, les géométries sources doivent toutes deux avoir la même projection de coordonnées et le
même SRID.
In mathematical terms: ST_Within(A, B) ⇔ (A B = A) ∧ (Int(A) Int(B) 6= ∅)
T T
The within relation is reflexive: every geometry is within itself. The relation is antisymmetric: if ST_Within(A,B) = true
and ST_Within(B,A) = true, then the two geometries must be topologically equal (ST_Equals(A,B) = true).
ST_Within est le contraire de ST_Contains. Ainsi, ST_Within(A,B) = ST_Contains(B,A).
Note
Comme les intérieurs doivent avoir un point commun, une subtilité de la définition est que les lignes et les points situés
entièrement dans la limite des polygones ou des lignes ne sont pas à l’intérieur de la géométrie. Pour plus de détails,
voir Subtleties of OGC Covers, Contains, Within. Le prédicat ST_CoveredBy fournit une relation plus inclusive.
Note
Cette fonction inclut une comparaison de la boîte englobante qui utilise tous les index disponibles sur les géométries.
Pour éviter l’utilisation d’un index, utilisez la fonction _ST_Within.
Important
Amélioration : 3.0.0 a permis la prise en charge de GEOMETRYCOLLECTION
Manuel PostGIS 3.4.0dev 309 / 870
Important
N’utilisez pas cette fonction avec des géométries non valides. Vous obtiendrez des résultats inattendus.
Cette méthode implémente la spécification OGC Simple Features Implementation Specification for SQL 1.1. s2.1.1.2 //
s2.1.13.3 - a.Relate(b, ’T*F**F***’)
Exemples
Voir aussi
7.11.2.1 ST_3DDWithin
Synopsis
Description
Renvoie true si la distance 3D entre deux valeurs géométriques n’est pas supérieure à la distance distance_of_srid. La
distance est spécifiée en unités définies par le système de référence spatial des géométries. Pour que cette fonction ait un sens,
les géométries sources doivent se trouver dans le même système de coordonnées (avoir le même SRID).
Note
Cette fonction inclut une comparaison de la boîte englobante qui utilise tous les index disponibles sur les géométries.
Exemples
-- Geometry example - units in meters (SRID: 2163 US National Atlas Equal area) (3D point ←-
and line compared 2D point and line)
-- Note: currently no vertical datum support so Z is not transformed and assumed to be same ←-
units as final.
SELECT ST_3DDWithin(
ST_Transform(ST_GeomFromEWKT('SRID=4326;POINT(-72.1235 42.3521 4)'),2163),
ST_Transform(ST_GeomFromEWKT('SRID=4326;LINESTRING(-72.1260 42.45 15, -72.123 42.1546 ←-
20)'),2163),
126.8
) As within_dist_3d,
ST_DWithin(
ST_Transform(ST_GeomFromEWKT('SRID=4326;POINT(-72.1235 42.3521 4)'),2163),
ST_Transform(ST_GeomFromEWKT('SRID=4326;LINESTRING(-72.1260 42.45 15, -72.123 42.1546 ←-
20)'),2163),
126.8
) As within_dist_2d;
within_dist_3d | within_dist_2d
----------------+----------------
f | t
Voir aussi
7.11.2.2 ST_3DDFullyWithin
ST_3DDFullyWithin — Teste si deux géométries 3D sont entièrement comprises dans une distance 3D donnée
Synopsis
Description
Renvoie true si les géométries 3D se trouvent à la distance spécifiée l’une de l’autre. La distance est spécifiée en unités définies
par le système de référence spatiale des géométries. Pour que cette fonction ait un sens, les géométries sources doivent toutes
deux avoir la même projection de coordonnées et le même SRID.
Note
Cette fonction inclut une comparaison de la boîte englobante qui utilise tous les index disponibles sur les géométries.
Disponibilité : 2.0.0
Exemples
-- This compares the difference between fully within and distance within as well
-- as the distance fully within for the 2D footprint of the line/point vs. the 3d fully ←-
within
SELECT ST_3DDFullyWithin(geom_a, geom_b, 10) as D3DFullyWithin10, ST_3DDWithin(geom_a, ←-
geom_b, 10) as D3DWithin10,
ST_DFullyWithin(geom_a, geom_b, 20) as D2DFullyWithin20,
ST_3DDFullyWithin(geom_a, geom_b, 20) as D3DFullyWithin20 from
(select ST_GeomFromEWKT('POINT(1 1 2)') as geom_a,
ST_GeomFromEWKT('LINESTRING(1 5 2, 2 7 20, 1 9 100, 14 12 3)') as geom_b) t1;
d3dfullywithin10 | d3dwithin10 | d2dfullywithin20 | d3dfullywithin20
------------------+-------------+------------------+------------------
f | t | t | f
Voir aussi
7.11.2.3 ST_DFullyWithin
ST_DFullyWithin — Teste si deux géométries sont entièrement comprises dans une distance donnée
Synopsis
Description
Renvoie un résultat positif si les géométries sont entièrement situées à la distance spécifiée l’une de l’autre. La distance est
spécifiée en unités définies par le système de référence spatiale des géométries. Pour que cette fonction ait un sens, les géométries
sources doivent toutes deux avoir la même projection de coordonnées et le même SRID.
Note
Cette fonction inclut une comparaison de la boîte englobante qui utilise tous les index disponibles sur les géométries.
Disponibilité : 1.5.0
Exemples
-----------------
DFullyWithin10 | DWithin10 | DFullyWithin20 |
---------------+----------+---------------+
f | t | t |
Voir aussi
7.11.2.4 ST_DWithin
Synopsis
Description
Note
Utilisez ST_3DDWithin pour les géométries 3D.
Manuel PostGIS 3.4.0dev 313 / 870
Note
Cet appel de fonction inclut une comparaison de la boîte de délimitation qui utilise tous les index disponibles sur les
géométries.
Cette méthode implémente la spécification OGC Simple Features Implementation Specification for SQL 1.1.
Disponibilité : la prise en charge du type geography a été introduite dans la version 1.5.0
Amélioration : la version 2.1.0 a amélioré la vitesse de la géographie. Voir Making Geography faster pour plus de détails.
Amélioration : la prise en charge des géométries courbes a été introduite dans la version 2.1.0.
Avant la version 1.3, ST_Expand était couramment utilisé en conjonction avec && et ST_Distance pour tester la distance, et
avant la version 1.3.4, cette fonction utilisait cette logique. À partir de la version 1.3.4, ST_DWithin utilise une fonction de
distance de court-circuit plus rapide.
Exemples
-- Find broadcasting towers that receiver with limited range can receive.
-- Data is geometry in Spherical Mercator (SRID=3857), ranges are approximate.
-- Create geometry index that will check proximity limit of user to tower
CREATE INDEX ON broadcasting_towers using gist (geom);
-- Create geometry index that will check proximity limit of tower to user
CREATE INDEX ON broadcasting_towers using gist (ST_Expand(geom, sending_range));
Voir aussi
ST_Distance, ST_3DDWithin
Manuel PostGIS 3.4.0dev 314 / 870
7.11.2.5 ST_PointInsideCircle
ST_PointInsideCircle — Teste si un point géométrique se trouve à l’intérieur d’un cercle défini par un centre et un rayon
Synopsis
Description
Retourne true si la géométrie est un point et se trouve à l’intérieur du cercle de centre center_x,center_y et de rayon
radius.
Warning
N’utilise pas les index spatiaux. Utilisez plutôt ST_DWithin.
Disponibilité : 1.2
Modifié : 2.2.0 Dans les versions précédentes, cette fonction était appelée ST_Point_Inside_Circle
Exemples
Voir aussi
ST_DWithin
7.12.1 ST_Area
Synopsis
Description
Renvoie l’aire d’une géométrie polygonale. Pour les types geometry, une surface cartésienne 2D (planaire) est calculée, avec
des unités spécifiées par le SRID. Pour les types geography, la surface est déterminée par défaut sur un sphéroïde avec des
unités en mètres carrés. Pour calculer la surface en utilisant le modèle sphérique, plus rapide mais moins précis, utilisez
ST_Area(geog,false).
Amélioration : 2.0.0 - la prise en charge des surfaces polyédriques 2D a été introduite.
Amélioration : 2.2.0 - mesure sur sphéroïde effectuée avec GeographicLib pour une meilleure précision et robustesse. Nécessite
PROJ >= 4.9.0 pour profiter de la nouvelle fonctionnalité.
Modifié : 3.0.0 - ne dépend plus de SFCGAL.
Cette méthode implémente la spécification OGC Simple Features Implementation Specification for SQL 1.1.
Note
Pour les surfaces polyédriques, ne prend en charge que les surfaces polyédriques 2D (pas 2.5D). Pour les surfaces
2.5D, la réponse peut être différente de zéro, mais uniquement pour les faces qui se trouvent entièrement dans le plan
XY.
Exemples
Retourne la superficie en pieds carrés d’un terrain du Massachusetts et multipliez par la conversion pour obtenir des mètres carrés.
Notez que la surface est exprimée en pieds carrés, car EPSG:2249 correspond aux pieds de plan de l’État du Massachusetts.
select ST_Area(geom) sqft,
ST_Area(geom) * 0.3048 ^ 2 sqm
from (
select 'SRID=2249;POLYGON((743238 2967416,743238 2967450,
743265 2967450,743265.625 2967416,743238 2967416))' :: ←-
geometry geom
) subquery;
┌─────────┬─%
│ sqft │ sqm │
├─────────┼─%
│ 928.625 │ 86.27208552 │
└─────────┴─%
Retourne la surface en pieds carrés et transformez-la en mètres du plan de l’État du Massachusetts (EPSG:26986) pour obtenir
des mètres carrés. Notez qu’il s’agit de pieds carrés car 2249 est le plan de l’État du Massachusetts en pieds et que la surface
transformée est en mètres carrés car EPSG:26986 est le plan de l’État du Massachusetts en mètres
select ST_Area(geom) sqft,
ST_Area(ST_Transform(geom, 26986)) As sqm
from (
select
'SRID=2249;POLYGON((743238 2967416,743238 2967450,
743265 2967450,743265.625 2967416,743238 2967416))' :: geometry geom
) subquery;
┌─────────┬─%
│ sqft │ sqm │
├─────────┼─%
│ 928.625 │ 86.272430607008 │
└─────────┴─%
Manuel PostGIS 3.4.0dev 316 / 870
Retourne la surface en pieds carrés et en mètres carrés en utilisant le type de données geography. Notez que nous transformons
notre geometry en geography (avant de pouvoir le faire, assurez-vous que votre géométrie est en WGS 84 long lat 4326). La
geography se mesure toujours en mètres. Il s’agit d’une démonstration à des fins de comparaison. Normalement, votre table sera
déjà stockée dans le type de données geography.
select ST_Area(geog) / 0.3048 ^ 2 sqft_spheroid,
ST_Area(geog, false) / 0.3048 ^ 2 sqft_sphere,
ST_Area(geog) sqm_spheroid
from (
select ST_Transform(
'SRID=2249;POLYGON((743238 2967416,743238 2967450,743265 ←-
2967450,743265.625 2967416,743238 2967416))'::geometry,
4326
) :: geography geog
) as subquery;
┌───────────%
│ sqft_spheroid │ sqft_sphere │ sqm_spheroid │
├───────────%
│ 928.684405784452 │ 927.049336105925 │ 86.2776044979692 │
└───────────%
Voir aussi
7.12.2 ST_Azimuth
ST_Azimuth — Renvoie l’azimut basé sur le nord d’une ligne entre deux points.
Synopsis
Description
Renvoie l’azimut en radians du point cible par rapport au point d’origine, ou NULL si les deux points coïncident. L’angle
d’azimut est un angle positif dans le sens des aiguilles d’une montre, référencé à partir de l’axe Y positif (geometry) ou du
méridien Nord (geography) : North = 0; Northeast = π/4; East = π/2; Southeast = 3π/4; South = π; Southwest 5π/4; West =
3π/2; Northwest = 7π/4.
Pour le type geography, la solution azimutale est connue sous le nom de inverse geodesic problem.
L’azimut est un concept mathématique défini comme l’angle entre un vecteur de référence et un point, avec des unités angulaires
en radians. La valeur du résultat en radians peut être convertie en degrés à l’aide de la fonction PostgreSQL degrees().
L’azimut peut être utilisé conjointement avec ST_Translate pour déplacer un objet le long de son axe perpendiculaire. Voir la
fonction upgis_lineshift() dans le PostGIS wiki pour une implémentation de ceci.
Disponibilité : 1.1.0
Amélioration : la prise en charge du type geography a été introduite dans la version 2.0.0.
Amélioration : 2.2.0 mesure sur sphéroïde effectuée avec GeographicLib pour améliorer la précision et la robustesse. Nécessite
PROJ >= 4.9.0 pour profiter de la nouvelle fonctionnalité.
Manuel PostGIS 3.4.0dev 317 / 870
Exemples
dega_b | degb_a
------------------+------------------
42.2736890060937 | 222.273689006094
Bleu : origine Point(25,45) ; Vert : cible Point(75, 100) ; Bleu : origine Point(75, 100) ; Vert : cible Point(25, 45) ;
Jaune : axe Y ou Nord ; Rouge : angle d’azimut. Jaune : axe Y ou Nord ; Rouge : angle d’azimut.
Voir aussi
7.12.3 ST_Angle
ST_Angle — Renvoie l’angle entre deux vecteurs définis par 3 ou 4 points, ou 2 lignes.
Synopsis
Description
Calcule l’angle dans le sens des aiguilles d’une montre entre deux vecteurs.
Variante 1: calcule l’angle formé par les points P1-P2-P3. Si un quatrième point est fourni, elle calcule l’angle formé par les
points P1-P2 et P3-P4
Variante 2: calcule l’angle entre deux vecteurs S1-E1 et S2-E2, définis par les points de départ et d’arrivée des lignes d’entrée
Manuel PostGIS 3.4.0dev 318 / 870
Le résultat est un angle positif compris entre 0 et 2π radians. Le résultat en radians peut être converti en degrés à l’aide de la
fonction PostgreSQL degrees().
Notez que ST_Angle(P1,P2,P3) = ST_Angle(P2,P1,P2,P3).
Disponibilité : 2.5.0
Exemples
degrees
---------
270
degrees
-------------------
269.9999999999999
Angle entre les vecteurs définis par les points de départ et d’arrivée des lignes
SELECT degrees( ST_Angle('LINESTRING(0 0, 0.3 0.7, 1 1)', 'LINESTRING(0 0, 0.2 0.5, 1 0)') ←-
);
degrees
--------------
45
Voir aussi
ST_Azimuth
7.12.4 ST_ClosestPoint
ST_ClosestPoint — Renvoie le point 2D sur g1 qui est le plus proche de g2. Il s’agit du premier point de la ligne la plus courte
d’une géométrie à l’autre.
Synopsis
Description
Renvoie le point bidimensionnel sur geom1 qui est le plus proche de geom2. Il s’agit du premier point de la ligne la plus courte
entre les géométries (telle que calculée par ST_ShortestLine).
Manuel PostGIS 3.4.0dev 319 / 870
Note
Si vous avez une géométrie 3D, vous préférerez peut-être utiliser ST_3DClosestPoint.
Exemples
Le point le plus proche d’un point et d’une LineString est le point lui-même. Le point le plus proche d’une LineString et d’un
Point est un point de la ligne.
cp_pt_line | cp_line_pt
----------------+------------------------------------------
POINT(160 40) | POINT(125.75342465753425 115.34246575342466)
Manuel PostGIS 3.4.0dev 320 / 870
Voir aussi
7.12.5 ST_3DClosestPoint
ST_3DClosestPoint — Renvoie le point 3D sur g1 qui est le plus proche de g2. Il s’agit du premier point de la ligne 3D la plus
courte.
Synopsis
Description
Renvoie le point tridimensionnel de g1 le plus proche de g2. Il s’agit du premier point de la ligne 3D la plus courte. La longueur
3D de la ligne 3D la plus courte est la distance 3D.
Exemples
Manuel PostGIS 3.4.0dev 321 / 870
cp3d_line_pt | ←-
cp2d_line_pt
-----------------------------------------------------------+--------------------------------------
cp3d_line_pt | cp2d_line_pt
-----------------------------------------------------------+--------------
POINT(54.6993798867619 128.935022917228 11.5475869506606) | POINT(50 75)
Voir aussi
7.12.6 ST_Distance
Synopsis
Description
Pour les types geometry, renvoie la distance cartésienne (planaire) minimale en 2D entre deux géométries, en unités projetées
(unités de référence spatiales).
Pour les types geography, la valeur par défaut est la distance géodésique minimale entre deux géographies en mètres, calculée
sur le sphéroïde déterminé par le SRID. Si use_spheroid est faux, un calcul sphérique plus rapide est utilisé.
Cette méthode implémente la spécification OGC Simple Features Implementation Specification for SQL 1.1.
Exemples de géométrie
Exemple de géométrie - unités en degrés planaires 4326 est le long lat WGS 84, les unités sont des degrés.
SELECT ST_Distance(
'SRID=4326;POINT(-72.1235 42.3521)'::geometry,
'SRID=4326;LINESTRING(-72.1260 42.45, -72.123 42.1546)'::geometry );
-----------------
0.00150567726382282
Exemple de géométrie - unités en mètres (SRID : 3857, proportionnel aux pixels sur les cartes web populaires). Bien que la
valeur soit erronée, les valeurs proches peuvent être comparées correctement, ce qui en fait un bon choix pour des algorithmes
tels que KNN ou KMeans.
SELECT ST_Distance(
ST_Transform('SRID=4326;POINT(-72.1235 42.3521)'::geometry, 3857),
ST_Transform('SRID=4326;LINESTRING(-72.1260 42.45, -72.123 42.1546)'::geometry, 3857) ) ←-
;
-----------------
167.441410065196
Exemple de géométrie - unités en mètres (SRID : 3857 comme ci-dessus, mais corrigé par cos(lat) pour tenir compte de la
distorsion)
SELECT ST_Distance(
ST_Transform('SRID=4326;POINT(-72.1235 42.3521)'::geometry, 3857),
ST_Transform('SRID=4326;LINESTRING(-72.1260 42.45, -72.123 42.1546)'::geometry, 3857)
) * cosd(42.3521);
-----------------
123.742351254151
Exemple de géométrie - unités en mètres (SRID : 26986 Massachusetts state plane meters) (plus précis pour le Massachusetts)
Manuel PostGIS 3.4.0dev 323 / 870
SELECT ST_Distance(
ST_Transform('SRID=4326;POINT(-72.1235 42.3521)'::geometry, 26986),
ST_Transform('SRID=4326;LINESTRING(-72.1260 42.45, -72.123 42.1546)'::geometry, 26986) ←-
);
-----------------
123.797937878454
Exemple de géométrie - unités en mètres (SRID : 2163 US National Atlas Equal area) (moins précis)
SELECT ST_Distance(
ST_Transform('SRID=4326;POINT(-72.1235 42.3521)'::geometry, 2163),
ST_Transform('SRID=4326;LINESTRING(-72.1260 42.45, -72.123 42.1546)'::geometry, 2163) ) ←-
;
------------------
126.664256056812
Exemples géographiques
Identique à l’exemple du type geometry, mais avec des unités en mètres - utiliser la sphère pour un calcul légèrement plus rapide
et moins précis.
SELECT ST_Distance(gg1, gg2) As spheroid_dist, ST_Distance(gg1, gg2, false) As sphere_dist
FROM (SELECT
'SRID=4326;POINT(-72.1235 42.3521)'::geography as gg1,
'SRID=4326;LINESTRING(-72.1260 42.45, -72.123 42.1546)'::geography as gg2
) As foo ;
spheroid_dist | sphere_dist
------------------+------------------
123.802076746848 | 123.475736916397
Voir aussi
7.12.7 ST_3DDistance
ST_3DDistance — Renvoie la distance cartésienne minimale en 3D (basée sur la référence spatiale) entre deux géométries en
unités projetées.
Synopsis
Description
Renvoie la distance cartésienne minimale tridimensionnelle entre deux géométries en unités projetées (unités de référence spa-
tiales).
Exemples
-- Geometry example - units in meters (SRID: 2163 US National Atlas Equal area) (3D point ←-
and line compared 2D point and line)
-- Note: currently no vertical datum support so Z is not transformed and assumed to be same ←-
units as final.
SELECT ST_3DDistance(
ST_Transform('SRID=4326;POINT(-72.1235 42.3521 4)'::geometry,2163),
ST_Transform('SRID=4326;LINESTRING(-72.1260 42.45 15, -72.123 ←-
42.1546 20)'::geometry,2163)
) As dist_3d,
ST_Distance(
ST_Transform('SRID=4326;POINT(-72.1235 42.3521)'::geometry,2163),
ST_Transform('SRID=4326;LINESTRING(-72.1260 42.45, -72.123 42.1546) ←-
'::geometry,2163)
) As dist_2d;
dist_3d | dist_2d
------------------+-----------------
127.295059324629 | 126.66425605671
Voir aussi
7.12.8 ST_DistanceSphere
ST_DistanceSphere — Renvoie la distance minimale en mètres entre deux géométries lon/lat en utilisant un modèle de terre
sphérique.
Synopsis
Description
Renvoie la distance minimale en mètres entre deux points lon/lat. Utilise une terre sphérique et un rayon dérivé du sphéroïde
défini par le SRID. Plus rapide que ST_DistanceSpheroid, mais moins précis. PostGIS Versions antérieures à la version 1.5
uniquement pour les points.
Disponibilité : 1.5 - la prise en charge d’autres types de géométrie que les points a été introduite. Les versions précédentes ne
fonctionnaient qu’avec des points.
Modifié : 2.2.0 Dans les versions antérieures, cette fonction s’appelait ST_Distance_Sphere
Exemples
Voir aussi
ST_Distance, ST_DistanceSpheroid
7.12.9 ST_DistanceSpheroid
ST_DistanceSpheroid — Renvoie la distance minimale entre deux géométries lon/lat en utilisant un modèle de terre sphéroïdale.
Synopsis
Description
Renvoie la distance minimale en mètres entre deux géométries lon/lat pour un sphéroïde donné. Voir l’explication des sphéroïdes
donnée pour ST_LengthSpheroid.
Note
Cette fonction ne prend pas en compte le SRID de la géométrie. Elle suppose que les coordonnées de la géométrie
sont basées sur le sphéroïde fourni.
Disponibilité : 1.5 - la prise en charge d’autres types de géométrie que les points a été introduite. Les versions précédentes ne
fonctionnaient qu’avec des points.
Modifié : 2.2.0 Dans les versions précédentes, cette fonction était appelée ST_Distance_Sphéroïde
Manuel PostGIS 3.4.0dev 326 / 870
Exemples
SELECT round(CAST(
ST_DistanceSpheroid(ST_Centroid(geom), ST_GeomFromText('POINT(-118 38) ←-
',4326), 'SPHEROID["WGS 84",6378137,298.257223563]')
As numeric),2) As dist_meters_spheroid,
round(CAST(ST_DistanceSphere(ST_Centroid(geom), ST_GeomFromText('POINT(-118 ←-
38)',4326)) As numeric),2) As dist_meters_sphere,
round(CAST(ST_Distance(ST_Transform(ST_Centroid(geom),32611),
ST_Transform(ST_GeomFromText('POINT(-118 38)', 4326),32611)) As numeric),2) ←-
As dist_utm11_meters
FROM
(SELECT ST_GeomFromText('LINESTRING(-118.584 38.374,-118.583 38.5)', 4326) As geom) ←-
as foo;
dist_meters_spheroid | dist_meters_sphere | dist_utm11_meters
----------------------+--------------------+-------------------
70454.92 | 70424.47 | 70438.00
Voir aussi
ST_Distance, ST_DistanceSphere
7.12.10 ST_FrechetDistance
Synopsis
Description
Implémente l’algorithme de calcul de la distance de Fréchet limitée aux points discrets pour les deux géométries, basé sur
Computing Discrete Fréchet Distance. La distance de Fréchet est une mesure de similarité entre les courbes qui tient compte de
l’emplacement et de l’ordre des points le long des courbes. Elle est donc souvent meilleure que la distance de Hausdorff.
Lorsque le paramètre optionnel densifyFrac est spécifié, cette fonction effectue une densification des segments avant de calculer
la distance de Fréchet discrète. Le paramètre densifyFrac définit la fraction par laquelle chaque segment doit être densifié.
Chaque segment sera divisé en un certain nombre de sous-segments de longueur égale, dont la fraction de la longueur totale est
la plus proche de la fraction donnée.
Les unités sont celles du système de référence spatiale des géométries.
Note
L’implémentation actuelle ne prend en charge que les sommets en tant qu’emplacements discrets. Elle pourrait être
étendue pour permettre l’utilisation d’une densité arbitraire de points.
Note
Plus la valeur de densifyFrac spécifiée est petite, plus la distance de Fréchet est précise. Mais le temps de calcul et
l’utilisation de la mémoire augmentent avec le carré du nombre de sous-segments.
Exemples
Voir aussi
ST_HausdorffDistance
7.12.11 ST_HausdorffDistance
Synopsis
Description
Renvoie la distance de Hausdorff entre deux géométries. La distance de Hausdorff est une mesure de la similarité ou de la
dissemblance de deux géométries.
La fonction calcule en fait la "Discrete Hausdorff Distance". Il s’agit de la distance de Hausdorff calculée en des points discrets
des géométries. Le paramètre densifyFrac peut être spécifié pour fournir une réponse plus précise en densifiant les segments
avant de calculer la distance discrète de Hausdorff. Chaque segment est divisé en un certain nombre de sous-segments de longueur
égale dont la fraction de la longueur du segment est la plus proche de la fraction donnée.
Les unités sont celles du système de référence spatiale des géométries.
Note
Cet algorithme n’est PAS équivalent à la distance standard de Hausdorff. Cependant, il calcule une approximation qui
est correcte pour un large sous-ensemble de cas utiles. Un cas important est celui des lignes qui sont à peu près
parallèles les unes aux autres et dont la longueur est à peu près égale. Il s’agit d’une métrique utile pour l’appariement
des lignes.
Disponibilité : 1.5.0
Manuel PostGIS 3.4.0dev 328 / 870
Exemples
Exemple: Pour chaque bâtiment, trouvez la parcelle qui le représente le mieux. Tout d’abord, nous exigeons que la parcelle
intersecte la géométrie du bâtiment. DISTINCT ON garantit que chaque bâtiment ne sera listé qu’une seule fois. ORDER BY
.. ST_HausdorffDistance sélectionne la parcelle qui est la plus similaire au bâtiment.
SELECT DISTINCT ON (buildings.gid) buildings.gid, parcels.parcel_id
FROM buildings
INNER JOIN parcels
ON ST_Intersects(buildings.geom, parcels.geom)
ORDER BY buildings.gid, ST_HausdorffDistance(buildings.geom, parcels.geom);
Voir aussi
ST_FrechetDistance
7.12.12 ST_Length
Synopsis
Description
Pour les types geometry : renvoie la longueur cartésienne 2D de la géométrie s’il s’agit d’une LineString, MultiLineString,
ST_Curve, ST_MultiCurve. Pour les géométries aréolaires, 0 est renvoyé ; utilisez ST_Perimeter à la place. Les unités de
longueur sont déterminées par le système de référence spatial de la géométrie.
Pour les types geography : le calcul est effectué en utilisant le calcul géodésique inverse. Les unités de longueur sont exprimées
en mètres. Si PostGIS est compilé avec PROJ version 4.8.0 ou ultérieure, le sphéroïde est spécifié par le SRID, sinon il est
exclusif à WGS84. Si use_spheroid = false, le calcul est basé sur une sphère au lieu d’un sphéroïde.
Actuellement, pour la géométrie, il s’agit d’un alias de ST_Length2D, mais cela pourrait changer pour prendre en charge des
dimensions plus élevées.
Warning
Modifié : 2.0.0 Rupture -- dans les versions précédentes, appliquer ceci à un MULTI/POLYGONE de type geography
donnait le périmètre du POLYGONE/MULTIPOLYGONE. Dans la version 2.0.0, cette fonction a été modifiée pour
retourner 0 afin d’être en ligne avec le comportement de la géométrie. Veuillez utiliser ST_Perimeter si vous souhaitez
obtenir le périmètre d’un polygone
Note
Pour geography, le calcul utilise par défaut un modèle sphéroïdal. Pour utiliser le calcul sphérique, plus rapide mais
moins précis, utilisez ST_Length(gg,false) ;
Cette méthode implémente la spécification OGC Simple Features Implementation Specification for SQL 1.1. s2.1.5.1
Exemples de géométrie
Renvoie la longueur en pieds de la ligne. Notez que cette longueur est exprimée en pieds car EPSG:2249 correspond aux pieds
du plan de l’État du Massachusetts
SELECT ST_Length(ST_GeomFromText('LINESTRING(743238 2967416,743238 2967450,743265 2967450,
743265.625 2967416,743238 2967416)',2249));
st_length
---------
122.630744000095
);
st_length
---------
34309.4563576191
Exemples géographiques
length_spheroid | length_sphere
------------------+------------------
34310.5703627288 | 34346.2060960742
Voir aussi
7.12.13 ST_Length2D
Synopsis
Description
Renvoie la longueur 2D de la géométrie s’il s’agit d’une ligne ou d’une multiligne. C’est un alias de ST_Length
Voir aussi
ST_Length, ST_3DLength
7.12.14 ST_3DLength
Synopsis
Description
Renvoie la longueur tridimensionnelle ou bidimensionnelle de la géométrie s’il s’agit d’une LineString ou d’une MultiLineString.
Pour les lignes à 2 dimensions, la longueur à 2 dimensions est renvoyée (comme ST_Length et ST_Length2D)
Cette méthode implémente la spécification SQL/MM. SQL-MM IEC 13249-3: 7.1, 10.3
Modifié : 2.0.0 Dans les versions précédentes, cette fonction était appelée ST_Length3D
Exemples
Longueur de retour en pieds pour un câble 3D. Notez que cette longueur est exprimée en pieds car EPSG:2249 correspond aux
pieds du plan de l’État du Massachusetts
SELECT ST_3DLength(ST_GeomFromText('LINESTRING(743238 2967416 1,743238 2967450 1,743265 ←-
2967450 3,
743265.625 2967416 3,743238 2967416 3)',2249));
ST_3DLength
-----------
122.704716741457
Voir aussi
ST_Length, ST_Length2D
7.12.15 ST_LengthSpheroid
Synopsis
Description
Calcule la longueur ou le périmètre d’une géométrie sur un ellipsoïde. Ceci est utile si les coordonnées de la géométrie sont en
longitude/latitude et qu’une longueur est souhaitée sans reprojection. Le sphéroïde est spécifié par une valeur textuelle comme
suit :
SPHEROID[<NAME>,<SEMI-MAJOR AXIS>,<INVERSE FLATTENING>]
Par exemple :
SPHEROID["GRS_1980",6378137,298.257222101]
Disponibilité : 1.2.2
Modifié : 2.2.0 Dans les versions précédentes, cette fonction s’appelait ST_Length_Spheroid et avait l’alias ST_3DLength_Spheroid
Exemples
--3D
SELECT ST_LengthSpheroid( geom, sph_m ) As tot_len,
ST_LengthSpheroid(ST_GeometryN(geom,1), sph_m) As len_line1,
ST_LengthSpheroid(ST_GeometryN(geom,2), sph_m) As len_line2
FROM (SELECT ST_GeomFromEWKT('MULTILINESTRING((-118.584 38.374 ←-
20,-118.583 38.5 30),
(-71.05957 42.3589 75, -71.061 43 90))') As geom,
CAST('SPHEROID["GRS_1980",6378137,298.257222101]' As spheroid) As sph_m) as foo;
Voir aussi
ST_GeometryN, ST_Length
7.12.16 ST_LongestLine
Synopsis
Description
Renvoie la plus longue ligne bidimensionnelle entre les points de deux géométries. La ligne renvoyée commence sur g1 et se
termine sur g2.
La ligne la plus longue se trouve toujours entre deux sommets. La fonction renvoie la première ligne la plus longue si plusieurs
sont trouvées. La longueur de la ligne est égale à la distance renvoyée par ST_MaxDistance.
Si g1 et g2 sont la même géométrie, renvoie la ligne entre les deux sommets les plus éloignés l’un de l’autre dans la géométrie.
Les extrémités de la ligne se trouvent sur le cercle calculé par ST_MinimumBoundingCircle.
Disponibilité : 1.5.0
Manuel PostGIS 3.4.0dev 333 / 870
Exemples
Ligne la plus longue traversant une seule géométrie. La longueur de la ligne est égale à la distance maximale. Les extrémités de
la ligne sont situées sur le cercle de délimitation minimal.
SELECT ST_AsText( ST_LongestLine( geom, geom)) AS llinewkt,
ST_MaxDistance( geom, geom) AS max_dist,
ST_Length( ST_LongestLine(geom, geom)) AS lenll
FROM (SELECT 'POLYGON ((40 180, 110 160, 180 180, 180 120, 140 90, 160 40, 80 10, 70 40, 20 ←-
50, 40 180),
(60 140, 99 77.5, 90 140, 60 140))'::geometry AS geom) AS t;
Voir aussi
7.12.17 ST_3DLongestLine
Synopsis
Description
Renvoie la ligne tridimensionnelle la plus longue entre deux géométries. La fonction renvoie la première ligne la plus longue
s’il y en a plusieurs. La ligne retournée commence en g1 et se termine en g2. La longueur 3D de la ligne est égale à la distance
renvoyée par ST_3DMaxDistance.
Disponibilité : 2.0.0
Modifié : 2.2.0 - si 2 géométries 2D sont saisies, un point 2D est renvoyé (au lieu de l’ancien comportement supposant 0 pour Z
manquant). Dans le cas de 2D et 3D, Z n’est plus supposé être 0 pour Z manquant.
Exemples
lol3d_line_pt | lol2d_line_pt
-----------------------------------+----------------------------
LINESTRING(50 75 1000,100 100 30) | LINESTRING(98 190,100 100)
lol3d_line_pt | lol2d_line_pt
---------------------------------+--------------------------
LINESTRING(98 190 1,50 74 1000) | LINESTRING(98 190,50 74)
Voir aussi
7.12.18 ST_MaxDistance
ST_MaxDistance — Renvoie la plus grande distance 2D entre deux géométries en unités projetées.
Synopsis
Description
Renvoie la distance maximale en 2D entre deux géométries, en unités projetées. La distance maximale se situe toujours entre
deux sommets. C’est la longueur de la ligne renvoyée par ST_LongestLine.
Si g1 et g2 sont la même géométrie, renvoie la distance entre les deux sommets les plus éloignés dans cette géométrie.
Disponibilité : 1.5.0
Exemples
Voir aussi
7.12.19 ST_3DMaxDistance
ST_3DMaxDistance — Renvoie la distance maximale cartésienne 3D (basée sur la référence spatiale) entre deux géométries en
unités projetées.
Synopsis
Description
Renvoie la distance cartésienne maximale tridimensionnelle entre deux géométries en unités projetées (unités de référence spa-
tiales).
Exemples
-- Geometry example - units in meters (SRID: 2163 US National Atlas Equal area) (3D point ←-
and line compared 2D point and line)
-- Note: currently no vertical datum support so Z is not transformed and assumed to be same ←-
units as final.
SELECT ST_3DMaxDistance(
ST_Transform(ST_GeomFromEWKT('SRID=4326;POINT(-72.1235 42.3521 ←-
10000)'),2163),
ST_Transform(ST_GeomFromEWKT('SRID=4326;LINESTRING(-72.1260 42.45 ←-
15, -72.123 42.1546 20)'),2163)
) As dist_3d,
ST_MaxDistance(
ST_Transform(ST_GeomFromEWKT('SRID=4326;POINT(-72.1235 42.3521 ←-
10000)'),2163),
ST_Transform(ST_GeomFromEWKT('SRID=4326;LINESTRING(-72.1260 42.45 ←-
15, -72.123 42.1546 20)'),2163)
) As dist_2d;
dist_3d | dist_2d
------------------+------------------
24383.7467488441 | 22247.8472107251
Voir aussi
7.12.20 ST_MinimumClearance
ST_MinimumClearance — Renvoie la clearance (le dégagement) d’une géométrie, une mesure de la robustesse d’une géométrie.
Synopsis
Description
Il est possible qu’une géométrie réponde aux critères de validité selon ST_IsValid (polygones) ou ST_IsSimple (lignes), mais
qu’elle devienne invalide si l’un de ses sommets est déplacé d’une petite distance. Cela peut se produire en raison d’une perte
de précision lors de la conversion vers des formats texte (tels que WKT, KML, GML, GeoJSON) ou des formats binaires qui
n’utilisent pas de coordonnées en virgule flottante à double précision (par exemple, MapInfo TAB).
La clearance (le dégagement) minimum est une mesure quantitative de la résistance d’une géométrie aux changements de préci-
sion des coordonnées. Il s’agit de la plus grande distance à laquelle les sommets de la géométrie peuvent être déplacés sans créer
une géométrie invalide. Des valeurs plus élevées de l’espace libre minimum indiquent une plus grande robustesse.
Si une géométrie a un dégagement minimal de e, alors.. :
• Aucun des deux sommets distincts de la géométrie n’est plus proche que la distance e.
• Aucun sommet n’est plus proche que e d’un segment de ligne dont il n’est pas l’extrémité.
S’il n’existe pas de dégagement minimum pour une géométrie (par exemple un point unique ou un MultiPoint dont les points
sont identiques), la valeur de retour est Infinity.
Pour éviter les problèmes de validité causés par la perte de précision, ST_ReducePrecision peut réduire la précision des coordon-
nées tout en s’assurant que la géométrie polygonale reste valide.
Disponibilité : 2.3.0
Manuel PostGIS 3.4.0dev 338 / 870
Exemples
Voir aussi
7.12.21 ST_MinimumClearanceLine
ST_MinimumClearanceLine — Renvoie la chaîne de lignes à deux points couvrant le dégagement (clearance) minimum d’une
géométrie.
Synopsis
Description
Renvoie les 2 points d’une LineString couvrant le dégagement (clearance) minimum d’une géométrie. Si la géométrie n’a pas de
dégagement (clearance) minimum, LINESTRING EMPTY est retourné.
Effectué par le module GEOS.
Disponibilité : 2.3.0 - nécessite GEOS >= 3.6.0
Exemples
Voir aussi
ST_MinimumClearance
7.12.22 ST_Perimeter
Synopsis
Description
Renvoie le périmètre 2D d’une geometry/geography s’il s’agit d’une ST_Surface, ST_MultiSurface (Polygone, MultiPolygone).
0 est retourné pour les géométries non réelles. Pour les géométries linéaires, utiliser ST_Length. Pour les types geometry, les
unités de mesure du périmètre sont spécifiées par le système de référence spatiale de la géométrie.
Pour les types geography, les calculs sont effectués en utilisant le problème géodésique inverse, où les unités de périmètre sont en
mètres. Si PostGIS est compilé avec PROJ version 4.8.0 ou ultérieure, le sphéroïde est spécifié par le SRID, sinon il est exclusif
à WGS84. Si use_spheroid = false, les calculs approcheront une sphère au lieu d’un sphéroïde.
Il s’agit actuellement d’un alias de ST_Perimeter2D, mais cela pourrait changer pour prendre en charge des dimensions plus
élevées.
Cette méthode implémente la spécification OGC Simple Features Implementation Specification for SQL 1.1. s2.1.5.1
Exemple : Géométrie
Retourne le périmètre en pieds pour les polygones et les multi-polygones. Notez que ce périmètre est en pieds car EPSG:2249
est le plan de l’État du Massachusetts en pieds
SELECT ST_Perimeter(ST_GeomFromText('POLYGON((743238 2967416,743238 2967450,743265 2967450,
743265.625 2967416,743238 2967416))', 2249));
st_perimeter
---------
122.630744000095
(1 row)
Exemples : Géographie
Renvoie le périmètre en mètres et en pieds pour les polygones et les multi-polygones. Notez qu’il s’agit de geography (WGS 84
long lat)
SELECT ST_Perimeter(geog) As per_meters, ST_Perimeter(geog)/0.3048 As per_ft
FROM ST_GeogFromText('POLYGON((-71.1776848522251 42.3902896512902,-71.1776843766326 ←-
42.3903829478009,
-71.1775844305465 42.3903826677917,-71.1775825927231 42.3902893647987,-71.1776848522251 ←-
42.3902896512902))') As geog;
per_meters | per_ft
-----------------+------------------
Manuel PostGIS 3.4.0dev 340 / 870
37.3790462565251 | 122.634666195949
-- MultiPolygon example --
SELECT ST_Perimeter(geog) As per_meters, ST_Perimeter(geog,false) As per_sphere_meters, ←-
ST_Perimeter(geog)/0.3048 As per_ft
FROM ST_GeogFromText('MULTIPOLYGON(((-71.1044543107478 42.340674480411,-71.1044542869917 ←-
42.3406744369506,
-71.1044553562977 42.340673886454,-71.1044543107478 42.340674480411)),
((-71.1044543107478 42.340674480411,-71.1044860600303 42.3407237015564,-71.1045215770124 ←-
42.3407653385914,
-71.1045498002983 42.3407946553165,-71.1045611902745 42.3408058316308,-71.1046016507427 ←-
42.340837442371,
-71.104617893173 42.3408475056957,-71.1048586153981 42.3409875993595,-71.1048736143677 ←-
42.3409959528211,
-71.1048878050242 42.3410084812078,-71.1044020965803 42.3414730072048,
-71.1039672113619 42.3412202916693,-71.1037740497748 42.3410666421308,
-71.1044280218456 42.3406894151355,-71.1044543107478 42.340674480411)))') As geog;
Voir aussi
7.12.23 ST_Perimeter2D
Synopsis
Description
Note
Il s’agit actuellement d’un alias de ST_Perimeter. Dans les versions futures, ST_Perimeter pourrait renvoyer le
périmètre de la dimension la plus élevée pour une géométrie. Cette possibilité est encore à l’étude
Voir aussi
ST_Perimeter
7.12.24 ST_3DPerimeter
Synopsis
Description
Renvoie le périmètre tridimensionnel de la géométrie, s’il s’agit d’un polygone ou d’un multi-polygone. Si la géométrie est
bidimensionnelle, le périmètre bidimensionnel est renvoyé.
Cette méthode implémente la spécification SQL/MM. SQL-MM ISO/IEC 13249-3: 8.1, 10.5
Modifié : 2.0.0 Dans les versions antérieures, il s’appelait ST_Perimeter3D
Exemples
Périmètre d’un polygone légèrement surélevé en l’air dans l’état du Massachusetts, en pieds de plan
SELECT ST_3DPerimeter(geom), ST_Perimeter2d(geom), ST_Perimeter(geom) FROM
(SELECT ST_GeomFromEWKT('SRID=2249;POLYGON((743238 2967416 2,743238 ←-
2967450 1,
743265.625 2967416 1,743238 2967416 2))') As geom) As foo;
Voir aussi
7.12.25 ST_ShortestLine
Synopsis
Description
Renvoie la ligne bidimensionnelle la plus courte entre deux géométries. La ligne renvoyée commence dans geom1 et se termine
dans geom2. Si geom1 et geom2 se croisent, le résultat est une ligne dont le début et la fin se situent à un point d’intersection.
La longueur de la ligne est la même que celle que ST_Distance renvoie pour g1 et g2.
Enhanced: 3.4.0 - support for geography.
Disponibilité : 1.5.0
Manuel PostGIS 3.4.0dev 342 / 870
Exemples
Voir aussi
7.12.26 ST_3DShortestLine
Synopsis
Description
Renvoie la ligne tridimensionnelle la plus courte entre deux géométries. La fonction ne renvoie que la première ligne la plus
courte, si la fonction en trouve plusieurs. Si g1 et g2 se croisent en un seul point, la fonction renvoie une ligne dont le début
et la fin se trouvent à ce point d’intersection. Si g1 et g2 se croisent en plus d’un point, la fonction renvoie une ligne dont
le début et la fin se situent au même point, mais qui peut être n’importe lequel des points d’intersection. La ligne renvoyée
commencera toujours en g1 et se terminera en g2. La longueur 3D de la ligne renvoyée par cette fonction sera toujours la même
que ST_3DDistance renvoie pour g1 et g2.
Disponibilité : 2.0.0
Modifié : 2.2.0 - si 2 géométries 2D sont saisies, un point 2D est renvoyé (au lieu de l’ancien comportement supposant 0 pour Z
manquant). Dans le cas de 2D et 3D, Z n’est plus supposé être 0 pour Z manquant.
Exemples
shl3d_line_pt | ←-
shl2d_line_pt
----------------------------------------------------------------------------+---------------------
shl3d_line_pt | ←-
shl2d_line_pt
---------------------------------------------------------------------------+----------------------
Voir aussi
7.13.1 ST_ClipByBox2D
Synopsis
Description
Coupe une géométrie par une boîte 2D d’une manière rapide et tolérante, mais qui peut être invalide. Les géométries d’entrée
topologiquement invalides n’entraînent pas la levée d’exceptions. La géométrie de sortie n’est pas garantie valide (en particulier,
des auto-intersections pour un polygone peuvent être introduites).
Effectué par le module GEOS.
Disponibilité : 2.2.0
Manuel PostGIS 3.4.0dev 345 / 870
Exemples
-- Rely on implicit cast from geometry to box2d for the second parameter
SELECT ST_ClipByBox2D(geom, ST_MakeEnvelope(0,0,10,10)) FROM mytab;
Voir aussi
7.13.2 ST_Difference
ST_Difference — Calcule une géométrie représentant la partie de la géométrie A qui n’intersecte pas la géométrie B.
Synopsis
Description
Renvoie une géométrie représentant la partie de la géométrie A qui n’intersecte pas la géométrie B. Ceci est équivalent à A
- ST_Intersection(A,B). Si A est entièrement contenue dans B, une géométrie atomique vide du type approprié est
renvoyée.
Note
Il s’agit de la seule fonction de superposition pour laquelle l’ordre d’entrée est important. ST_Difference(A, B) renvoie
toujours une partie de A.
Si l’argument optionnel gridSize est fourni, les entrées sont placées sur une grille de la taille donnée, et les sommets du
résultat sont calculés sur cette même grille. (Nécessite GEOS-3.9.0 ou plus)
Effectué par le module GEOS
Enhanced: 3.1.0 accept a gridSize parameter.
Requires GEOS >= 3.9.0 to use the gridSize parameter.
Cette méthode implémente la spécification OGC Simple Features Implementation Specification for SQL 1.1. s2.1.1.3
Cette fonction prend en charge la 3D et ne supprime pas l’indice z. Cependant, le résultat est calculé en utilisant uniquement
XY. Les valeurs Z résultantes sont copiées, moyennées ou interpolées.
Exemples
Manuel PostGIS 3.4.0dev 346 / 870
st_astext
---------
LINESTRING(50 150,50 200)
st_asewkt
---------
MULTIPOINT(-118.6 38.329 6,-118.58 38.38 5)
Voir aussi
7.13.3 ST_Intersection
Synopsis
Description
Renvoie une géométrie représentant l’intersection des points de deux géométries. En d’autres termes, la partie de la géométrie A
et de la géométrie B qui est partagée entre les deux géométries.
Si les géométries n’ont aucun point commun (c’est-à-dire qu’elles sont disjointes), une géométrie atomique vide du type approprié
est renvoyée.
Si l’argument optionnel gridSize est fourni, les entrées sont placées sur une grille de la taille donnée, et les sommets du
résultat sont calculés sur cette même grille. (Nécessite GEOS-3.9.0 ou plus)
ST_Intersection en conjonction avec ST_Intersects est utile pour découper les géométries, comme dans les requêtes sur les boîtes
de délimitation, les tampons ou les régions, lorsque vous n’avez besoin que de la partie d’une géométrie qui se trouve à l’intérieur
d’un pays ou d’une région d’intérêt.
Note
For geography this is a thin wrapper around the geometry implementation. Il détermine d’abord le meilleur SRID
qui correspond à la boîte de délimitation des 2 objets géographiques (si les objets géographiques sont dans une demi-
zone UTM mais pas le même UTM choisira l’un d’eux) (en favorisant UTM ou Lambert Azimuthal Equal Area (LAEA)
pôle nord/sud, et en se rabattant sur mercator dans le pire des cas) et ensuite l’intersection dans ce ref spatial planaire
le mieux adapté et retransforme à nouveau à la géographie WGS84.
Warning
Cette fonction abandonne les valeurs de coordonnées M si elles sont présentes.
Warning
Si vous travaillez avec des géométries 3D, vous pouvez utiliser la fonction ST_3DIntersection basée sur SFGCAL qui
réalise une intersection 3D correcte pour les géométries 3D. Bien que cette fonction fonctionne avec la coordonnée Z,
elle effectue une moyenne de la coordonnée Z.
Cette méthode implémente la spécification OGC Simple Features Implementation Specification for SQL 1.1. s2.1.1.3
Cette fonction prend en charge la 3D et ne supprime pas l’indice z. Cependant, le résultat est calculé en utilisant uniquement
XY. Les valeurs Z résultantes sont copiées, moyennées ou interpolées.
Manuel PostGIS 3.4.0dev 348 / 870
Exemples
Découper toutes les lignes (pistes) par pays. Nous supposons ici que les géométries des pays sont des POLYGONES ou des
MULTIPOLYGONES. NOTE : nous ne gardons que les intersections qui résultent en un LINESTRING ou MULTILINESTRING
car nous ne nous soucions pas des tracés qui partagent juste un point. Le dump est nécessaire pour étendre une collection
géométrique en parties individuelles MULT*. La méthode ci-dessous est assez générique et fonctionnera pour les polys, etc. en
changeant simplement la clause where.
select clipped.gid, clipped.f_name, clipped_geom
from (
select trails.gid, trails.f_name,
(ST_Dump(ST_Intersection(country.geom, trails.geom))).geom clipped_geom
from country
inner join trails on ST_Intersects(country.geom, trails.geom)
) as clipped
where ST_Dimension(clipped.clipped_geom) = 1;
Pour les polys, par exemple les repères polygonaux, vous pouvez également utiliser la méthode parfois plus rapide qui consiste à
mettre en mémoire tampon tout ce qui a une valeur de 0,0, à l’exception d’un polygone, afin d’obtenir une collection géométrique
vide. (Ainsi, une collection géométrique contenant des polygones, des lignes et des points mis en mémoire tampon par 0.0 ne
laisserait que les polygones et dissoudrait l’enveloppe de la collection).
select poly.gid,
ST_Multi(
ST_Buffer(
ST_Intersection(country.geom, poly.geom),
0.0
)
) clipped_geom
from country
inner join poly on ST_Intersects(country.geom, poly.geom)
where not ST_IsEmpty(ST_Buffer(ST_Intersection(country.geom, poly.geom), 0.0));
Exemples : 2.5Dish
Notez qu’il ne s’agit pas d’une véritable intersection, comparez avec le même exemple en utilisant ST_3DIntersection.
select ST_AsText(ST_Intersection(linestring, polygon)) As wkt
from ST_GeomFromText('LINESTRING Z (2 2 6,1.5 1.5 7,1 1 8,0.5 0.5 8,0 0 10)') AS ←-
linestring
CROSS JOIN ST_GeomFromText('POLYGON((0 0 8, 0 1 8, 1 1 8, 1 0 8, 0 0 8))') AS polygon;
st_astext
---------------------------------------
LINESTRING Z (1 1 8,0.5 0.5 8,0 0 10)
Manuel PostGIS 3.4.0dev 349 / 870
Voir aussi
7.13.4 ST_MemUnion
ST_MemUnion — Fonction d’agrégation qui fusionne les géométries d’une manière efficace sur le plan de la mémoire mais plus
lente
Synopsis
Description
Une fonction d’agrégation qui fusionne les géométries en entrée, en les fusionnant pour produire une géométrie de résultat sans
chevauchement. Le résultat peut être une géométrie unique, une MultiGéométrie ou une Collection de Géométries.
Note
Produit le même résultat que ST_Union, mais utilise moins de mémoire et plus de temps processeur. Cette fonction
d’agrégation fonctionne par l’union des géométries de manière incrémentale, contrairement à l’agrégation ST_Union
qui accumule d’abord un tableau et en unit ensuite le contenu à l’aide d’un algorithme rapide.
Cette fonction prend en charge la 3D et ne supprime pas l’indice z. Cependant, le résultat est calculé en utilisant uniquement
XY. Les valeurs Z résultantes sont copiées, moyennées ou interpolées.
Exemples
SELECT id,
ST_MemUnion(geom) as singlegeom
FROM sometable f
GROUP BY id;
Voir aussi
ST_Union
7.13.5 ST_Node
Synopsis
Description
Renvoie une (Multi)LineString représentant la version entièrement "nodée" d’une collection de lignes. Le "noding" préserve tous
les nœuds d’entrée et introduit le plus petit nombre possible de nouveaux nœuds. La ligne résultante est dissoute (les lignes en
double sont supprimées).
Il s’agit d’un bon moyen de créer des lignes entièrement "nodées" pouvant être utilisées dans ST_Polygonize.
ST_UnaryUnion peut également être utilisé pour créer des nœuds et dissoudre des lignes. Il est possible de spécifier une taille de
grille, ce qui permet d’obtenir des résultats plus simples et plus robustes. Voir aussi ST_Union pour une variante agrégée.
Exemples
"Noding" de deux lignes qui partagent une structure linéaire commune. Notez que la ligne de résultat est dissoute.
SELECT ST_AsText(
ST_Node('MULTILINESTRING ((2 5, 2 1, 7 1), (6 1, 4 1, 2 3, 2 5))'::geometry)
) As output;
output
-----------
MULTILINESTRING((2 5,2 3),(2 3,2 1,4 1),(4 1,2 3),(4 1,6 1),(6 1,7 1))
Voir aussi
ST_UnaryUnion, ST_Union
7.13.6 ST_Split
ST_Split — Renvoie une collection de géométries créées en divisant une géométrie par une autre géométrie.
Synopsis
Description
Cette fonction permet de diviser une ligne par un (Multi)Point, une (Multi)Ligne ou un (Multi)Polygone, ou un (Multi)Polygone
par une ligne. Lorsqu’un (Multi)Polygone est utilisé, ses composantes linéaires (la frontière) sont utilisées pour diviser l’entrée.
La géométrie résultante est toujours une collection.
Cette fonction est en quelque sorte l’inverse de ST_Union. L’application de ST_Union à la collection retournée devrait théorique-
ment donner la géométrie originale (bien qu’en raison de l’arrondi numérique, cela puisse ne pas être exactement le cas).
Note
Si l’entrée et la "lame" ne se croisent pas en raison de problèmes de précision numérique, l’entrée peut ne pas être
divisée comme prévu. Pour éviter cette situation, il peut être nécessaire d’accrocher d’abord l’entrée à la "lame", en
utilisant ST_Snap avec une petite tolérance.
Exemples
-- result --
GEOMETRYCOLLECTION(
POLYGON((150 90,149.039264020162 80.2454838991936,146.193976625564 ←-
70.8658283817455,..),
POLYGON(..))
)
Manuel PostGIS 3.4.0dev 352 / 870
Divise une MultiLineString en un point, où le point se trouve exactement sur les deux éléments de la LineString.
SELECT ST_AsText(ST_Split(
'MULTILINESTRING((10 10, 190 191), (15 15, 30 30, 100 90))',
ST_Point(30,30))) As split;
split
------
GEOMETRYCOLLECTION(
LINESTRING(10 10,30 30),
LINESTRING(30 30,190 190),
LINESTRING(15 15,30 30),
LINESTRING(30 30,100 90)
)
Diviser une ligne par un point, lorsque le point ne se trouve pas exactement sur la ligne. Montre l’utilisation de ST_Snap pour
accrocher la ligne au point afin de permettre son découpage.
WITH data AS (SELECT
'LINESTRING(0 0, 100 100)'::geometry AS line,
'POINT(51 50)':: geometry AS point
)
SELECT ST_AsText( ST_Split( ST_Snap(line, point, 1), point)) AS snapped_split,
ST_AsText( ST_Split(line, point)) AS not_snapped_not_split
FROM data;
snapped_split | ←-
not_snapped_not_split
---------------------------------------------------------------------+-------------------------------
Voir aussi
ST_Snap, ST_Union
Manuel PostGIS 3.4.0dev 353 / 870
7.13.7 ST_Subdivide
Synopsis
Description
Renvoie un ensemble de géométries résultant de la division de geom en parties à l’aide de lignes rectilignes, chaque partie ne
contenant pas plus de max_vertices.
max_vertices doit être égal ou supérieur à 5, car 5 points sont nécessaires pour représenter une boîte fermée. gridSize
peut être spécifié pour que la subdivision fonctionne dans un espace de précision fixe (nécessite GEOS-3.9.0+).
Les opérations "point dans polygone" et autres opérations spatiales sont normalement plus rapides pour les ensembles de données
subdivisés et indexés. Étant donné que les boîtes de délimitation des parties couvrent généralement une zone plus petite que la
boîte b de la géométrie d’origine, les requêtes d’index produisent moins de cas "hit". Les cas "hit" sont plus rapides car les
opérations spatiales exécutées par la revérification de l’index traitent moins de points.
Note
Il s’agit d’une fonction de retour d’ensemble (SRF) qui renvoie un ensemble de lignes contenant des valeurs de
géométrie uniques. Elle peut être utilisée dans une liste SELECT ou une clause FROM pour produire un ensem-
ble de résultats avec un enregistrement pour chaque géométrie de résultat.
Exemples
Exemple: Subdivisez un polygone en parties ne comportant pas plus de 10 sommets et attribuez à chaque partie un identifiant
unique.
rn │ wkt
────┼───────%
1 │ POLYGON((119 23,85 35,68 29,66 28,32 56,22 64,29.8260869565217 100,119 100,119 ←-
23))
2 │ POLYGON((132 10,119 23,119 56,186 56,186 52,178 34,168 18,147 13,132 10))
3 │ POLYGON((119 56,119 100,190 100,185 79,186 56,119 56))
4 │ POLYGON((29.8260869565217 100,32 110,40 119,36 150,57 158,75 171,92 182,114 ←-
184,114 100,29.8260869565217 100))
5 │ POLYGON((114 184,132 186,146 178,176 184,179 162,184 141,190 122,190 100,114 ←-
100,114 184))
Exemple: Densifier une longue ligne de type geography en utilisant ST_Segmentize(geography, distance), et utiliser ST_Subdivide
pour diviser la ligne résultante en sous-lignes de 8 sommets.
Exemple: Subdiviser les géométries complexes d’une table existante. Les enregistrements de la géométrie d’origine sont sup-
primés de la table source et de nouveaux enregistrements sont insérés pour chaque géométrie de résultat subdivisée.
WITH complex_areas_to_subdivide AS (
DELETE from polygons_table
WHERE ST_NPoints(geom)
> 255
RETURNING id, column1, column2, column3, geom
)
INSERT INTO polygons_table (fid, column1, column2, column3, geom)
SELECT fid, column1, column2, column3,
ST_Subdivide(geom, 255) as geom
FROM complex_areas_to_subdivide;
Exemple: Créer une nouvelle table contenant les géométries subdivisées, en conservant la clé de la géométrie d’origine afin
que la nouvelle table puisse être jointe à la table source. Étant donné que ST_Subdivide est une fonction (tableau) qui renvoie
un ensemble de lignes à valeur unique, cette syntaxe produit automatiquement un tableau avec une ligne pour chaque partie du
résultat.
CREATE TABLE subdivided_geoms AS
SELECT pkey, ST_Subdivide(geom) AS geom
FROM original_geoms;
Voir aussi
7.13.8 ST_SymDifference
ST_SymDifference — Calcule une géométrie représentant les parties des géométries A et B qui ne s’intersectent pas.
Synopsis
Description
Renvoie une géométrie représentant les parties des géométries A et B qui ne s’intersectent pas. Ceci est équivalent à ST_Union(A,B)
- ST_Intersection(A,B). On parle de différence symétrique car ST_SymDifférence(A,B) = ST_SymDifférence(B,
Si l’argument optionnel gridSize est fourni, les entrées sont placées sur une grille de la taille donnée, et les sommets du
résultat sont calculés sur cette même grille. (Nécessite GEOS-3.9.0 ou plus)
Effectué par le module GEOS
Enhanced: 3.1.0 accept a gridSize parameter.
Requires GEOS >= 3.9.0 to use the gridSize parameter
Cette méthode implémente la spécification OGC Simple Features Implementation Specification for SQL 1.1. s2.1.1.3
Cette fonction prend en charge la 3D et ne supprime pas l’indice z. Cependant, le résultat est calculé en utilisant uniquement
XY. Les valeurs Z résultantes sont copiées, moyennées ou interpolées.
Exemples
Manuel PostGIS 3.4.0dev 356 / 870
Les lignes originales présentées ensemble La différence symétrique des deux lignes
st_astext
---------
MULTILINESTRING((50 150,50 200),(50 50,50 100))
st_astext
------------
MULTILINESTRING((1 3 2.75,1 4 2),(1 1 3,1 2 2.25))
Voir aussi
7.13.9 ST_UnaryUnion
Synopsis
Description
Variante à entrée unique de ST_Union. L’entrée peut être une géométrie unique, une MultiGeometry ou une GeometryCollection.
L’union est appliquée aux éléments individuels de l’entrée.
Cette fonction peut être utilisée pour corriger les MultiPolygones qui ne sont pas valides en raison du chevauchement de leurs
composants. Toutefois, les composants d’entrée doivent tous être valides. Un composant d’entrée non valide, tel qu’un polygone
en nœud papillon, peut provoquer une erreur. Pour cette raison, il peut être préférable d’utiliser ST_MakeValid.
Une autre utilisation de cette fonction est de nouer et de dissoudre une collection de lignes qui se croisent ou se chevauchent pour
les rendre simple. (ST_Node fait également cela, mais ne fournit pas l’option gridSize).
Il est possible de combiner ST_UnaryUnion avec ST_Collect pour affiner le nombre de géométries à unir en une seule fois. Cela
permet de faire un compromis entre l’utilisation de la mémoire et le temps de calcul, en trouvant un équilibre entre ST_Union et
ST_MemUnion.
Si l’argument optionnel gridSize est fourni, les entrées sont placées sur une grille de la taille donnée, et les sommets du
résultat sont calculés sur cette même grille. (Nécessite GEOS-3.9.0 ou plus)
Cette fonction prend en charge la 3D et ne supprime pas l’indice z. Cependant, le résultat est calculé en utilisant uniquement
XY. Les valeurs Z résultantes sont copiées, moyennées ou interpolées.
Enhanced: 3.1.0 accept a gridSize parameter.
Requires GEOS >= 3.9.0 to use the gridSize parameter
Disponibilité : 2.0.0
Voir aussi
7.13.10 ST_Union
ST_Union — Calcule une géométrie représentant l’union des ensembles de points des géométries d’entrée.
Synopsis
Description
Unifie les géométries d’entrée, fusionne les géométries pour produire une géométrie de résultat sans chevauchement. Le résultat
peut être une géométrie atomique, une MultiGeometry ou une Geometry Collection. Il existe plusieurs variantes :
Variante à deux entrées: renvoie une géométrie qui est l’union de deux géométries d’entrée. Si l’une des entrées est NULL,
NULL est renvoyé.
Variante tableau: renvoie une géométrie qui est l’union d’un tableau de géométries.
Variante agrégée: renvoie une géométrie qui est l’union d’un ensemble de géométries. La fonction ST_Union() est une fonction
"agrégée" dans la terminologie de PostgreSQL. Cela signifie qu’elle opère sur des lignes de données, de la même manière que
les fonctions SUM() et AVG() et, comme la plupart des agrégats, elle ignore les géométries NULL.
Voir ST_UnaryUnion pour une variante non agrégée, à entrée unique.
Manuel PostGIS 3.4.0dev 358 / 870
Le tableau ST_Union et ses variantes utilisent l’algorithme rapide d’union en cascade décrit dans http://blog.cleverelephant.ca/-
2009/01/must-faster-unions-in-postgis-14.html.
Un gridSize peut être spécifiée pour travailler dans un espace de précision fixe. Les entrées sont placées sur une grille de la
taille donnée, et les sommets du résultat sont calculés sur cette même grille. (Nécessite GEOS-3.9.0 ou plus)
Note
ST_Collect peut parfois être utilisé à la place de ST_Union, si le résultat n’a pas besoin d’être non chevauchant.
ST_Collect est généralement plus rapide que ST_Union car il n’effectue aucun traitement sur les géométries collec-
tées.
Cette méthode implémente la spécification OGC Simple Features Implementation Specification for SQL 1.1. s2.1.1.3
Note
La version agrégée n’est pas explicitement définie dans l’OGC SPEC.
Cette méthode implémente la spécification SQL/MM. SQL-MM 3 : 5.1.19 l’indice z (élévation) lorsque des polygones sont
impliqués.
Cette fonction prend en charge la 3D et ne supprime pas l’indice z. Cependant, le résultat est calculé en utilisant uniquement
XY. Les valeurs Z résultantes sont copiées, moyennées ou interpolées.
Exemples
Exemple d’agrégat
SELECT id,
ST_Union(geom) as singlegeom
FROM sometable f
GROUP BY id;
st_astext
----------
MULTIPOINT(-2 3,1 2)
st_astext
----------
POINT(1 2)
Exemple 3D - en quelque sorte des supports 3D (et avec des dimensions mixtes !)
select ST_AsEWKT(ST_Union(geom))
from (
select 'POLYGON((-7 4.2,-7.1 4.2,-7.1 4.3, -7 4.2))'::geometry geom
union all
select 'POINT(5 5 5)'::geometry geom
union all
select 'POINT(-2 3 1)'::geometry geom
union all
select 'LINESTRING(5 5 5, 10 10 10)'::geometry geom
) as foo;
st_asewkt
---------
GEOMETRYCOLLECTION(POINT(-2 3 1),LINESTRING(5 5 5,10 10 10),POLYGON((-7 4.2 5,-7.1 4.2 ←-
5,-7.1 4.3 5,-7 4.2 5)));
st_asewkt
---------
GEOMETRYCOLLECTION(POINT(-2 3 1),LINESTRING(5 5 5,10 10 10),POLYGON((-7 4.2 2,-7.1 4.2 ←-
3,-7.1 4.3 2,-7 4.2 2)))
--wktunion---
MULTILINESTRING((3 4,4 5),(1 2,3 4))
Voir aussi
7.14.1 ST_Buffer
ST_Buffer — Calcule une géométrie couvrant tous les points situés à une distance donnée d’une géométrie.
Synopsis
Description
Calcule un POLYGONE ou un MULTIPOLYGONE représentant tous les points dont la distance par rapport à une geometry/-
geography est inférieure ou égale à une distance donnée. Une distance négative rétrécit la géométrie au lieu de l’étendre. Une
distance négative peut réduire complètement un polygone, auquel cas POLYGON EMPTY est renvoyé. Pour les points et les
lignes, les distances négatives renvoient toujours des résultats vides.
Pour les types geometry, la distance est spécifiée dans les unités du système de référence spatiale de la géométrie. Pour les types
geography, la distance est spécifiée en mètres.
Le troisième paramètre facultatif contrôle la précision et le style du tampon. La précision des arcs de cercle dans le tampon est
spécifiée en tant que nombre de segments de ligne utilisés pour approximer un quart de cercle (la valeur par défaut est de 8). Le
style du tampon peut être spécifié en fournissant une liste de paires clé=valeur séparées par des blancs, comme suit :
• ’quad_segs=#’ : nombre de segments de ligne utilisés pour approximer un quart de cercle (8 par défaut).
• ’endcap=round|flat|square’ : style d’endcap (la valeur par défaut est "round"). ’butt’ est accepté comme synonyme de ’flat’.
• ’join=round|mitre|bevel’ : style de jointure (la valeur par défaut est "round"). ’miter’ est accepté comme synonyme de ’mitre’.
• ’mitre_limit=#.#’ : limite du rapport d’angle (n’affecte que le style d’assemblage en angle). ’miter_limit’ est accepté comme
synonyme de ’mitre_limit’.
• side=both|left|right’ : ’left’ ou ’right’ effectue une mise en mémoire tampon unilatérale sur la géométrie, le côté mis en mémoire
tampon étant relatif à la direction de la ligne. Ceci ne s’applique qu’à la géométrie LINESTRING et n’affecte pas les géométries
POINT ou POLYGONE. Par défaut, les embouts sont carrés.
Note
For geography this is a thin wrapper around the geometry implementation. Il détermine un système de référence
spatiale planaire qui correspond le mieux à la boîte de délimitation de l’objet géographique (en essayant UTM, le pôle
Nord/Sud de Lambert Azimuthal Equal Area (LAEA), et enfin Mercator). Le tampon est calculé dans l’espace planaire,
puis retransformé en WGS84. Cela peut ne pas produire le comportement souhaité si l’objet d’entrée est beaucoup
plus grand qu’une zone UTM ou s’il traverse la ligne de changement de date
Note
La sortie du tampon est toujours une géométrie polygonale valide. La mémoire tampon peut gérer des entrées non
valides, de sorte que la mise en mémoire tampon par la distance 0 est parfois utilisée comme moyen de réparer les
polygones non valides. ST_MakeValid peut également être utilisé à cette fin.
Manuel PostGIS 3.4.0dev 361 / 870
Note
La mise en mémoire tampon est parfois utilisée pour effectuer une recherche à l’intérieur de la distance. Dans ce cas,
il est plus efficace d’utiliser ST_DWithin.
Note
Cette fonction ignore la dimension Z. Elle donne toujours un résultat en 2D, même lorsqu’elle est utilisée sur une
géométrie en 3D.
Amélioration : 2.5.0 - La prise en charge de la géométrie ST_Buffer a été améliorée pour permettre la spécification de la mise en
mémoire tampon latérale side=both|left|right.
Disponibilité : 1.5 - ST_Buffer a été amélioré pour prendre en charge différents types de terminaisons et de jointures. Ceux-ci
sont utiles, par exemple, pour convertir les lignes de route en routes polygonales avec des bords plats ou carrés au lieu de bords
arrondis. Un petit wrapper pour la geography a été ajouté.
Effectué par le module GEOS.
Cette méthode implémente la spécification OGC Simple Features Implementation Specification for SQL 1.1. s2.1.1.3
Exemples
side=left side=right
SELECT ST_Buffer( SELECT ST_Buffer(
ST_GeomFromText( ST_GeomFromText(
'LINESTRING(50 50,150 150,150 50)' 'LINESTRING(50 50,150 150,150 50)'
), 10, 'side=left'); ), 10, 'side=right');
enroulement à droite, limite du polygone side=left enroulement à droite, limite du polygone side=right
SELECT ST_Buffer( SELECT ST_Buffer(
ST_ForceRHR( ST_ForceRHR(
ST_Boundary( ST_Boundary(
ST_GeomFromText( ST_GeomFromText(
'POLYGON ((50 50, 50 150, 150 150, 150 ←- 'POLYGON ((50 50, 50 150, 150 150, 150 ←-
50, 50 50))'))), 50, 50 50))'))
), 20, 'side=left'); ), 20,'side=right')
promisingcircle_pcount | lamecircle_pcount
------------------------+-------------------
33 | 9
Voir aussi
7.14.2 ST_BuildArea
ST_BuildArea — Crée une géométrie polygonale formée par le tracé d’une géométrie.
Synopsis
Description
Creates an areal geometry formed by the constituent linework of the input geometry. The input can be a LineString, Multi-
LineString, Polygon, MultiPolygon or a GeometryCollection. The result is a Polygon or MultiPolygon, depending on input. If
the input linework does not form polygons, NULL is returned.
Unlike ST_MakePolygon, this function accepts rings formed by multiple lines, and can form any number of polygons.
This function converts inner rings into holes. To turn inner rings into polygons as well, use ST_Polygonize.
Note
Input linework must be correctly noded for this function to work properly. ST_Node can be used to node lines.
If the input linework crosses, this function will produce invalid polygons. ST_MakeValid can be used to ensure the
output is valid.
Disponibilité : 1.1.0
Exemples
Manuel PostGIS 3.4.0dev 365 / 870
------------------------------------------------------------------------------------------
POLYGON((180 40,30 20,20 90,80 120,80 190,160 160,180 40),(150 80,120 130,80 60,150 80))
SELECT ST_BuildArea(ST_Collect(inring,outring))
FROM (SELECT
Manuel PostGIS 3.4.0dev 366 / 870
Voir aussi
7.14.3 ST_Centroid
Synopsis
Description
Calcule un point qui est le centre de masse géométrique d’une géométrie. Pour [MULTI]POINTs, le centroïde est la moyenne
arithmétique des coordonnées entrées. Pour les [MULTI]LINESTRINGs, le centroïde est calculé en utilisant la longueur
pondérée de chaque segment de ligne. Pour les [MULTI]POLYGONs, le centroïde est calculé en termes de surface. Si une
géométrie vide est fournie, une GEOMETRYCOLLECTION vide est renvoyée. Si NULL est fourni, NULL est renvoyé. Si
CIRCULARSTRING ou COMPOUNDCURVE sont fournis, ils sont convertis en linestring avec CurveToLine d’abord, puis de
la même manière que pour LINESTRING.
Pour les entrées de dimensions mixtes, le résultat est égal au centroïde de la composante Géométries de la dimension la plus
élevée (puisque les géométries de dimension inférieure n’apportent aucun "poids" au centroïde).
Notez que pour les géométries polygonales, le centroïde n’est pas nécessairement situé à l’intérieur du polygone. Par exemple,
voir le diagramme ci-dessous du centroïde d’un polygone en forme de C. Pour construire un point garanti à l’intérieur d’un
polygone, utilisez ST_PointOnSurface.
Nouveau dans la version 2.3.0 : prend en charge CIRCULARSTRING et COMPOUNDCURVE (en utilisant CurveToLine)
Disponibilité : la prise en charge du type geography a été introduite dans la version 2.4.0.
Cette méthode implémente la spécification OGC Simple Features Implementation Specification for SQL 1.1.
Exemples
Dans les illustrations suivantes, le point rouge est le centroïde de la géométrie de la source.
Manuel PostGIS 3.4.0dev 367 / 870
SELECT ST_AsText(ST_Centroid('MULTIPOINT ( -1 0, -1 2, -1 3, -1 4, -1 7, 0 1, 0 3, 1 1, 2 ←-
0, 6 0, 7 8, 9 8, 10 6 )'));
st_astext
------------------------------------------
POINT(2.30769230769231 3.30769230769231)
(1 row)
SELECT ST_AsText(ST_centroid(g))
FROM ST_GeomFromText('CIRCULARSTRING(0 2, -1 1,0 0, 0.5 0, 1 0, 2 1, 1 2, 0.5 2, 0 2)') ←-
AS g ;
------------------------------------------
POINT(0.5 1)
SELECT ST_AsText(ST_centroid(g))
Manuel PostGIS 3.4.0dev 368 / 870
Voir aussi
ST_PointOnSurface, ST_GeometricMedian
7.14.4 ST_ChaikinSmoothing
ST_ChaikinSmoothing — Renvoie une version lissée d’une géométrie, en utilisant l’algorithme Chaikin
Synopsis
Description
Lisse une géométrie linéaire ou polygonale en utilisant Chaikin’s algorithm. Le degré de lissage est contrôlé par le paramètre
nIterations. À chaque itération, chaque sommet intérieur est remplacé par deux sommets situés à 1/4 de la longueur des
segments de ligne précédant et suivant le sommet. Un degré raisonnable de lissage est fourni par 3 itérations ; le maximum est
limité à 5.
Si preserveEndPoints est égal à true, les extrémités des anneaux de polygone ne sont pas lissées. Les extrémités des lignes
sont toujours préservées.
Note
Le nombre de sommets double à chaque itération, de sorte que la géométrie résultante peut comporter beaucoup plus
de points que la géométrie d’entrée. Pour réduire le nombre de points, utilisez une fonction de simplification sur le
résultat (voir ST_Simplify, ST_SimplifyPreserveTopology et ST_SimplifyVW).
Le résultat comporte des valeurs interpolées pour les dimensions Z et M lorsqu’elles sont présentes.
Exemples
smoothed
────────────%
POLYGON((2 2,6 6,6 10,2 14,0 12,0 4,2 2))
SELECT ST_ChaikinSmoothing(
'POLYGON ((20 20, 60 90, 10 150, 100 190, 190 160, 130 120, 190 50, 140 70, 120 ←-
10, 90 60, 20 20))',
generate_series(1, 3) );
SELECT ST_ChaikinSmoothing(
'LINESTRING (10 140, 80 130, 100 190, 190 150, 140 20, 120 120, 50 30, 30 100) ←-
',
generate_series(1, 3) );
Voir aussi
7.14.5 ST_ConcaveHull
ST_ConcaveHull — Calcule une géométrie éventuellement concave qui contient tous les sommets de la géométrie d’entrée
Manuel PostGIS 3.4.0dev 370 / 870
Synopsis
Description
Une enveloppe concave est une géométrie (généralement) concave qui contient l’entrée et dont les sommets sont un sous-
ensemble des sommets de l’entrée. Dans le cas général, l’enveloppe concave est un polygone. L’enveloppe concave de deux
ou plusieurs points colinéaires est une ligne à deux points. L’enveloppe concave d’un ou plusieurs points identiques est un Point.
Le polygone ne contiendra pas de trous à moins que l’argument facultatif param_allow_holes ne soit spécifié comme vrai.
On peut considérer qu’une enveloppe concave "rétrécit" un ensemble de points. Cela diffère de la convex hull, qui revient à
enrouler un élastique autour des points. Une enveloppe concave a généralement une surface plus petite et représente une limite
plus naturelle pour les points d’entrée.
La param_pctconvex contrôle la concavité de l’enveloppe calculée. Une valeur de 1 produit une enveloppe convexe. Les
valeurs comprises entre 1 et 0 produisent des enveloppes de concavité croissante. Une valeur de 0 produit une enveloppe avec
une concavité maximale (mais toujours un polygone unique). Le choix d’une valeur appropriée dépend de la nature des données
d’entrée, mais des valeurs comprises entre 0,3 et 0,1 produisent souvent des résultats raisonnables.
Note
Techniquement, la param_pctconvex détermine une longueur comme une fraction de la différence entre les arêtes
les plus longues et les plus courtes dans la triangulation de Delaunay des points d’entrée. Les arêtes plus longues que
cette longueur sont "érodées" de la triangulation. Les triangles restants forment l’enveloppe concave.
Pour les entrées ponctuelles et linéaires, l’enveloppe englobe tous les points de l’entrée. Pour les entrées polygonales, l’enveloppe
englobera tous les points de l’entrée et aussi toutes les zones couvertes par l’entrée. Si vous souhaitez obtenir une enveloppe
ponctuelle d’une entrée polygonale, convertissez-la d’abord en points à l’aide de ST_Points.
Il ne s’agit pas d’une fonction d’agrégation. Pour calculer l’enveloppe concave d’un ensemble de géométries, utilisez ST_Collect
(par exemple ST_ConcaveHull( ST_Collect( geom ), 0.80).
Disponibilité : 2.0.0
Amélioré : 3.3.0, implémentation native de GEOS activée pour GEOS 3.11+
Exemples
(174 20), (163 20), (150 20), (143 36), (139 49), (132 64), (99 151), (92 138), ←-
(88 124), (81 109), (74 93), (70 82), (83 82), (99 82), (112 82), (126 82), (121 ←-
96), (114 109), (110 122), (103 138), (99 151), (34 27), (43 31), (48 44), (46 ←-
58), (52 73), (63 73), (61 84), (72 71), (90 69), (101 76), (123 71), (141 62), ←-
(166 27), (150 33), (159 36), (146 44), (154 53), (152 62), (146 73), (134 76), ←-
(143 82), (141 91), (130 98), (126 104), (132 113), (128 127), (117 122), (112 ←-
133), (119 144), (108 147), (119 153), (110 171), (103 164), (92 171), (86 160), ←-
(88 142), (79 140), (72 124), (83 131), (79 118), (68 113), (63 102), (68 93), ←-
(35 45))',
0.15, true ) );
---st_astext--
POLYGON ((43 69, 50 84, 57 100, 63 118, 68 133, 74 149, 81 164, 88 180, 101 180, 112 180, ←-
119 164, 126 149, 132 131, 139 113, 143 100, 150 84, 157 69, 163 51, 168 36, 174 20, 163 ←-
20, 150 20, 143 36, 139 49, 132 64, 114 64, 99 64, 81 64, 63 64, 57 49, 52 36, 46 20, ←-
37 20, 26 20, 32 36, 35 45, 39 55, 43 69), (88 124, 81 109, 74 93, 83 82, 99 82, 112 82, ←-
121 96, 114 109, 110 122, 103 138, 92 138, 88 124))
polygon_hull points_hull
Comparaison entre l’enveloppe concave d’un polygone et l’enveloppe concave des points qui le composent. L’enveloppe respecte
les limites du polygone, ce qui n’est pas le cas de l’enveloppe basée sur les points.
WITH data(geom) AS (VALUES
('POLYGON ((10 90, 39 85, 61 79, 50 90, 80 80, 95 55, 25 60, 90 45, 70 16, 63 38, 60 10, ←-
50 30, 43 27, 30 10, 20 20, 10 90))'::geometry)
)
SELECT ST_ConcaveHull( geom, 0.1) AS polygon_hull,
ST_ConcaveHull( ST_Points(geom), 0.1) AS points_hull
FROM data;
Utilisation avec ST_Collect pour calculer l’enveloppe concave d’un ensemble géométrique.
-- Compute estimate of infected area based on point observations
SELECT disease_type,
ST_ConcaveHull( ST_Collect(obs_pnt), 0.3 ) AS geom
FROM disease_obs
GROUP BY disease_type;
Manuel PostGIS 3.4.0dev 373 / 870
Voir aussi
7.14.6 ST_ConvexHull
Synopsis
Description
Calcule l’enveloppe convexe d’une géométrie. L’enveloppe convexe est la plus petite géométrie convexe qui englobe toutes les
géométries de l’entrée.
On peut considérer l’enveloppe convexe comme la géométrie obtenue en enroulant un élastique autour d’un ensemble de
géométries. Ceci est différent d’une concave hull qui est analogue à un "rétrécissement" des géométries. Une enveloppe convexe
est souvent utilisée pour déterminer une zone affectée sur la base d’un ensemble d’observations ponctuelles.
Dans le cas général, l’enveloppe convexe est un polygone. L’enveloppe convexe de deux ou plusieurs points colinéaires est une
LineString à deux points. L’enveloppe convexe d’un ou plusieurs points identiques est un Point.
Il ne s’agit pas d’une fonction d’agrégation. Pour calculer l’enveloppe convexe d’un ensemble de géométries, utilisez ST_Collect
pour les agréger dans une collection de géométries (par exemple ST_ConvexHull(ST_Collect(geom)).
Effectué par le module GEOS
Cette méthode implémente la spécification OGC Simple Features Implementation Specification for SQL 1.1. s2.1.1.3
Exemples
SELECT ST_AsText(ST_ConvexHull(
ST_Collect(
ST_GeomFromText('MULTILINESTRING((100 190,10 8),(150 10, 20 30))'),
ST_GeomFromText('MULTIPOINT(50 5, 150 30, 50 10, 10 10)')
)) );
---st_astext--
POLYGON((50 5,10 8,10 10,100 190,150 30,150 10,50 5))
Utilisation avec ST_Collect pour calculer les enveloppes convexes des ensembles géométriques.
--Get estimate of infected area based on point observations
SELECT d.disease_type,
ST_ConvexHull(ST_Collect(d.geom)) As geom
FROM disease_obs As d
GROUP BY d.disease_type;
Voir aussi
7.14.7 ST_DelaunayTriangles
Synopsis
Description
Calcule la Delaunay triangulation des sommets de la géométrie d’entrée. La tolerance optionnelle peut être utilisée pour
regrouper les sommets proches, ce qui améliore la robustesse dans certaines situations. La géométrie résultante est délimitée par
l’enveloppe convexe des sommets de la géométrie d’entrée. La représentation de la géométrie résultante est déterminée par le
code flags :
Cette fonction prend en charge les triangles et les réseaux irréguliers triangulés (TIN).
Manuel PostGIS 3.4.0dev 375 / 870
Exemples
Polygones d’origine
our original geometry
ST_Union(ST_GeomFromText('POLYGON((175 150, 20 40,
50 60, 125 100, 175 150))'),
ST_Buffer(ST_GeomFromText('POINT(110 170)'), 20)
)
Manuel PostGIS 3.4.0dev 376 / 870
ST_DelaunayTriangles de 2 polygones : polygones de triangle delaunay, chaque triangle est thématisé dans une couleur
différente
geometries overlaid multilinestring triangles
SELECT
ST_DelaunayTriangles(
ST_Union(ST_GeomFromText('POLYGON((175 150, 20 40,
50 60, 125 100, 175 150))'),
ST_Buffer(ST_GeomFromText('POINT(110 170)'), 20)
))
As dtriag;
Manuel PostGIS 3.4.0dev 377 / 870
SELECT (ST_DumpPoints(ST_GeomFromText(
'MULTIPOINT(14 14,34 14,54 14,74 14,94 14,114 14,134 14,
150 14,154 14,154 6,134 6,114 6,94 6,74 6,54 6,34 6,
14 6,10 6,8 6,7 7,6 8,6 10,6 30,6 50,6 70,6 90,6 110,6 130,
6 150,6 170,6 190,6 194,14 194,14 174,14 154,14 134,14 114,
14 94,14 74,14 54,14 34,14 14)'))).geom
INTO TABLE l_shape;
wkt
SELECT ST_AsText(ST_DelaunayTriangles(ST_GeomFromText(
'MULTIPOINT Z(14 14 10, 150 14 100,34 6 25, 20 10 150)'))) As wkt;
wkt
Voir aussi
7.14.8 ST_FilterByM
Synopsis
geometry ST_FilterByM(geometry geom, double precision min, double precision max = null, boolean returnM = false);
Description
Filtre les points de sommet en fonction de leur valeur M. Renvoie une géométrie contenant uniquement les points de sommet dont
la valeur M est supérieure ou égale à la valeur min et inférieure ou égale à la valeur max. Si l’argument max-value est omis, seule
la valeur min est prise en compte. Si le quatrième argument est omis, la valeur m ne figurera pas dans la géométrie résultante. Si
la géométrie résultante a trop peu de points de vertex pour son type de géométrie, une géométrie vide sera renvoyée. Dans une
collection de géométries, les géométries qui n’ont pas assez de points seront simplement éliminées silencieusement.
Cette fonction est principalement destinée à être utilisée en conjonction avec ST_SetEffectiveArea. ST_EffectiveArea définit
la surface effective d’un sommet dans sa valeur m. Avec ST_FilterByM, il est possible d’obtenir une version simplifiée de la
géométrie sans aucun calcul, simplement en filtrant
Note
Il existe une différence entre ST_SimplifyVW et ST_FilterByM en ce qui concerne la géométrie renvoyée lorsque le
nombre de points répondant aux critères n’est pas suffisant. ST_SimplifyVW renvoie la géométrie avec suffisamment
de points alors que ST_FilterByM renvoie une géométrie vide
Note
Notez que la géométrie renvoyée peut être invalide
Note
Cette fonction renvoie toutes les dimensions, y compris les valeurs Z et M
Disponibilité : 2.5.0
Exemples
result
simplified
----------------------------
LINESTRING(5 2,7 25,10 10)
Manuel PostGIS 3.4.0dev 380 / 870
Voir aussi
ST_SetEffectiveArea, ST_SimplifyVW
7.14.9 ST_GeneratePoints
Synopsis
Description
ST_GeneratePoints génère un nombre donné de points pseudo-aléatoires situés dans la zone d’entrée. Le paramètre facultatif
seed est utilisé pour régénérer une séquence déterministe de points et doit être supérieur à zéro.
Disponibilité : 2.3.0
Amélioration : 3.0.0, ajout du paramètre seed
Exemples
Génération de 12 points superposés au polygone original à l’aide d’une valeur du paramètre seed aléatoire 1996
7.14.10 ST_GeometricMedian
Synopsis
geometry ST_GeometricMedian ( geometry geom, float8 tolerance = NULL, int max_iter = 10000, boolean fail_if_not_converged
= false);
Description
Calcule la médiane géométrique approximative d’une géométrie MultiPoint à l’aide de l’algorithme de Weiszfeld. La médiane
géométrique est le point qui minimise la somme des distances aux points d’entrée. Elle fournit une mesure de centralité moins
sensible aux points aberrants que le centroïde (centre de masse).
L’algorithme itère jusqu’à ce que la variation de la distance entre les itérations successives soit inférieure au paramètre tolerance
fourni. Si cette condition n’est pas remplie après max_iterations itérations, la fonction produit une erreur et se termine, à
moins que fail_fif_not_converged ne soit fixé à false (par défaut).
Si l’argument tolerance n’est pas fourni, la valeur de la tolérance est calculée sur la base de l’étendue de la géométrie d’entrée.
Si elle est présente, les valeurs M des points d’entrée sont interprétées comme leurs poids relatifs.
Disponibilité : 2.3.0
Amélioré : 2.5.0 Ajout de la prise en charge de M comme poids des points.
Exemples
centroid | median
--------------------+----------------------------------------
POINT(62.5 62.5) | POINT(25.01778421249728 25.01778421249728)
(1 row)
Manuel PostGIS 3.4.0dev 382 / 870
Voir aussi
ST_Centroid
7.14.11 ST_LineMerge
Synopsis
Description
Renvoie une LineString ou une MultiLineString formée par l’assemblage des éléments de ligne d’une MultiLineString. Les
lignes sont jointes à leurs extrémités aux intersections à 2 voies. Les lignes ne sont pas jointes aux intersections à 3 voies ou plus.
Si directed est TRUE, ST_LineMerge ne modifiera pas l’ordre des points dans les LineStrings, de sorte que les lignes ayant des
directions opposées ne seront pas fusionnées
Note
A n’utiliser qu’avec les MultiLineString/LineStrings. Les autres types de géométrie renvoient une GeometryCollection
vide
Warning
Cette fonction supprime la dimension M.
Manuel PostGIS 3.4.0dev 383 / 870
Exemples
SELECT ST_AsText(ST_LineMerge(
'MULTILINESTRING((10 160, 60 120), (120 140, 60 120), (120 140, 180 120))'
));
--------------------------------------------
LINESTRING(10 160,60 120,120 140,180 120)
SELECT ST_AsText(ST_LineMerge(
'MULTILINESTRING((10 160, 60 120), (120 140, 60 120), (120 140, 180 120), (100 180, 120 ←-
140))'
));
--------------------------------------------
MULTILINESTRING((10 160,60 120,120 140),(100 180,120 140),(120 140,180 120))
Si la fusion n’est pas possible en raison de lignes qui ne se touchent pas, la MultiLineString d’origine est renvoyée.
Manuel PostGIS 3.4.0dev 384 / 870
SELECT ST_AsText(ST_LineMerge(
'MULTILINESTRING((-29 -27,-30 -29.7,-36 -31,-45 -33),(-45.2 -33.2,-46 -32))'
));
----------------
MULTILINESTRING((-45.2 -33.2,-46 -32),(-29 -27,-30 -29.7,-36 -31,-45 -33))
SELECT ST_AsText(ST_LineMerge(
'MULTILINESTRING((60 30, 10 70), (120 50, 60 30), (120 50, 180 30))',
TRUE));
-------------------------------------------------------
MULTILINESTRING((120 50,60 30,10 70),(120 50,180 30))
LINESTRING Z (-30 -29.7 5,-29 -27 11,-30 -29.7 10,-36 -31 5,-45 -33 1,-46 -32 11)
Voir aussi
ST_Segmentize, ST_LineSubstring
7.14.12 ST_MaximumInscribedCircle
Synopsis
Description
Trouve le plus grand cercle contenu dans un (multi)polygone, ou qui ne chevauche aucune ligne ni aucun point. Renvoie un
enregistrement avec des champs :
Pour les entrées polygonales, le cercle est inscrit dans les anneaux de délimitation, en utilisant les anneaux internes comme
limites. Pour les entrées linéaires et ponctuelles, le cercle est inscrit dans l’enveloppe convexe de l’entrée, en utilisant les lignes
et les points de l’entrée comme autres limites.
Availability: 3.1.0.
Requires GEOS >= 3.9.0.
Exemples
Cercle inscrit maximal d’un polygone. Le centre, le point le plus proche et le rayon sont renvoyés.
Cercle inscrit maximal d’une multiligne. Le centre, le point le plus proche et le rayon sont renvoyés.
Voir aussi
ST_MinimumBoundingRadius, ST_LargestEmptyCircle
7.14.13 ST_LargestEmptyCircle
Synopsis
(geometry, geometry, double precision) ST_LargestEmptyCircle(geometry geom, double precision tolerance=0.0, geometry
boundary=POINT EMPTY);
Description
Trouve le plus grand cercle qui ne chevauche pas un ensemble d’obstacles de points et de lignes. (Les géométries polygonales
peuvent être incluses en tant qu’obstacles, mais seules leurs lignes de démarcation sont utilisées). Le centre du cercle est contraint
de se situer à l’intérieur d’une limite polygonale, qui par défaut est l’enveloppe convexe de la géométrie d’entrée. Le centre du
cercle est le point à l’intérieur de la frontière qui est le plus éloigné des obstacles. Le cercle lui-même est fourni par le point
central et un point le plus proche situé sur un obstacle déterminant le rayon du cercle.
Le centre du cercle est déterminé avec une précision donnée, spécifiée par une tolérance de distance, à l’aide d’un algorithme
itératif. Si la distance de précision n’est pas spécifiée, une valeur par défaut raisonnable est utilisée.
Renvoie un enregistrement avec des champs :
Pour trouver le plus grand cercle vide à l’intérieur d’un polygone, voir ST_MaximumInscribedCircle.
Availability: 3.4.0.
Requires GEOS >= 3.9.0.
Manuel PostGIS 3.4.0dev 387 / 870
Exemples
SELECT radius,
ST_AsText(center) AS center,
ST_AsText(nearest) AS nearest
FROM ST_LargestEmptyCircle(
'MULTILINESTRING (
(10 100, 60 180, 130 150, 190 160),
(20 50, 70 70, 90 20, 110 40),
(160 30, 100 100, 180 100))');
SELECT radius,
ST_AsText(center) AS center,
ST_AsText(nearest) AS nearest
FROM ST_LargestEmptyCircle(
St_Collect(
'MULTIPOINT ((70 50), (60 130), (130 150), (80 90))',
'POLYGON ((90 190, 10 100, 60 10, 190 40, 120 100, 190 180, 90 190))'),
'POLYGON ((90 190, 10 100, 60 10, 190 40, 120 100, 190 180, 90 190))'
);
Manuel PostGIS 3.4.0dev 388 / 870
Le plus grand cercle vide à l’intérieur d’un ensemble de points, contraint à se situer dans un polygone. La limite du polygone de
contrainte doit être incluse en tant qu’obstacle et spécifiée en tant que contrainte pour le centre du cercle.
Voir aussi
ST_MinimumBoundingRadius
7.14.14 ST_MinimumBoundingCircle
ST_MinimumBoundingCircle — Retourne le plus petit cercle polygonal qui contient une géométrie.
Synopsis
Description
Note
Le cercle de délimitation est approximé par un polygone avec une valeur par défaut de 48 segments par quart de cercle.
Le polygone étant une approximation du cercle de délimitation minimal, certains points de la géométrie d’entrée peuvent
ne pas être contenus dans le polygone. L’approximation peut être améliorée en augmentant le nombre de segments.
Pour les applications où une approximation ne convient pas, on peut utiliser ST_MinimumBoundingRadius.
A utiliser avec ST_Collect pour obtenir le cercle minimal de délimitation d’un ensemble de géométries.
Pour calculer deux points situés sur le cercle minimum (le "diamètre maximum"), utilisez ST_LongestLine.
Le rapport de la surface d’un polygone divisée par la surface de son cercle circonscrit minimal est appelé Score de compacité de
Reock.
Effectué par le module GEOS.
Disponibilité : 1.4.0
Manuel PostGIS 3.4.0dev 389 / 870
Exemples
SELECT d.disease_type,
ST_MinimumBoundingCircle(ST_Collect(d.geom)) As geom
FROM disease_obs As d
GROUP BY d.disease_type;
Cercle minimal de délimitation d’un point et d’une ligne de démarcation. Utilisation de 8 segments pour approximer un quart de
cercle
SELECT ST_AsText(ST_MinimumBoundingCircle(
ST_Collect(
ST_GeomFromText('LINESTRING(55 75,125 150)'),
ST_Point(20, 80)), 8
)) As wktmbc;
wktmbc
-----------
POLYGON((135.59714732062 115,134.384753327498 102.690357210921,130.79416296937 ←-
90.8537670908995,124.963360620072 79.9451031602111,117.116420743937 ←-
70.3835792560632,107.554896839789 62.5366393799277,96.6462329091006 ←-
56.70583703063,84.8096427890789 53.115246672502,72.5000000000001 ←-
51.9028526793802,60.1903572109213 53.1152466725019,48.3537670908996 ←-
56.7058370306299,37.4451031602112 62.5366393799276,27.8835792560632 ←-
70.383579256063,20.0366393799278 79.9451031602109,14.20583703063 ←-
90.8537670908993,10.615246672502 102.690357210921,9.40285267938019 115,10.6152466725019 ←-
127.309642789079,14.2058370306299 139.1462329091,20.0366393799275 ←-
150.054896839789,27.883579256063 159.616420743937,
37.4451031602108 167.463360620072,48.3537670908992 173.29416296937,60.190357210921 ←-
176.884753327498,
72.4999999999998 178.09714732062,84.8096427890786 176.884753327498,96.6462329091003 ←-
173.29416296937,107.554896839789 167.463360620072,
117.116420743937 159.616420743937,124.963360620072 150.054896839789,130.79416296937 ←-
139.146232909101,134.384753327498 127.309642789079,135.59714732062 115))
Voir aussi
7.14.15 ST_MinimumBoundingRadius
ST_MinimumBoundingRadius — Renvoie le point central et le rayon du plus petit cercle contenant une géométrie.
Synopsis
Description
Calcule le point central et le rayon du plus petit cercle contenant une géométrie. Retourne un enregistrement avec des champs :
A utiliser avec ST_Collect pour obtenir le cercle minimal de délimitation d’un ensemble de géométries.
Pour calculer deux points situés sur le cercle minimum (le "diamètre maximum"), utilisez ST_LongestLine.
Disponibilité - 2.3.0
Exemples
st_astext | radius
------------------------------------------+------------------
POINT(26284.8418027133 65267.1145090825) | 247.436045591407
Voir aussi
7.14.16 ST_OrientedEnvelope
Synopsis
Description
Renvoie le rectangle rotatif de surface minimale entourant une géométrie. Notez qu’il peut exister plus d’un rectangle de ce type.
Peut renvoyer un point ou une ligne dans le cas d’entrées dégénérées.
Availability: 2.5.0.
Requires GEOS >= 3.6.0.
Manuel PostGIS 3.4.0dev 391 / 870
Exemples
st_astext
------------------------------------------------
POLYGON((3 2,2.88 2.16,-1.12 -0.84,-1 -1,3 2))
SELECT ST_AsText(ST_OrientedEnvelope(
ST_Collect(
ST_GeomFromText('LINESTRING(55 75,125 150)'),
ST_Point(20, 80))
)) As wktenv;
wktenv
-----------
POLYGON((19.9999999999997 79.9999999999999,33.0769230769229 ←-
60.3846153846152,138.076923076924 130.384615384616,125.000000000001 ←-
150.000000000001,19.9999999999997 79.9999999999999))
Voir aussi
ST_Envelope ST_MinimumBoundingCircle
7.14.17 ST_OffsetCurve
ST_OffsetCurve — Renvoie une ligne décalée par rapport à une distance et un côté donnés à partir d’une ligne en entrée.
Synopsis
Description
Renvoie une ligne décalée par rapport à une distance et un côté donnés à partir d’une ligne en entrée. Tous les points des
géométries renvoyées ne sont pas plus éloignés que la distance donnée de la géométrie d’entrée. Utile pour calculer des lignes
parallèles autour d’une ligne centrale.
Pour une distance positive, le décalage se situe à gauche de la ligne d’entrée et conserve la même direction. Pour une distance
négative, il se trouve sur le côté droit et dans la direction opposée.
Les unités de distance sont mesurées en unités du système de référence spatiale.
Notez que la sortie peut être un MULTILINESTRING ou un EMPTY pour certaines géométries d’entrée en forme de puzzle.
Le troisième paramètre facultatif permet de spécifier une liste de paires clé/valeur séparées par des blancs afin de modifier les
opérations comme suit :
• ’quad_segs=#’ : nombre de segments utilisés pour approximer un quart de cercle (8 par défaut).
• ’join=round|mitre|bevel’ : style de jointure (la valeur par défaut est "round"). ’miter’ est également accepté comme synonyme
de ’mitre’.
• ’mitre_limit=#.#’ : limite du rapport de "mitre" (n’affecte que le style d’assemblage "mitred"). ’miter_limit’ est également
accepté comme synonyme de ’mitre_limit’.
Note
Cette fonction ignore la dimension Z. Elle donne toujours un résultat en 2D, même lorsqu’elle est utilisée sur une
géométrie en 3D.
Exemples
Voir aussi
ST_Buffer
7.14.18 ST_PointOnSurface
ST_PointOnSurface — Calcule un point dont on garantit qu’il se trouve dans un polygone ou sur une géométrie.
Synopsis
Description
Renvoie un POINT dont il est garanti qu’il se trouve à l’intérieur d’une surface (POLYGON, MULTIPOLYGON et CURVED
POLYGON). Dans PostGIS, cette fonction fonctionne également pour les géométries de lignes et de points.
Manuel PostGIS 3.4.0dev 396 / 870
Cette méthode implémente la spécification OGC Simple Features Implementation Specification for SQL 1.1. s3.2.14.2 //
s3.2.18.2
Cette méthode implémente la spécification SQL/MM. SQL-MM 3: 8.1.5, 9.5.6. Les spécifications définissent ST_PointOnSurface
pour les géométries de surface uniquement. PostGIS étend la fonction pour prendre en charge tous les types de géométrie
courants. D’autres bases de données (Oracle, DB2, ArcSDE) semblent ne prendre en charge cette fonction que pour les surfaces.
SQL Server 2008 prend en charge tous les types de géométrie courants.
Exemples
------------
POINT(0 5)
Exemple: Le résultat de ST_PointOnSurface est garanti à l’intérieur des polygones, alors que le point calculé par ST_Centroid
peut se trouver à l’extérieur.
pt_on_surf | centroid
-----------------+---------------------------------------------
POINT(62.5 110) | POINT(100.18264840182648 85.11415525114155)
Voir aussi
ST_Centroid, ST_MaximumInscribedCircle
7.14.19 ST_Polygonize
ST_Polygonize — Calcule une collection de polygones formés à partir du tracé d’un ensemble de géométries.
Manuel PostGIS 3.4.0dev 398 / 870
Synopsis
Description
Creates a GeometryCollection containing the polygons formed by the linework of a set of geometries. If the input linework does
not form any polygons, an empty GeometryCollection is returned.
This function creates polygons covering all delimited areas. If the result is intended to form a valid polygonal geometry, use
ST_BuildArea to prevent holes being filled.
Note
The input linework must be correctly noded for this function to work properly. To ensure input is noded use ST_Node
on the input geometry before polygonizing.
Note
GeometryCollections can be difficult to handle with external tools. Use ST_Dump to convert the polygonized result into
separate polygons.
Exemples
------------------------------------------------------------------------------------------
GEOMETRYCOLLECTION (POLYGON ((180 40, 30 20, 20 90, 70 70, 80 130, 160 160, 180 40), (150 ←-
80, 120 130, 80 60, 150 80)),
POLYGON ((20 90, 20 160, 70 190, 80 130, 70 70, 20 90)),
POLYGON ((160 160, 80 130, 70 190, 160 160)),
POLYGON ((80 60, 120 130, 150 80, 80 60)))
-------------------------------------
SRID=4269;GEOMETRYCOLLECTION(POLYGON((-71.040878 42.285678,-71.040943 42.2856,-71.04096 ←-
42.285752,-71.040878 42.285678)),
POLYGON((-71.17166 42.353675,-71.172026 42.354044,-71.17239 42.354358,-71.171794 ←-
42.354971,-71.170511 42.354855,
-71.17112 42.354238,-71.17166 42.353675)))
--Use ST_Dump to dump out the polygonize geoms into individual polygons
SELECT ST_AsEWKT((ST_Dump(t.polycoll)).geom) AS geomtextrep
FROM (SELECT ST_Polygonize(geom_4269) AS polycoll
FROM (SELECT geom_4269 FROM ma.suffolk_edges)
As foo) AS t;
------------------------
SRID=4269;POLYGON((-71.040878 42.285678,-71.040943 42.2856,-71.04096 42.285752,
-71.040878 42.285678))
SRID=4269;POLYGON((-71.17166 42.353675,-71.172026 42.354044,-71.17239 42.354358
,-71.171794 42.354971,-71.170511 42.354855,-71.17112 42.354238,-71.17166 42.353675))
Voir aussi
7.14.20 ST_ReducePrecision
ST_ReducePrecision — Renvoie une géométrie valide dont les points sont arrondis en fonction de la tolérance de la grille.
Synopsis
Description
Renvoie une géométrie valide dont tous les points sont arrondis à la tolérance de grille fournie, et dont les caractéristiques
inférieures à la tolérance sont supprimées.
Contrairement à ST_SnapToGrid, la géométrie renvoyée sera valide, sans auto-intersections d’anneaux ni composants réduits.
La réduction de précision peut être utilisée pour :
Availability: 3.1.0.
Requires GEOS >= 3.9.0.
Exemples
Voir aussi
7.14.21 ST_SharedPaths
ST_SharedPaths — Renvoie une collection contenant les chemins partagés par les deux lignes/multilignes en entrée.
Synopsis
Description
Renvoie une collection contenant les chemins partagés par les deux géométries d’entrée. Ceux qui vont dans la même direction
sont dans le premier élément de la collection, ceux qui vont dans la direction opposée sont dans le deuxième élément. Les
chemins eux-mêmes sont donnés dans la direction de la première géométrie.
Effectué par le module GEOS.
Disponibilité : 2.0.0
wkt
-------------------------------------------------------------
GEOMETRYCOLLECTION(MULTILINESTRING((126 156.25,126 125),
(101 150,90 161),(90 161,76 175)),MULTILINESTRING EMPTY)
SELECT ST_AsText(
ST_SharedPaths(
ST_GeomFromText('LINESTRING(76 175,90 161,126 125,126 156.25,151 100)'),
ST_GeomFromText('MULTILINESTRING((26 125,26 200,126 200,126 125,26 125),
(51 150,101 150,76 175,51 150))')
)
) As wkt
wkt
-------------------------------------------------------------
GEOMETRYCOLLECTION(MULTILINESTRING EMPTY,
MULTILINESTRING((76 175,90 161),(90 161,101 150),(126 125,126 156.25)))
Voir aussi
7.14.22 ST_Simplify
ST_Simplify — Renvoie une version simplifiée d’une géométrie, en utilisant l’algorithme de Douglas-Peucker.
Synopsis
Description
Renvoie une version "simplifiée" de la géométrie donnée en utilisant l’algorithme de Douglas-Peucker. Cette fonction ne fonc-
tionne qu’avec les (multi)lignes et les (multi)polygones, mais vous pouvez l’appeler en toute sécurité avec n’importe quel type
de géométrie. Comme la simplification se fait objet par objet, vous pouvez également utiliser une collection de géométries dans
cette fonction.
L’option "preserve collapsed" permet de conserver les objets qui seraient autrement trop petits compte tenu de la tolérance. Par
exemple, une ligne de 1 m de long simplifiée avec une tolérance de 10 m. Si l’argument preserveCollapsed est spécifié
comme true, la ligne ne disparaîtra pas. Cet indicateur est utile pour les moteurs de rendu, afin d’éviter qu’un grand nombre
d’objets très petits ne disparaissent d’une carte en laissant des vides surprenants.
Note
Notez que la géométrie retournée peut perdre sa simplicité (voir ST_IsSimple)
Note
Notez que la topologie peut ne pas être préservée et donner lieu à des géométries non valides. Utilisez (voir
ST_SimplifyPreserveTopology) pour préserver la topologie.
Disponibilité : 1.2.2
Exemples
49 | 33 | 17 | 9 | 4 | t
Voir aussi
7.14.23 ST_SimplifyPreserveTopology
ST_SimplifyPreserveTopology — Renvoie une version simplifiée et valide d’une géométrie, en utilisant l’algorithme de Douglas-
Peucker.
Synopsis
Description
Renvoie une version "simplifiée" de la géométrie donnée en utilisant l’algorithme de Douglas-Peucker. Évite de créer des
géométries dérivées (polygones en particulier) qui ne sont pas valides. Cette fonction ne fonctionne qu’avec les (multi)lignes et
les (multi)polygones, mais vous pouvez l’appeler en toute sécurité avec n’importe quel type de géométrie. Comme la simplifica-
tion se produit objet par objet, vous pouvez également utiliser une collection de géométries dans cette fonction.
Effectué par le module GEOS.
Disponibilité : 1.3.3
Exemples
Même exemple que Simplify, mais nous voyons que Preserve Topology empêche une simplification excessive. Le cercle peut au
maximum devenir un carré.
SELECT ST_Npoints(geom) As np_before, ST_NPoints(ST_SimplifyPreserveTopology(geom,0.1)) As ←-
np01_notbadcircle, ST_NPoints(ST_SimplifyPreserveTopology(geom,0.5)) As ←-
np05_notquitecircle,
ST_NPoints(ST_SimplifyPreserveTopology(geom,1)) As np1_octagon, ST_NPoints( ←-
ST_SimplifyPreserveTopology(geom,10)) As np10_square,
ST_NPoints(ST_SimplifyPreserveTopology(geom,100)) As np100_stillsquare
FROM (SELECT ST_Buffer('POINT(1 3)', 10,12) As geom) As foo;
--result--
np_before | np01_notbadcircle | np05_notquitecircle | np1_octagon | np10_square | ←-
np100_stillsquare
-----------+-------------------+---------------------+-------------+---------------+-----------------
49 | 33 | 17 | 9 | 5 | ←-
5
Voir aussi
ST_Simplify
7.14.24 ST_SimplifyPolygonHull
ST_SimplifyPolygonHull — Calcule une enveloppe extérieure ou intérieure simplifiée préservant la topologie d’une géométrie
polygonale.
Synopsis
Description
Calcule une enveloppe extérieure ou intérieure simplifiée préservant la topologie d’une géométrie polygonale. Une enveloppe
extérieure couvre complètement la géométrie d’entrée. Une enveloppe intérieure est entièrement couverte par la géométrie
d’entrée. Le résultat est une géométrie polygonale formée par un sous-ensemble de sommets d’entrée. Les multipolygones et les
trous sont gérés et produisent un résultat ayant la même structure que la géométrie d’entrée.
La réduction du nombre de sommets est contrôlée par le paramètre vertex_fraction, qui est un nombre compris entre 0 et
1. Les valeurs inférieures produisent des résultats plus simples, avec un nombre de vertex plus faible et une concavité moindre.
Pour les enveloppes extérieures et intérieures, une fraction de sommet de 1,0 produit la géométrie originale. Pour les enveloppes
extérieures, une valeur de 0,0 produit l’enveloppe convexe (pour un polygone unique) ; pour les enveloppes intérieures, elle
produit un triangle.
Le processus de simplification consiste à supprimer progressivement les angles concaves qui contiennent le moins de surface,
jusqu’à ce que l’objectif de nombre de vertex soit atteint. Il empêche les arêtes de se croiser, de sorte que le résultat est toujours
une géométrie polygonale valide.
Pour obtenir de meilleurs résultats avec des géométries contenant des segments de ligne relativement longs, il peut être nécessaire
de "segmenter" l’entrée, comme indiqué ci-dessous.
Effectué par le module GEOS.
Availability: 3.3.0.
Requires GEOS >= 3.11.0.
Exemples
SELECT ST_SimplifyPolygonHull(
'POLYGON ((131 158, 136 163, 161 165, 173 156, 179 148, 169 140, 186 144, 190 137, 185 ←-
131, 174 128, 174 124, 166 119, 158 121, 158 115, 165 107, 161 97, 166 88, 166 79, 158 ←-
57, 145 57, 112 53, 111 47, 93 43, 90 48, 88 40, 80 39, 68 32, 51 33, 40 31, 39 34, ←-
49 38, 34 38, 25 34, 28 39, 36 40, 44 46, 24 41, 17 41, 14 46, 19 50, 33 54, 21 55, 13 ←-
52, 11 57, 22 60, 34 59, 41 68, 75 72, 62 77, 56 70, 46 72, 31 69, 46 76, 52 82, 47 ←-
84, 56 90, 66 90, 64 94, 56 91, 33 97, 36 100, 23 100, 22 107, 29 106, 31 112, 46 116, ←-
36 118, 28 131, 53 132, 59 127, 62 131, 76 130, 80 135, 89 137, 87 143, 73 145, 80 ←-
150, 88 150, 85 157, 99 162, 116 158, 115 165, 123 165, 122 170, 134 164, 131 158))',
0.3);
Manuel PostGIS 3.4.0dev 406 / 870
Voir aussi
7.14.25 ST_SimplifyVW
ST_SimplifyVW — Renvoie une version simplifiée d’une géométrie, en utilisant l’algorithme de Visvalingam-Whyatt
Synopsis
Description
Renvoie une version "simplifiée" de la géométrie donnée en utilisant l’algorithme de Visvalingam-Whyatt. Cette fonction ne fonc-
tionne qu’avec les (multi)lignes et les (multi)polygones, mais vous pouvez l’appeler en toute sécurité avec n’importe quel type
de géométrie. Comme la simplification s’effectue objet par objet, vous pouvez également utiliser une collection de géométries
dans cette fonction.
Note
Notez que la géométrie retournée peut perdre sa simplicité (voir ST_IsSimple)
Note
Notez que la topologie peut ne pas être préservée et donner lieu à des géométries non valides. Utilisez (voir
ST_SimplifyPreserveTopology) pour préserver la topologie.
Note
Cette fonction gère la 3D et la troisième dimension affectera le résultat.
Disponibilité : 2.2.0
Exemples
Voir aussi
7.14.26 ST_SetEffectiveArea
Synopsis
Description
Définit la surface effective de chaque sommet, en utilisant l’algorithme Visvalingam-Whyatt. La surface effective est stockée
comme la valeur M du sommet. Si le paramètre optionnel "theshold" est utilisé, une géométrie simplifiée sera renvoyée, contenant
uniquement les sommets dont la surface effective est supérieure ou égale à la valeur seuil.
Cette fonction peut être utilisée pour la simplification côté serveur lorsqu’un seuil est spécifié. Une autre option consiste à utiliser
une valeur seuil de zéro. Dans ce cas, la géométrie complète sera renvoyée avec les surfaces effectives sous forme de valeurs M,
qui peuvent être utilisées par le client pour simplifier très rapidement.
Cette fonction n’agit qu’avec des (multi)lignes et des (multi)polygones, mais vous pouvez l’appeler en toute sécurité avec
n’importe quel type de géométrie. Comme la simplification se produit objet par objet, vous pouvez également utiliser une
collection de géométries dans cette fonction.
Note
Notez que la géométrie retournée peut perdre sa simplicité (voir ST_IsSimple)
Note
Notez que la topologie peut ne pas être préservée et donner lieu à des géométries non valides. Utilisez (voir
ST_SimplifyPreserveTopology) pour préserver la topologie.
Note
La géométrie de sortie perdra toutes les informations précédentes concernant les valeurs M
Note
Cette fonction gère la 3D et la troisième dimension affecte la surface effective
Disponibilité : 2.2.0
Exemples
Calcul de la surface effective d’une LineString. Comme nous utilisons une valeur seuil de zéro, tous les sommets de la géométrie
d’entrée sont renvoyés.
select ST_AsText(ST_SetEffectiveArea(geom)) all_pts, ST_AsText(ST_SetEffectiveArea(geom,30) ←-
) thrshld_30
FROM (SELECT 'LINESTRING(5 2, 3 8, 6 20, 7 25, 10 10)'::geometry geom) As foo;
-result
all_pts | thrshld_30
-----------+-------------------+
LINESTRING M (5 2 3.40282346638529e+38,3 8 29,6 20 1.5,7 25 49.5,10 10 3.40282346638529e ←-
+38) | LINESTRING M (5 2 3.40282346638529e+38,7 25 49.5,10 10 3.40282346638529e+38)
Manuel PostGIS 3.4.0dev 409 / 870
Voir aussi
ST_SimplifyVW
7.14.27 ST_TriangulatePolygon
Synopsis
Description
Calcule la triangulation de Delaunay contrainte des polygones. Les trous et les multipolygones sont pris en charge.
La "constrained Delaunay triangulation" d’un polygone est un ensemble de triangles formés à partir des sommets du polygone et
le couvrant exactement, avec l’angle intérieur total maximal parmi toutes les triangulations possibles. Elle constitue la triangula-
tion de "meilleure qualité" du polygone.
Availability: 3.3.0.
Requires GEOS >= 3.11.0.
Exemple
st_astext
---------------------------------------------------------------------------
GEOMETRYCOLLECTION(POLYGON((0 0,0 1,1 1,0 0)),POLYGON((1 1,1 0,0 0,1 1)))
Exemple
Triangulation de la lettre P.
SELECT ST_AsText(ST_TriangulatePolygon(
'POLYGON ((26 17, 31 19, 34 21, 37 24, 38 29, 39 43, 39 161, 38 172, 36 176, 34 179, 30 ←-
181, 25 183, 10 185, 10 190, 100 190, 121 189, 139 187, 154 182, 167 177, 177 169, ←-
184 161, 189 152, 190 141, 188 128, 186 123, 184 117, 180 113, 176 108, 170 104, 164 ←-
101, 151 96, 136 92, 119 89, 100 89, 86 89, 73 89, 73 39, 74 32, 75 27, 77 23, 79 ←-
20, 83 18, 89 17, 106 15, 106 10, 10 10, 10 15, 26 17), (152 147, 151 152, 149 157, ←-
146 162, 142 166, 137 169, 132 172, 126 175, 118 177, 109 179, 99 180, 89 180, 80 ←-
179, 76 178, 74 176, 73 171, 73 100, 85 99, 91 99, 102 99, 112 100, 121 102, 128 ←-
104, 134 107, 139 110, 143 114, 147 118, 149 123, 151 128, 153 141, 152 147))'
));
Manuel PostGIS 3.4.0dev 410 / 870
Triangulation de polygone
Voir aussi
7.14.28 ST_VoronoiLines
ST_VoronoiLines — Renvoie les limites des polygones de Voronoï des sommets d’une géométrie.
Synopsis
geometry ST_VoronoiLines( geometry geom , float8 tolerance = 0.0 , geometry extend_to = NULL );
Description
Calcule un Voronoi diagram bidimensionnel à partir des sommets de la géométrie fournie et renvoie les limites entre les cellules
de la représentation sous la forme d’une MultiLineString. Renvoie null si la géométrie d’entrée est null. Renvoie une collection de
géométries vide si la géométrie d’entrée ne contient qu’un seul sommet. Renvoie une collection de géométries vide si l’enveloppe
extend_to a une surface nulle.
Paramètres optionnels :
• tolerance : distance à laquelle les sommets seront considérés comme équivalents. La robustesse de l’algorithme peut être
améliorée en fournissant une distance de tolérance non nulle. (par défaut = 0.0)
• extend_to : S’il est présent, la représentation est étendue pour couvrir l’enveloppe de la géométrie fournie, à moins qu’elle
ne soit plus petite que l’enveloppe par défaut (default = NULL, l’enveloppe par défaut est la boîte de délimitation de l’entrée
élargie d’environ 50 %).
Exemples
SELECT ST_VoronoiLines(
'MULTIPOINT (50 30, 60 30, 100 100,10 150, 110 120)'::geometry,
30) AS geom;
ST_AsText output
MULTILINESTRING((135.555555555556 270,36.8181818181818 92.2727272727273),(36.8181818181818 ←-
92.2727272727273,-110 43.3333333333333),(230 -45.7142857142858,36.8181818181818 ←-
92.2727272727273))
Voir aussi
ST_DelaunayTriangles, ST_VoronoiPolygons
7.14.29 ST_VoronoiPolygons
ST_VoronoiPolygons — Renvoie les cellules de la représentation de Voronoï des sommets d’une géométrie.
Synopsis
geometry ST_VoronoiPolygons( geometry geom , float8 tolerance = 0.0 , geometry extend_to = NULL );
Description
Calcule un diagramme de Voronoï bidimensionnel à partir des sommets de la géométrie fournie. Le résultat est une GEOM-
ETRYCOLLECTION de POLYGONES qui couvre une enveloppe plus grande que l’étendue des sommets d’entrée. Renvoie
null si la géométrie d’entrée est null. Renvoie une collection de géométries vide si la géométrie d’entrée ne contient qu’un seul
sommet. Renvoie une collection de géométries vide si l’enveloppe extend_to a une surface nulle.
Paramètres optionnels :
• tolerance : distance à laquelle les sommets seront considérés comme équivalents. La robustesse de l’algorithme peut être
améliorée en fournissant une distance de tolérance non nulle. (par défaut = 0.0)
Manuel PostGIS 3.4.0dev 412 / 870
• extend_to : S’il est présent, la représentation est étendue pour couvrir l’enveloppe de la géométrie fournie, à moins qu’elle
ne soit plus petite que l’enveloppe par défaut (default = NULL, l’enveloppe par défaut est la boîte de délimitation de l’entrée
élargie d’environ 50 %).
Exemples
SELECT ST_VoronoiPolygons(
'MULTIPOINT (50 30, 60 30, 100 100,10 150, 110 120)'::geometry
) AS geom;
ST_AsText output
GEOMETRYCOLLECTION(POLYGON((-110 43.3333333333333,-110 270,100.5 270,59.3478260869565 ←-
132.826086956522,36.8181818181818 92.2727272727273,-110 43.3333333333333)),
POLYGON((55 -90,-110 -90,-110 43.3333333333333,36.8181818181818 92.2727272727273,55 ←-
79.2857142857143,55 -90)),
POLYGON((230 47.5,230 -20.7142857142857,55 79.2857142857143,36.8181818181818 ←-
92.2727272727273,59.3478260869565 132.826086956522,230 47.5)),POLYGON((230 ←-
-20.7142857142857,230 -90,55 -90,55 79.2857142857143,230 -20.7142857142857)),
POLYGON((100.5 270,230 270,230 47.5,59.3478260869565 132.826086956522,100.5 270)))
Manuel PostGIS 3.4.0dev 413 / 870
SELECT ST_VoronoiPolygons(
'MULTIPOINT (50 30, 60 30, 100 100,10 150, 110 120)'::geometry,
30) AS geom;
ST_AsText output
GEOMETRYCOLLECTION(POLYGON((-110 43.3333333333333,-110 270,100.5 270,59.3478260869565 ←-
132.826086956522,36.8181818181818 92.2727272727273,-110 43.3333333333333)),
POLYGON((230 47.5,230 -45.7142857142858,36.8181818181818 92.2727272727273,59.3478260869565 ←-
132.826086956522,230 47.5)),POLYGON((230 -45.7142857142858,230 -90,-110 -90,-110 ←-
43.3333333333333,36.8181818181818 92.2727272727273,230 -45.7142857142858)),
POLYGON((100.5 270,230 270,230 47.5,59.3478260869565 132.826086956522,100.5 270)))
Voir aussi
ST_DelaunayTriangles, ST_VoronoiLines
7.15 Couvertures
7.15.1 ST_CoverageInvalidEdges
ST_CoverageInvalidEdges — Fonction window qui trouve les endroits où les polygones ne forment pas une couverture valide.
Synopsis
Description
A window function which checks if the polygons in the window partition form a valid polygonal coverage. It returns linear
indicators showing the location of invalid edges (if any) in each polygon.
A set of valid polygons is a valid coverage if the following conditions hold:
As a window function a value is returned for every input polygon. For polygons which violate one or more of the validity
conditions the return value is a MULTILINESTRING containing the problematic edges. Coverage-valid polygons return the
value NULL. Non-polygonal or empty geometries also produce NULL values.
Les conditions permettent à une couverture valide de contenir des trous (espaces entre les polygones), pour autant que les
polygones environnants soient adaptés aux bords. Toutefois, des espaces très étroits ne sont souvent pas souhaitables. Si le
paramètre tolérance est spécifié avec une distance non nulle, les arêtes formant des espaces plus étroits seront également
renvoyées comme non valides.
The polygons being checked for coverage validity must also be valid geometries. This can be checked with ST_IsValid.
Disponibilité : 3.4.0 - nécessite GEOS >= 3.12.0
Exemples
id | st_astext
----+---------------------------------------
1 | LINESTRING (40 110, 100 70)
2 | MULTILINESTRING ((100 130, 140 120, 140 160, 100 190), (40 110, 50 80, 74 110.5))
3 | LINESTRING (140 80, 140 190)
3 | null
Voir aussi
7.15.2 ST_CoverageSimplify
ST_CoverageSimplify — Fonction window qui simplifie les bords d’une couverture polygonale.
Synopsis
Description
A window function which simplifies the edges of polygons in a polygonal coverage. The simplification preserves the coverage
topology. This means the simplified output polygons are consisent along shared edges, and still form a valid coverage.
The simplification uses a variant of the Visvalingam–Whyatt algorithm. The tolerance parameter has units of distance, and is
roughly equal to the square root of triangular areas to be simplified.
Pour simplifier uniquement les bords "internes" de la couverture (ceux qui sont partagés par deux polygones), définissez le
paramètre simplifyBoundary à false.
Note
If the input is not a valid coverage there may be unexpected artifacts in the output (such as boundary intersections,
or separated boundaries which appeared to be shared). Use ST_CoverageInvalidEdges to determine if a coverage is
valid.
Exemples
id | st_astext
----+---------------------------------------
1 | POLYGON ((160 150, 110 130, 50 10, 10 60, 20 170, 90 190, 160 150), (40 160, 66 125, ←-
90 170, 40 160))
2 | POLYGON ((40 160, 66 125, 90 170, 40 160))
3 | POLYGON ((110 130, 160 50, 50 10, 110 130))
3 | POLYGON ((160 150, 160 50, 110 130, 160 150))
Voir aussi
ST_CoverageInvalidEdges
7.15.3 ST_CoverageUnion
ST_CoverageUnion — Calcule l’union d’un ensemble de polygones formant une couverture en supprimant les arêtes communes.
Synopsis
Description
Une fonction agrégée qui réunit un ensemble de polygones formant une couverture polygonale. Le résultat est une géométrie
polygonale couvrant la même zone que la couverture. Cette fonction produit le même résultat que ST_Union, mais utilise la
structure de la couverture pour calculer l’union beaucoup plus rapidement.
Note
If the input is not a valid coverage there may be unexpected artifacts in the output (such as unmerged or overlapping
polygons). Use ST_CoverageInvalidEdges to determine if a coverage is valid.
Exemples
Manuel PostGIS 3.4.0dev 417 / 870
--------------------------------------
MULTIPOLYGON (((10 150, 80 190, 110 150, 140 80, 120 10, 10 10, 10 150), (50 60, 100 70, 40 ←-
110, 50 60)), ((120 170, 140 190, 180 160, 170 140, 140 130, 120 170)))
Voir aussi
ST_CoverageInvalidEdges, ST_Union
7.16.1 ST_Affine
Synopsis
geometry ST_Affine(geometry geomA, float a, float b, float c, float d, float e, float f, float g, float h, float i, float xoff, float yoff,
float zoff);
geometry ST_Affine(geometry geomA, float a, float b, float d, float e, float xoff, float yoff);
Manuel PostGIS 3.4.0dev 418 / 870
Description
Applique une transformation affine 3D à la géométrie pour effectuer des opérations telles que la translation, la rotation et la mise
à l’échelle en une seule étape.
Version 1: L’appel
ST_Affine(geom, a, b, c, d, e, f, g, h, i, xoff, yoff, zoff)
Toutes les fonctions de translation / mise à l’échelle ci-dessous sont exprimées par une telle transformation affine.
Version 2: Applique une transformation affine 2d à la géométrie. L’appel
ST_Affine(geom, a, b, d, e, xoff, yoff)
Note
Avant la version 1.3.4, cette fonction se bloquait si elle était utilisée avec des géométries contenant des CURVES. Ce
problème est corrigé dans la version 1.3.4+
Cette fonction prend en charge les triangles et les réseaux irréguliers triangulés (TIN).
Exemples
--Rotate a 3d line 180 degrees about the z axis. Note this is long-hand for doing ←-
ST_Rotate();
SELECT ST_AsEWKT(ST_Affine(geom, cos(pi()), -sin(pi()), 0, sin(pi()), cos(pi()), 0, 0, ←-
0, 1, 0, 0, 0)) As using_affine,
ST_AsEWKT(ST_Rotate(geom, pi())) As using_rotate
FROM (SELECT ST_GeomFromEWKT('LINESTRING(1 2 3, 1 4 3)') As geom) As foo;
using_affine | using_rotate
-----------------------------+-----------------------------
LINESTRING(-1 -2 3,-1 -4 3) | LINESTRING(-1 -2 3,-1 -4 3)
(1 row)
Voir aussi
7.16.2 ST_Rotate
Synopsis
Description
Fait pivoter la géométrie rotRadians dans le sens inverse des aiguilles d’une montre autour du point d’origine. Le point d’origine
de la rotation peut être spécifié sous la forme d’une géométrie POINT, ou sous la forme de coordonnées x et y. Si l’origine n’est
pas spécifiée, la géométrie est tournée autour de POINT(0 0).
Amélioration : 2.0.0 introduction du support TIN, Triangles et surfaces polyédriques.
Amélioration : 2.0.0 des paramètres supplémentaires ont été ajoutés pour spécifier l’origine de la rotation.
Disponibilité : 1.1.2. Nom modifié de Rotate en ST_Rotate dans la version 1.2.2
Cette fonction prend en charge les triangles et les réseaux irréguliers triangulés (TIN).
Manuel PostGIS 3.4.0dev 420 / 870
Exemples
Voir aussi
7.16.3 ST_RotateX
Synopsis
Description
Note
ST_RotateX(geomA, rotRadians) est un raccourci pour ST_Affine(geomA, 1, 0, 0, 0,
cos(rotRadians), -sin(rotRadians), 0, sin(rotRadians), cos(rotRadians), 0,
0, 0).
Cette fonction prend en charge les triangles et les réseaux irréguliers triangulés (TIN).
Manuel PostGIS 3.4.0dev 421 / 870
Exemples
Voir aussi
7.16.4 ST_RotateY
Synopsis
Description
Note
ST_RotateY(geomA, rotRadians) est un raccourci pour ST_Affine(geomA, cos(rotRadians),
0, sin(rotRadians), 0, 1, 0, -sin(rotRadians), 0, cos(rotRadians), 0, 0, 0).
Cette fonction prend en charge les triangles et les réseaux irréguliers triangulés (TIN).
Exemples
Voir aussi
7.16.5 ST_RotateZ
Synopsis
Description
Note
C’est un synonyme de ST_Rotate
Note
ST_RotateZ(geomA, rotRadians) est un raccourci SELECT ST_Affine(geomA,
cos(rotRadians), -sin(rotRadians), 0, sin(rotRadians), cos(rotRadians), 0,
0, 0, 1, 0, 0, 0).
Note
Avant la version 1.3.4, cette fonction se bloquait si elle était utilisée avec des géométries contenant des CURVES. Ce
problème est corrigé dans la version 1.3.4+
Cette fonction prend en charge les triangles et les réseaux irréguliers triangulés (TIN).
Exemples
-----------------------------------------------------------------------------------------------------
Voir aussi
7.16.6 ST_Scale
Synopsis
Description
Met la géométrie à l’échelle en multipliant les ordonnées par les paramètres factor correspondants.
La version prenant une géométrie comme paramètre factor permet de passer un point 2d, 3dm, 3dz ou 4d pour définir le facteur
d’échelle pour toutes les dimensions prises en charge. Les dimensions manquantes dans le point factor sont équivalentes à
l’absence de mise à l’échelle de la dimension correspondante.
La variante à trois géométries permet de transmettre une "fausse origine" pour la mise à l’échelle. Cela permet une "mise à
l’échelle sur place", par exemple en utilisant le centroïde de la géométrie comme fausse origine. Sans fausse origine, la mise à
l’échelle s’effectue par rapport à l’origine réelle, de sorte que toutes les coordonnées sont simplement multipliées par le facteur
d’échelle.
Note
Avant la version 1.3.4, cette fonction se bloquait si elle était utilisée avec des géométries contenant des CURVES. Ce
problème est corrigé dans la version 1.3.4+
Disponibilité : 1.1.0.
Amélioration : 2.0.0 introduction du support TIN, Triangles et surfaces polyédriques.
Amélioration : La prise en charge de la mise à l’échelle de toutes les dimensions (paramètre factor) a été introduite dans la
version 2.2.0.
Amélioration : la prise en charge de la mise à l’échelle par rapport à une origine locale (paramètre origin) a été introduite dans
la version 2.5.0.
Cette fonction prend en charge les triangles et les réseaux irréguliers triangulés (TIN).
Exemples
--Version 1: scale X, Y, Z
SELECT ST_AsEWKT(ST_Scale(ST_GeomFromEWKT('LINESTRING(1 2 3, 1 1 1)'), 0.5, 0.75, 0.8));
st_asewkt
--------------------------------------
LINESTRING(0.5 1.5 2.4,0.5 0.75 0.8)
--Version 2: Scale X Y
SELECT ST_AsEWKT(ST_Scale(ST_GeomFromEWKT('LINESTRING(1 2 3, 1 1 1)'), 0.5, 0.75));
st_asewkt
----------------------------------
LINESTRING(0.5 1.5 3,0.5 0.75 1)
--Version 3: Scale X Y Z M
SELECT ST_AsEWKT(ST_Scale(ST_GeomFromEWKT('LINESTRING(1 2 3 4, 1 1 1 1)'),
ST_MakePoint(0.5, 0.75, 2, -1)));
st_asewkt
----------------------------------------
LINESTRING(0.5 1.5 6 -4,0.5 0.75 2 -1)
Voir aussi
ST_Affine, ST_TransScale
7.16.7 ST_Translate
Synopsis
Description
Renvoie une nouvelle géométrie dont les coordonnées sont des unités de translation delta x,delta y,delta z. Les unités sont basées
sur les unités définies dans la référence spatiale (SRID) pour cette géométrie. Les unités sont basées sur les unités définies dans
la référence spatiale (SRID) pour cette géométrie.
Note
Avant la version 1.3.4, cette fonction se bloquait si elle était utilisée avec des géométries contenant des CURVES. Ce
problème est corrigé dans la version 1.3.4+
Manuel PostGIS 3.4.0dev 425 / 870
Disponibilité : 1.2.2
Exemples
wgs_transgeomtxt
---------------------
POINT(-70.01 42.37)
Déplacer un point 3D
SELECT ST_AsEWKT(ST_Translate(CAST('POINT(0 0 0)' As geometry), 5, 12,3));
st_asewkt
---------
POINT(5 12 3)
-----------------------------------------------------------------------------------------------------
Voir aussi
7.16.8 ST_TransScale
ST_TransScale — Traduit et met à l’échelle une géométrie en fonction des paramètres offset et factor spécifiés.
Synopsis
geometry ST_TransScale(geometry geomA, float deltaX, float deltaY, float XFactor, float YFactor);
Manuel PostGIS 3.4.0dev 426 / 870
Description
Traduit la géométrie à l’aide des paramètres deltaX et deltaY, puis la met à l’échelle à l’aide des paramètres XFactor et YFactor,
uniquement en 2D.
Note
ST_TransScale(geomA, deltaX, deltaY, XFactor, YFactor) est un raccourci pour
ST_Affine(geomA, XFactor, 0, 0, 0, YFactor, 0, 0, 0, 1, deltaX*XFactor,
deltaY*YFactor, 0).
Note
Avant la version 1.3.4, cette fonction se bloquait si elle était utilisée avec des géométries contenant des CURVES. Ce
problème est corrigé dans la version 1.3.4+
Disponibilité : 1.1.0.
Exemples
--Buffer a point to get an approximation of a circle, convert to curve and then translate ←-
1,2 and scale it 3,4
SELECT ST_AsText(ST_Transscale(ST_LineToCurve(ST_Buffer('POINT(234 567)', 3)),1,2,3,4));
-----------------------------------------------------------------------------------------------------
Voir aussi
ST_Affine, ST_Translate
7.17.1 ST_ClusterDBSCAN
ST_ClusterDBSCAN — Fonction Window qui renvoie un identifiant de cluster pour chaque géométrie d’entrée en utilisant
l’algorithme DBSCAN.
Manuel PostGIS 3.4.0dev 427 / 870
Synopsis
Description
Renvoie le numéro de cluster pour chaque géométrie d’entrée, sur la base d’une implémentation 2D de l’algorithme Density-based
spatial clustering of applications with noise (DBSCAN). Contrairement à ST_ClusterKMeans, il ne nécessite pas de spécifier le
nombre de clusters, mais utilise plutôt les paramètres distance (eps) et densité (minpoints) souhaités pour construire chaque
cluster.
Une géométrie d’entrée sera ajoutée à un cluster si elle est soit :
• Une géométrie "centrale", qui se trouve à l’intérieur de eps distance d’au moins minpoints géométries d’entrée (y compris
elle-même) ou
• Une géométrie "en bordure", qui se trouve dans eps distance d’une géométrie centrale.
Notez que les géométries de bordure peuvent se trouver à une distance eps des géométries centrales dans plus d’un cluster
; dans ce cas, l’une ou l’autre affectation serait correcte, et la géométrie de bordure sera arbitrairement affectée à l’un des
clusters disponibles. Dans ces cas, il est possible qu’un cluster correct soit généré avec moins de géométries minpoints.
Lorsque l’affectation d’une géométrie de bordure est ambiguë, des appels répétés à ST_ClusterDBSCAN produiront des résultats
identiques si une clause ORDER BY est incluse dans la définition de la fenêtre, mais les affectations de cluster peuvent différer
d’autres implémentations du même algorithme.
Note
Les géométries d’entrée qui ne répondent pas aux critères pour rejoindre un autre cluster se verront attribuer un numéro
de cluster égal à NULL.
Disponibilité : 2.3.0
Exemples
Attribuer un numéro de cluster à chaque polygone situé à moins de 50 mètres l’un de l’autre. Il faut au moins 2 polygones par
cluster
Manuel PostGIS 3.4.0dev 428 / 870
name | ←-
bucket
-------------------------------------+-------- ←-
Manulife Tower | ←-
0
Park Lane Seaport I | ←-
0
Park Lane Seaport II | ←-
0
Renaissance Boston Waterfront Hotel | ←-
0
Seaport Boston Hotel | ←-
0
Seaport Hotel & World Trade Center | ←-
0
Waterside Place | ←-
0
World Trade Center East | ←-
0
100 Northern Avenue | ←-
1
100 Pier 4 | ←-
1
The Institute of Contemporary Art | ←-
dans un rayon de 50 mètres, au moins 2 par cluster. Les 1
singletons ont NULL pour cid 101 Seaport | ←-
2
SELECT name, ST_ClusterDBSCAN(geom, eps ←- District Hall | ←-
:= 50, minpoints := 2) over () AS cid 2
FROM boston_polys One Marina Park Drive | ←-
WHERE name 2
> '' AND building Twenty Two Liberty | ←-
> '' 2
AND ST_DWithin(geom, Vertex | ←-
ST_Transform( 2
ST_GeomFromText('POINT ←- Vertex | ←-
(-71.04054 42.35141)', 4326), 26986), 2
500); Watermark Seaport | ←-
2
Blue Hills Bank Pavilion | ←-
NULL
World Trade Center West | ←-
NULL
(20 rows)
Combiner les parcelles ayant le même numéro de cluster en une seule géométrie. Ceci utilise l’appel d’arguments nommés
SELECT cid, ST_Collect(geom) AS cluster_geom, array_agg(parcel_id) AS ids_in_cluster FROM (
SELECT parcel_id, ST_ClusterDBSCAN(geom, eps := 0.5, minpoints := 5) over () AS cid, ←-
geom
FROM parcels) sq
GROUP BY cid;
Voir aussi
7.17.2 ST_ClusterIntersectingWin
ST_ClusterIntersectingWin — Fonction Window qui renvoie un identifiant de cluster pour chaque géométrie en entrée, en re-
groupant les géométries en entrée en ensembles connectés.
Synopsis
Description
ST_ClusterIntersectingWin est une fonction Window qui construit des clusters de géométries qui s’intersectent. Il est possible
de parcourir toutes les géométries d’un cluster sans le quitter. La valeur de retour est le numéro de cluster à laquelle participe
l’argument géométrie, ou null pour les entrées nulles.
Disponibilité : 3.4.0
Exemples
WITH testdata AS (
SELECT id, geom::geometry FROM (
VALUES (1, 'LINESTRING (0 0, 1 1)'),
(2, 'LINESTRING (5 5, 4 4)'),
(3, 'LINESTRING (6 6, 7 7)'),
(4, 'LINESTRING (0 0, -1 -1)'),
(5, 'POLYGON ((0 0, 4 0, 4 4, 0 4, 0 0))')) AS t(id, geom)
)
SELECT id,
ST_AsText(geom),
ST_ClusterIntersectingWin(geom) OVER () AS cluster
FROM testdata;
id | st_astext | cluster
----+--------------------------------+---------
1 | LINESTRING(0 0,1 1) | 0
2 | LINESTRING(5 5,4 4) | 0
3 | LINESTRING(6 6,7 7) | 1
4 | LINESTRING(0 0,-1 -1) | 0
5 | POLYGON((0 0,4 0,4 4,0 4,0 0)) | 0
Voir aussi
7.17.3 ST_ClusterIntersecting
ST_ClusterIntersecting — Fonction d’agrégation qui regroupe les géométries en entrée en ensembles connectés.
Synopsis
Description
ST_ClusterIntersecting est une fonction d’agrégat qui renvoie un tableau de GeometryCollections, où chaque GeometryCollec-
tion représente un ensemble de géométries interconnectées.
Disponibilité : 2.2.0
Exemples
WITH testdata AS
(SELECT unnest(ARRAY['LINESTRING (0 0, 1 1)'::geometry,
'LINESTRING (5 5, 4 4)'::geometry,
'LINESTRING (6 6, 7 7)'::geometry,
'LINESTRING (0 0, -1 -1)'::geometry,
'POLYGON ((0 0, 4 0, 4 4, 0 4, 0 0))'::geometry]) AS geom)
--result
st_astext
---------
GEOMETRYCOLLECTION(LINESTRING(0 0,1 1),LINESTRING(5 5,4 4),LINESTRING(0 0,-1 -1),POLYGON((0 ←-
0,4 0,4 4,0 4,0 0)))
GEOMETRYCOLLECTION(LINESTRING(6 6,7 7))
Voir aussi
7.17.4 ST_ClusterKMeans
ST_ClusterKMeans — Fonction Window qui renvoie un identifiant de cluster pour chaque géométrie en entrée en utilisant
l’algorithme K-means.
Synopsis
Description
Renvoie le numéro de cluster K-means pour chaque géométrie en entrée. La distance utilisée pour le clustering est la distance
entre les centroïdes pour les géométries 2D, et la distance entre les centres des boîtes de délimitation pour les géométries 3D.
Pour les entrées POINT, la coordonnée M sera traitée comme le poids de l’entrée et doit être supérieure à 0.
max_radius, si elle est définie, fera en sorte que ST_ClusterKMeans génère plus de clusters que k en s’assurant qu’aucun
cluster en sortie n’a un rayon plus grand que max_radius. Ceci est utile dans l’analyse d’accessibilité.
Amélioré : 3.2.0 Support pour max_radius
Amélioration : 3.1.0 Prise en charge des géométries et des poids en 3D
Disponibilité : 2.3.0
Manuel PostGIS 3.4.0dev 431 / 870
Exemples
Exemple : Regroupement d’un ensemble de données de population préagrégées à l’échelle planétaire en utilisant le clusering 3D
et la pondération. Identifiez au moins 20 régions basées sur Kontur Population Data qui ne s’étendent pas à plus de 3000 km de
leur centre :
create table kontur_population_3000km_clusters as
select
geom,
ST_ClusterKMeans(
ST_Force4D(
ST_Transform(ST_Force3D(geom), 4978), -- cluster in 3D XYZ CRS
mvalue := population -- set clustering to be weighed by population
),
20, -- aim to generate at least 20 clusters
max_radius := 3000000 -- but generate more to make each under 3000 km radius
) over () as cid
from
kontur_population;
La population mondiale regroupée selon les spécifications ci-dessus produit 46 clusters. Les clusters sont centrés sur des régions
bien peuplées (New York, Moscou). Le Groenland est un cluster. Il y a des groupes d’îles qui s’étendent sur l’antiméridien. Les
bords des clusters suivent la courbure de la Terre.
Voir aussi
7.17.5 ST_ClusterWithin
ST_ClusterWithin — Fonction d’agrégation qui regroupe les géométries en entrée en fonction de la distance de séparation.
Synopsis
Description
ST_ClusterWithin est une fonction d’agrégat qui renvoie un tableau de GeometryCollections, où chaque GeometryCollection
représente un ensemble de géométries séparées par la distance spécifiée au maximum. (Les distances sont des distances cartési-
ennes dans les unités du SRID)
Disponibilité : 2.2.0
Exemples
WITH testdata AS
(SELECT unnest(ARRAY['LINESTRING (0 0, 1 1)'::geometry,
'LINESTRING (5 5, 4 4)'::geometry,
'LINESTRING (6 6, 7 7)'::geometry,
'LINESTRING (0 0, -1 -1)'::geometry,
'POLYGON ((0 0, 4 0, 4 4, 0 4, 0 0))'::geometry]) AS geom)
--result
st_astext
---------
GEOMETRYCOLLECTION(LINESTRING(0 0,1 1),LINESTRING(5 5,4 4),LINESTRING(0 0,-1 -1),POLYGON((0 ←-
0,4 0,4 4,0 4,0 0)))
GEOMETRYCOLLECTION(LINESTRING(6 6,7 7))
Voir aussi
7.17.6 ST_ClusterWithinWin
ST_ClusterWithinWin — Fonction Window qui renvoie un identifiant de cluster pour chaque géométrie en entrée, regroupement
en utilisant la distance de séparation.
Synopsis
Description
ST_ClusterWithinWin est une fonction Window qui renvoie un nombre entier pour chaque géométrie en entrée, où l’entier est
le numéro de cluster dont la géométrie est membre. Les clusters représentent un ensemble de géométries en entrée séparées au
maximum par la distance spécifiée. (Les distances sont des distances cartésiennes dans les unités du SRID).
ST_ClusterWithinWin est équivalent à l’exécution de ST_ClusterDBSCAN avec un `minpoints` de zéro.
Disponibilité : 3.4.0
Exemples
WITH testdata AS (
SELECT id, geom::geometry FROM (
VALUES (1, 'LINESTRING (0 0, 1 1)'),
(2, 'LINESTRING (5 5, 4 4)'),
(3, 'LINESTRING (6 6, 7 7)'),
(4, 'LINESTRING (0 0, -1 -1)'),
(5, 'POLYGON ((0 0, 4 0, 4 4, 0 4, 0 0))')) AS t(id, geom)
)
SELECT id,
ST_AsText(geom),
Manuel PostGIS 3.4.0dev 434 / 870
id | st_astext | cluster
----+--------------------------------+---------
1 | LINESTRING(0 0,1 1) | 0
2 | LINESTRING(5 5,4 4) | 0
3 | LINESTRING(6 6,7 7) | 1
4 | LINESTRING(0 0,-1 -1) | 0
5 | POLYGON((0 0,4 0,4 4,0 4,0 0)) | 0
Voir aussi
7.18.1 Box2D
Synopsis
Description
Cette fonction prend en charge les triangles et les réseaux irréguliers triangulés (TIN).
Exemples
box2d
---------
BOX(1 2,5 6)
box2d
--------
BOX(220186.984375 150406,220288.25 150506.140625)
Manuel PostGIS 3.4.0dev 435 / 870
Voir aussi
Box3D, ST_GeomFromText
7.18.2 Box3D
Synopsis
Description
Cette fonction prend en charge les triangles et les réseaux irréguliers triangulés (TIN).
Exemples
Box3d
---------
BOX3D(1 2 3,5 6 5)
Box3d
--------
BOX3D(220227 150406 1,220268 150415 1)
Voir aussi
Box2D, ST_GeomFromEWKT
7.18.3 ST_EstimatedExtent
Synopsis
Description
Renvoie l’étendue estimée d’une table spatiale sous la forme d’une box2d. Le schéma actuel est utilisé s’il n’est pas spécifié.
L’étendue estimée est tirée des statistiques de la colonne géométrique. Cette méthode est généralement plus rapide que le calcul
de l’étendue exacte de la table à l’aide de ST_Extent ou ST_3DExtent.
Le comportement par défaut est d’utiliser également les statistiques collectées à partir des tables enfants (tables avec INHERITS)
si elles sont disponibles. Si parent_only est défini à VRAI, seules les statistiques de la table donnée sont utilisées et les tables
enfants sont ignorées.
Pour PostgreSQL >= 8.0.0 les statistiques sont collectées par VACUUM ANALYZE et l’étendue du résultat sera d’environ 95%
de l’étendue réelle. Pour PostgreSQL < 8.0.0 les statistiques sont collectées en exécutant update_geometry_stats() et
l’étendue du résultat sera exacte.
Note
En l’absence de statistiques (table vide ou pas d’ANALYZE), cette fonction renvoie NULL. Avant la version 1.5.4, une
exception était levée.
Disponibilité : 1.0.0
Modifié : 2.1.0. Jusqu’à la version 2.0.x, cette fonction était appelée ST_Estimated_Extent.
Exemples
Voir aussi
ST_Extent, ST_3DExtent
7.18.4 ST_Expand
ST_Expand — Renvoie une boîte de délimitation développée à partir d’une autre boîte de délimitation ou d’une géométrie.
Synopsis
Description
Renvoie une boîte de délimitation développée à partir de la boîte de délimitation de l’entrée, soit en spécifiant une distance unique
avec laquelle la boîte doit être développée sur les deux axes, soit en spécifiant une distance de développement pour chaque axe.
Utilise la double précision. Peut être utilisé pour les requêtes de distance, ou pour ajouter un filtre de boîte de délimitation à une
requête afin de tirer parti d’un index spatial.
Outre la version de ST_Expand acceptant et renvoyant une géométrie, des variantes sont fournies qui acceptent et renvoient des
types de données box2d et box3d.
Les distances sont exprimées dans les unités du système de référence spatiale de l’entrée.
ST_Expand est similaire à ST_Buffer, mais alors que la mise en mémoire tampon étend une géométrie dans toutes les directions,
ST_Expand étend la boîte de délimitation le long de chaque axe.
Note
Avant la version 1.3, ST_Expand était utilisé en conjonction avec ST_Distance pour effectuer des requêtes de distance
indexables. Par exemple, geom && ST_Expand(’POINT(10 20)’, 10) AND ST_Distance(geom,
’POINT(10 20)’) < 10. Cette fonction a été remplacée par la fonction ST_DWithin, plus simple et plus effi-
cace.
Disponibilité : 1.5.0 comportement modifié pour afficher les coordonnées en double précision au lieu des coordonnées float4.
Amélioration : 2.0.0 introduction du support TIN, Triangles et surfaces polyédriques.
Amélioration : 2.3.0 : prise en charge de l’expansion d’une boîte par différentes quantités dans différentes dimensions.
Cette fonction prend en charge les triangles et les réseaux irréguliers triangulés (TIN).
Exemples
Note
Les exemples ci-dessous utilisent l’Atlas national américain Equal Area (SRID=2163) qui est une projection en mètres.
--10 meter geometry astext rep of a expand box around a point geometry
SELECT ST_AsEWKT(ST_Expand(ST_GeomFromEWKT('SRID=2163;POINT(2312980 110676)'),10));
st_asewkt ←-
------------------------------------------------------------------------------------------------- ←-
Voir aussi
7.18.5 ST_Extent
Synopsis
Description
Une fonction agrégée qui renvoie une box2d boîte de délimitation qui délimite un ensemble de géométries.
Les coordonnées de la boîte de délimitation sont dans le système de référence spatiale des géométries d’entrée.
Le concept de ST_Extent est similaire à celui de SDO_AGGR_MBR d’Oracle Spatial/Locator.
Note
ST_Extent renvoie des boîtes avec seulement les coordonnées X et Y, même avec des géométries 3D. Pour renvoyer
les coordonnées XYZ, utilisez ST_3DExtent.
Note
La valeur box3d renvoyée ne contient pas de SRID. Utilisez ST_SetSRID pour la convertir en une géométrie avec des
métadonnées SRID. Le SRID est le même que celui des géométries d’entrée.
Cette fonction prend en charge les triangles et les réseaux irréguliers triangulés (TIN).
Exemples
Note
Les exemples ci-dessous utilisent le plan de l’État du Massachusetts (SRID=2249)
bextent | name
----------------------------------------------------+----------------
BOX(778783.5625 2951741.25,794875.8125 2970042.75) | A
BOX(751315.8125 2919164.75,765202.6875 2935417.25) | B
BOX(739651.875 2917394.75,756688.375 2935866) | C
bextent
--------------------------------------------------------------------------------
SRID=2249;POLYGON((739651.875 2908247.25,739651.875 2970042.75,794875.8125 2970042.75,
794875.8125 2908247.25,739651.875 2908247.25))
Voir aussi
7.18.6 ST_3DExtent
Synopsis
Description
Une fonction d’agrégation qui renvoie une box3d (y compris l’ordonnée Z) qui délimite un ensemble de géométries.
Les coordonnées de la boîte de délimitation sont dans le système de référence spatiale des géométries d’entrée.
Note
La valeur box3d renvoyée ne contient pas de SRID. Utilisez ST_SetSRID pour la convertir en une géométrie avec des
métadonnées SRID. Le SRID est le même que celui des géométries d’entrée.
Cette fonction prend en charge les triangles et les réseaux irréguliers triangulés (TIN).
Manuel PostGIS 3.4.0dev 440 / 870
Exemples
b3extent
--------------------
BOX3D(1 0 0,4 2 2)
Voir aussi
7.18.7 ST_MakeBox2D
Synopsis
Description
Crée une box2d définie par deux géométries de points. Ceci est utile pour effectuer des requêtes sur des intervalles.
Exemples
--Return all features that fall reside or partly reside in a US national atlas coordinate ←-
bounding box
--It is assumed here that the geometries are stored with SRID = 2163 (US National atlas ←-
equal area)
SELECT feature_id, feature_name, geom
FROM features
WHERE geom && ST_SetSRID(ST_MakeBox2D(ST_Point(-989502.1875, 528439.5625),
ST_Point(-987121.375 ,529933.1875)),2163)
Voir aussi
7.18.8 ST_3DMakeBox
Synopsis
Description
Exemples
--bb3d--
--------
BOX3D(-989502.1875 528439.5625 10,-987121.375 529933.1875 10)
Voir aussi
7.18.9 ST_XMax
Synopsis
Description
Note
Bien que cette fonction ne soit définie que pour box3d, elle fonctionne également pour box2d et les valeurs
géométriques en raison du moulage automatique. Cependant, elle n’acceptera pas de représentation textuelle de
la géométrie ou de la box2d, car ces dernières ne sont pas soumises à la conversion automatique.
Exemples
Voir aussi
7.18.10 ST_XMin
Synopsis
Description
Note
Bien que cette fonction ne soit définie que pour box3d, elle fonctionne également pour box2d et les valeurs
géométriques en raison du moulage automatique. Cependant, elle n’acceptera pas de représentation textuelle de
la géométrie ou de la box2d, car celles-ci ne sont pas coulées automatiquement.
Exemples
Voir aussi
7.18.11 ST_YMax
Synopsis
Description
Note
Bien que cette fonction ne soit définie que pour box3d, elle fonctionne également pour box2d et les valeurs
géométriques en raison du moulage automatique. Cependant, elle n’acceptera pas de représentation textuelle de
la géométrie ou de la box2d, car celles-ci ne sont pas coulées automatiquement.
Exemples
Voir aussi
7.18.12 ST_YMin
Synopsis
Description
Note
Bien que cette fonction ne soit définie que pour box3d, elle fonctionne également pour box2d et les valeurs
géométriques en raison du moulage automatique. Cependant, elle n’acceptera pas de représentation textuelle de
la géométrie ou de la box2d, car celles-ci ne sont pas coulées automatiquement.
Exemples
Voir aussi
7.18.13 ST_ZMax
Synopsis
Description
Note
Bien que cette fonction ne soit définie que pour box3d, elle fonctionne également pour box2d et les valeurs
géométriques en raison du moulage automatique. Cependant, elle n’acceptera pas de représentation textuelle de
la géométrie ou de la box2d, car celles-ci ne sont pas coulées automatiquement.
Exemples
Voir aussi
7.18.14 ST_ZMin
Synopsis
Description
Note
Bien que cette fonction ne soit définie que pour box3d, elle fonctionne également pour box2d et les valeurs
géométriques en raison du moulage automatique. Cependant, elle n’acceptera pas de représentation textuelle de
la géométrie ou de la box2d, car celles-ci ne sont pas coulées automatiquement.
Exemples
Voir aussi
7.19.1 ST_LineInterpolatePoint
Synopsis
Description
Retourne un point interpolé sur une ligne. Le premier argument doit être une LINESTRING. Le second argument est un float8
entre 0 et 1 représentant la fraction de la longueur totale de la ligne où le point doit être situé.
Voir ST_LineLocatePoint pour calculer l’emplacement de la ligne la plus proche d’un point.
Note
Cette fonction calcule des points en 2D et interpole ensuite les valeurs de Z et M, tandis que ST_3DLineInterpolatePoint
calcule des points en 3D et n’interpole que la valeur M.
Manuel PostGIS 3.4.0dev 448 / 870
Note
Depuis la version 1.1.1 cette fonction interpole aussi les valeurs M et Z (lorsqu’elles sont présentes), les versions
précédentes renvoient des valeurs M et Z à 0.0.
Exemples
Voir aussi
7.19.2 ST_3DLineInterpolatePoint
Synopsis
Description
Retourne un point interpolé sur une ligne. Le premier argument doit être une LINESTRING. Le second argument est un float8
entre 0 et 1 représentant la fraction de la longueur totale de la ligne où le point doit être situé.
Note
ST_LineInterpolatePoint calcule des points en 2D et interpole ensuite les valeurs de Z et M, alors que cette fonction
calcule des points en 3D et n’interpole que la valeur M.
Disponibilité : 3.0.0
Exemples
st_asetext
----------------
POINT Z (59.0675892910822 84.0675892910822 79.0846904776219)
Voir aussi
7.19.3 ST_LineInterpolatePoints
ST_LineInterpolatePoints — Renvoie des points interpolés le long d’une ligne à un intervalle fractionnaire.
Synopsis
Description
Renvoie un ou plusieurs points interpolés le long d’une ligne à un intervalle fractionnaire. Le premier argument doit être
une LINESTRING. Le second argument est un float8 entre 0 et 1 représentant l’espacement entre les points en tant que
fraction de la longueur de la ligne. Si le troisième argument est faux, un seul point sera construit (ce qui est équivalent à
ST_LineInterpolatePoint).
Si le résultat a zéro ou un point, il est retourné sous forme de POINT. S’il a deux points ou plus, il est retourné sous la forme
d’un MULTIPOINT.
Disponibilité : 2.5.0
Exemples
Voir aussi
ST_LineInterpolatePoint, ST_LineLocatePoint
7.19.4 ST_LineLocatePoint
ST_LineLocatePoint — Renvoie l’emplacement fractionnaire du point le plus proche d’un point sur une ligne.
Synopsis
Description
Renvoie un flottant compris entre 0 et 1 représentant l’emplacement du point le plus proche du point donné sur une LineString,
en tant que fraction de la ligne 2D longueur.
Vous pouvez utiliser l’emplacement renvoyé pour extraire un point (ST_LineInterpolatePoint) ou une sous-ligne (ST_LineSubstring).
Cette méthode est utile pour calculer approximativement le nombre d’adresses
Disponibilité : 1.1.0
Modifié : 2.1.0. Jusqu’à la version 2.0.x, cette fonction était appelée ST_Line_Locate_Point.
Exemples
--Rough approximation of finding the street number of a point along the street
--Note the whole foo thing is just to generate dummy data that looks
--like house centroids and street
--We use ST_DWithin to exclude
--houses too far away from the street to be considered on the street
SELECT ST_AsText(house_loc) As as_text_house_loc,
startstreet_num +
CAST( (endstreet_num - startstreet_num)
* ST_LineLocatePoint(street_line, house_loc) As integer) As ←-
street_num
FROM
(SELECT ST_GeomFromText('LINESTRING(1 2, 3 4)') As street_line,
ST_Point(x*1.01,y*1.03) As house_loc, 10 As startstreet_num,
20 As endstreet_num
FROM generate_series(1,3) x CROSS JOIN generate_series(2,4) As y)
As foo
WHERE ST_DWithin(street_line, house_loc, 0.2);
as_text_house_loc | street_num
-------------------+------------
POINT(1.01 2.06) | 10
POINT(2.02 3.09) | 15
POINT(3.03 4.12) | 20
Voir aussi
7.19.5 ST_LineSubstring
ST_LineSubstring — Renvoie la partie d’une ligne située entre deux emplacements fractionnaires.
Synopsis
Description
Calcule la ligne qui est la section de la ligne d’entrée commençant et se terminant aux emplacements fractionnaires donnés.
Le premier argument doit être un LINESTRING. Les deuxième et troisième arguments sont des valeurs dans l’intervalle [0,
1] représentant les emplacements de début et de fin en tant que fractions de la longueur de la ligne. Les valeurs Z et M sont
interpolées pour les points d’extrémité ajoutés, le cas échéant.
Si startfraction et endfraction ont la même valeur, cela équivaut à ST_LineInterpolatePoint.
Note
Cette méthode ne fonctionne qu’avec les LINESTRING. Pour l’utiliser sur des MULTILINESTRINGs contigues, il faut
d’abord les joindre avec ST_LineMerge.
Note
Depuis la version 1.1.1, cette fonction interpole les valeurs de M et Z. Les versions précédentes fixent Z et M à des
valeurs non spécifiées.
Exemples
Une LineString vue avec un intervalle tous les 1/3 (0.333, 0.666)
SELECT ST_AsText(ST_LineSubstring( 'LINESTRING (20 180, 50 20, 90 80, 120 40, 180 150)', ←-
0.333, 0.666));
------------------------------------------------------------------------------------------------ ←-
Une requête pour découper une LineString en sections de longueur 100 ou moins. Elle utilise generate_series() avec un
CROSS JOIN LATERAL pour produire l’équivalent d’une boucle FOR.
WITH data(id, geom) AS (VALUES
( 'A', 'LINESTRING( 0 0, 200 0)'::geometry ),
( 'B', 'LINESTRING( 0 100, 350 100)'::geometry ),
( 'C', 'LINESTRING( 0 200, 50 200)'::geometry )
)
SELECT id, i,
ST_AsText( ST_LineSubstring( geom, startfrac, LEAST( endfrac, 1 )) ) AS geom
FROM (
SELECT id, geom, ST_Length(geom) len, 100 sublen FROM data
) AS d
CROSS JOIN LATERAL (
SELECT i, (sublen * i) / len AS startfrac,
(sublen * (i+1)) / len AS endfrac
FROM generate_series(0, floor( len / sublen )::integer ) AS t(i)
-- skip last i if line length is exact multiple of sublen
WHERE (sublen * i) / len <> 1.0
) AS d2;
id | i | geom
----+---+-----------------------------
A | 0 | LINESTRING(0 0,100 0)
A | 1 | LINESTRING(100 0,200 0)
B | 0 | LINESTRING(0 100,100 100)
B | 1 | LINESTRING(100 100,200 100)
B | 2 | LINESTRING(200 100,300 100)
B | 3 | LINESTRING(300 100,350 100)
C | 0 | LINESTRING(0 200,50 200)
Voir aussi
7.19.6 ST_LocateAlong
ST_LocateAlong — Renvoie le(s) point(s) d’une géométrie qui correspond(ent) à une valeur de mesure.
Synopsis
Description
Renvoie le(s) emplacement(s) le long d’une géométrie mesurée qui possède(nt) les valeurs de mesure données. Le résultat est un
point ou un multipoint. Les entrées polygonales ne sont pas prises en charge.
Si offset est fourni, le résultat est décalé à gauche ou à droite de la ligne d’entrée de la distance spécifiée. Un décalage positif
se fera vers la gauche, et un décalage négatif vers la droite.
Note
Cette fonction n’est utilisée que pour les géométries linéaires avec une composante M.
Exemples
SELECT ST_AsText(
ST_LocateAlong(
'MULTILINESTRINGM((1 2 3, 3 4 2, 9 4 3),(1 2 3, 5 4 5))'::geometry,
3 ));
----------------------------------
MULTIPOINT M ((1 2 3),(9 4 3),(1 2 3))
Voir aussi
7.19.7 ST_LocateBetween
ST_LocateBetween — Renvoie les parties d’une géométrie qui correspondent à un intervalle de mesure.
Synopsis
geometry ST_LocateBetween(geometry geom, float8 measure_start, float8 measure_end, float8 offset = 0);
Description
Renvoie une géométrie (collection) contenant les parties de la géométrie mesurée en entrée qui correspondent à l’intervalle de
mesure spécifié (inclusivement).
Si le offset est fourni, le résultat est décalé à gauche ou à droite de la ligne d’entrée de la distance spécifiée. Un décalage
positif se fera vers la gauche, et un décalage négatif vers la droite.
Couper un POLYGONE non convexe peut produire une géométrie non valide.
Manuel PostGIS 3.4.0dev 455 / 870
Exemples
SELECT ST_AsText(
ST_LocateBetween(
'MULTILINESTRING M ((1 2 3, 3 4 2, 9 4 3),(1 2 3, 5 4 5))':: geometry,
1.5, 3 ));
------------------------------------------------------------------------
GEOMETRYCOLLECTION M (LINESTRING M (1 2 3,3 4 2,9 4 3),POINT M (1 2 3))
Une LineString avec la section entre les mesures 2 et 8, décalée vers la gauche
SELECT ST_AsText( ST_LocateBetween(
ST_AddMeasure('LINESTRING (20 180, 50 20, 100 120, 180 20)', 0, 10),
2, 8,
20
));
------------------------------------------------------------------------
MULTILINESTRING((54.49835019899045 104.53426957938231,58.70056060327303 ←-
82.12248075654186,69.16695286779743 103.05526528559065,82.11145618000168 ←-
128.94427190999915,84.24893681714357 132.32493442618113,87.01636951231555 ←-
135.21267035596549,90.30307285299679 137.49198684843182,93.97759758337769 ←-
139.07172433557758,97.89298381958797 139.8887023914453,101.89263860095893 ←-
139.9102465862721,105.81659870902816 139.13549527600819,109.50792827749828 ←-
137.5954340631298,112.81899532549731 135.351656550512,115.6173761888606 ←-
132.49390095108848,145.31017306064817 95.37790486135405))
Voir aussi
ST_LocateAlong, ST_LocateBetweenElevations
Manuel PostGIS 3.4.0dev 456 / 870
7.19.8 ST_LocateBetweenElevations
ST_LocateBetweenElevations — Renvoie les parties d’une géométrie qui se trouvent dans un intervalle d’élévation (Z).
Synopsis
Description
Renvoie une géométrie (collection) contenant les parties d’une géométrie qui se trouvent dans une plage d’élévation (Z).
Couper un POLYGONE non convexe peut produire une géométrie non valide.
Disponibilité : 1.4.0
Amélioration : 3.0.0 - ajout de la prise en charge du POLYGONE, du TIN et du TRIANGLE.
Exemples
SELECT ST_AsText(
ST_LocateBetweenElevations(
'LINESTRING(1 2 3, 4 5 6)'::geometry,
2, 4 ));
st_astext
-----------------------------------
MULTILINESTRING Z ((1 2 3,2 3 4))
SELECT ST_AsText(
ST_LocateBetweenElevations(
'LINESTRING(1 2 6, 4 5 -1, 7 8 9)',
6, 9)) As ewelev;
ewelev
-----------------------------------------------------------------------
GEOMETRYCOLLECTION Z (POINT Z (1 2 6),LINESTRING Z (6.1 7.1 6,7 8 9))
Voir aussi
ST_Dump, ST_LocateBetween
7.19.9 ST_InterpolatePoint
ST_InterpolatePoint — Renvoie la mesure interpolée d’une géométrie la plus proche d’un point.
Synopsis
Description
Renvoie une valeur de mesure interpolée d’une géométrie linéaire mesurée à l’emplacement le plus proche du point donné.
Note
Cette fonction n’est utilisée que pour les géométries linéaires avec une composante M.
Disponibilité : 2.0.0
Exemples
Voir aussi
7.19.10 ST_AddMeasure
Synopsis
Description
Renvoie une géométrie dérivée avec des valeurs de mesure interpolées linéairement entre les points de départ et d’arrivée. Si
la géométrie n’a pas de dimension de mesure, une dimension est ajoutée. Si la géométrie a une dimension de mesure, elle est
remplacée par de nouvelles valeurs. Seuls les LINESTRINGS et MULTILINESTRINGS sont pris en charge.
Disponibilité : 1.5.0
Exemples
SELECT ST_AsText(ST_AddMeasure(
ST_GeomFromEWKT('LINESTRING(1 0, 2 0, 4 0)'),1,4)) As ewelev;
ewelev
--------------------------------
LINESTRINGM(1 0 1,2 0 2,4 0 4)
SELECT ST_AsText(ST_AddMeasure(
ST_GeomFromEWKT('LINESTRING(1 0 4, 2 0 4, 4 0 4)'),10,40)) As ewelev;
ewelev
Manuel PostGIS 3.4.0dev 458 / 870
----------------------------------------
LINESTRING(1 0 4 10,2 0 4 20,4 0 4 40)
SELECT ST_AsText(ST_AddMeasure(
ST_GeomFromEWKT('LINESTRINGM(1 0 4, 2 0 4, 4 0 4)'),10,40)) As ewelev;
ewelev
----------------------------------------
LINESTRINGM(1 0 10,2 0 20,4 0 40)
SELECT ST_AsText(ST_AddMeasure(
ST_GeomFromEWKT('MULTILINESTRINGM((1 0 4, 2 0 4, 4 0 4),(1 0 4, 2 0 4, 4 0 4))'),10,70)) As ←-
ewelev;
ewelev
-----------------------------------------------------------------
MULTILINESTRINGM((1 0 10,2 0 20,4 0 40),(1 0 40,2 0 50,4 0 70))
7.20.1 ST_IsValidTrajectory
Synopsis
Description
Teste si une géométrie encode une trajectoire valide. Une trajectoire valide est représentée comme une LINESTRING avec des
mesures (valeurs M). Les valeurs de mesure doivent augmenter de chaque sommet au suivant.
Les trajectoires valides sont attendues comme entrées pour des fonctions spatio-temporelles telles que ST_ClosestPointOfApproach
Disponibilité : 2.2.0
Exemples
-- A valid trajectory
SELECT ST_IsValidTrajectory(ST_MakeLine(
ST_MakePointM(0,0,1),
ST_MakePointM(0,1,2))
);
t
-- An invalid trajectory
SELECT ST_IsValidTrajectory(ST_MakeLine(ST_MakePointM(0,0,1), ST_MakePointM(0,1,0)));
NOTICE: Measure of vertex 1 (0) not bigger than measure of vertex 0 (1)
st_isvalidtrajectory
----------------------
f
Manuel PostGIS 3.4.0dev 459 / 870
Voir aussi
ST_ClosestPointOfApproach
7.20.2 ST_ClosestPointOfApproach
ST_ClosestPointOfApproach — Renvoie une mesure au point d’approche le plus proche de deux trajectoires.
Synopsis
Description
Retourne la plus petite mesure à laquelle les points interpolés le long des trajectoires données sont à la plus petite distance.
Les entrées doivent être des trajectoires valides comme vérifié par ST_IsValidTrajectory. Null est retourné si les trajectoires ne
se chevauchent pas dans leurs plages M.
Voir ST_LocateAlong pour obtenir les points réels à la mesure donnée.
Disponibilité : 2.2.0
Exemples
-- Return the time in which two objects moving between 10:00 and 11:00
-- are closest to each other and their distance at that point
WITH inp AS ( SELECT
ST_AddMeasure('LINESTRING Z (0 0 0, 10 0 5)'::geometry,
extract(epoch from '2015-05-26 10:00'::timestamptz),
extract(epoch from '2015-05-26 11:00'::timestamptz)
) a,
ST_AddMeasure('LINESTRING Z (0 2 10, 12 1 2)'::geometry,
extract(epoch from '2015-05-26 10:00'::timestamptz),
extract(epoch from '2015-05-26 11:00'::timestamptz)
) b
), cpa AS (
SELECT ST_ClosestPointOfApproach(a,b) m FROM inp
), points AS (
SELECT ST_Force3DZ(ST_GeometryN(ST_LocateAlong(a,m),1)) pa,
ST_Force3DZ(ST_GeometryN(ST_LocateAlong(b,m),1)) pb
FROM inp, cpa
)
SELECT to_timestamp(m) t,
ST_Distance(pa,pb) distance
FROM points, cpa;
t | distance
-------------------------------+------------------
2015-05-26 10:45:31.034483+02 | 1.96036833151395
Voir aussi
7.20.3 ST_DistanceCPA
ST_DistanceCPA — Renvoie la distance entre le point d’approche le plus proche de deux trajectoires.
Synopsis
Description
Renvoie la distance minimale à laquelle deux objets en mouvement ont pu se trouver l’un par rapport à l’autre.
Les entrées doivent être des trajectoires valides comme vérifié par ST_IsValidTrajectory. Null est retourné si les trajectoires ne
se chevauchent pas dans leurs plages M.
Disponibilité : 2.2.0
Exemples
-- Return the minimum distance of two objects moving between 10:00 and 11:00
WITH inp AS ( SELECT
ST_AddMeasure('LINESTRING Z (0 0 0, 10 0 5)'::geometry,
extract(epoch from '2015-05-26 10:00'::timestamptz),
extract(epoch from '2015-05-26 11:00'::timestamptz)
) a,
ST_AddMeasure('LINESTRING Z (0 2 10, 12 1 2)'::geometry,
extract(epoch from '2015-05-26 10:00'::timestamptz),
extract(epoch from '2015-05-26 11:00'::timestamptz)
) b
)
SELECT ST_DistanceCPA(a,b) distance FROM inp;
distance
------------------
1.96036833151395
Voir aussi
7.20.4 ST_CPAWithin
ST_CPAWithin — Teste si le point d’approche le plus proche de deux trajectoires se trouve dans la distance spécifiée.
Synopsis
Description
Teste si deux objets en mouvement ont déjà été plus proches que la distance spécifiée.
Les entrées doivent être des trajectoires valides comme vérifié par ST_IsValidTrajectory. False est retourné si les trajectoires ne
se chevauchent pas dans leurs plages M.
Disponibilité : 2.2.0
Exemples
st_cpawithin | distance
--------------+------------------
t | 1.96521473776207
Voir aussi
7.21.1 postgis_sfcgal_version
Synopsis
text postgis_sfcgal_version(void);
Description
Cette fonction prend en charge les triangles et les réseaux irréguliers triangulés (TIN).
Manuel PostGIS 3.4.0dev 462 / 870
Voir aussi
postgis_sfcgal_full_version
7.21.2 postgis_sfcgal_full_version
postgis_sfcgal_full_version — Retourne la version complète de SFCGAL en cours d’utilisation, y compris les versions CGAL
et Boost
Synopsis
text postgis_sfcgal_full_version(void);
Description
Retourne la version complète de SFCGAL utilisée, y compris les versions CGAL et Boost
Disponibilité : 3.3.0
Cette fonction prend en charge les triangles et les réseaux irréguliers triangulés (TIN).
Voir aussi
postgis_sfcgal_version
7.21.3 ST_3DArea
ST_3DArea — Calcule la surface des géométries de surface 3D. Retourne 0 pour les solides.
Synopsis
floatST_3DArea(geometry geom1);
Description
Disponibilité : 2.1.0
Cette méthode implémente la spécification SQL/MM. SQL-MM IEC 13249-3: 8.1, 10.5
Cette fonction prend en charge les triangles et les réseaux irréguliers triangulés (TIN).
Manuel PostGIS 3.4.0dev 463 / 870
Exemples
Remarque : par défaut, une PolyhedralSurface construite à partir de WKT est une géométrie de surface, et non un solide. Elle
possède donc une surface. Une fois convertie en solide, elle n’a plus de surface.
SELECT ST_3DArea(geom) As cube_surface_area,
ST_3DArea(ST_MakeSolid(geom)) As solid_surface_area
FROM (SELECT 'POLYHEDRALSURFACE( ((0 0 0, 0 0 1, 0 1 1, 0 1 0, 0 0 0)),
((0 0 0, 0 1 0, 1 1 0, 1 0 0, 0 0 0)),
((0 0 0, 1 0 0, 1 0 1, 0 0 1, 0 0 0)),
((1 1 0, 1 1 1, 1 0 1, 1 0 0, 1 1 0)),
((0 1 0, 0 1 1, 1 1 1, 1 1 0, 0 1 0)),
((0 0 1, 1 0 1, 1 1 1, 0 1 1, 0 0 1)) )'::geometry) As f(geom);
cube_surface_area | solid_surface_area
-------------------+--------------------
6 | 0
Voir aussi
7.21.4 ST_3DConvexHull
Synopsis
Description
Disponibilité : 3.3.0
Cette fonction prend en charge les triangles et les réseaux irréguliers triangulés (TIN).
Exemples
POLYHEDRALSURFACE Z (((1 5 3,9 5 3,0 0 5,1 5 3)),((1 5 3,0 0 5,5 7 6,1 5 3)),((5 7 6,5 7 ←-
5,1 5 3,5 7 6)),((0 0 5,6 3 5,5 7 6,0 0 5)),((6 3 5,9 5 3,5 7 6,6 3 5)),((0 0 5,9 5 3,6 ←-
3 5,0 0 5)),((9 5 3,5 7 5,5 7 6,9 5 3)),((1 5 3,5 7 5,9 5 3,1 5 3)))
Manuel PostGIS 3.4.0dev 464 / 870
Voir aussi
ST_Letters, ST_AsX3D
7.21.5 ST_3DIntersection
Synopsis
Description
Renvoie une géométrie qui est la partie partagée entre geom1 et geom2.
Disponibilité : 2.1.0
Manuel PostGIS 3.4.0dev 465 / 870
Cette fonction prend en charge les triangles et les réseaux irréguliers triangulés (TIN).
Exemples
Les images 3D ont été générées à l’aide de PostGIS ST_AsX3D et rendues en HTML à l’aide de X3Dom HTML Javascript
rendering library.
SELECT ST_3DIntersection(geom1,geom2)
SELECT ST_Extrude(ST_Buffer( ←- FROM ( SELECT ST_Extrude(ST_Buffer( ←-
ST_GeomFromText('POINT(100 90)'), ST_GeomFromText('POINT(100 90)'),
50, 'quad_segs=2'),0,0,30) AS geom1, 50, 'quad_segs=2'),0,0,30) AS geom1,
ST_Extrude(ST_Buffer( ←- ST_Extrude(ST_Buffer( ←-
ST_GeomFromText('POINT(80 80)'), ST_GeomFromText('POINT(80 80)'),
50, 'quad_segs=1'),0,0,30) AS geom2; 50, 'quad_segs=1'),0,0,30) AS geom2 ) As ←-
t;
Lignes et polygones en 3D
SELECT ST_AsText(ST_3DIntersection(linestring, polygon)) As wkt
FROM ST_GeomFromText('LINESTRING Z (2 2 6,1.5 1.5 7,1 1 8,0.5 0.5 8,0 0 10)') AS ←-
linestring
CROSS JOIN ST_GeomFromText('POLYGON((0 0 8, 0 1 8, 1 1 8, 1 0 8, 0 0 8))') AS polygon;
wkt
--------------------------------
LINESTRING Z (1 1 8,0.5 0.5 8)
TIN Z (((0 0 0,0 0 0.5,0 0.5 0.5,0 0 0)),((0 0.5 0,0 0 0,0 0.5 0.5,0 0.5 0)))
L’intersection de 2 solides qui résulte en une intersection volumétrique est également un solide (ST_Dimension renvoie 3)
SELECT ST_AsText(ST_3DIntersection( ST_Extrude(ST_Buffer('POINT(10 20)'::geometry,10,1) ←-
,0,0,30),
ST_Extrude(ST_Buffer('POINT(10 20)'::geometry,10,1),2,0,10) ));
7.21.6 ST_3DDifference
Synopsis
Description
Cette fonction prend en charge les triangles et les réseaux irréguliers triangulés (TIN).
Exemples
Les images 3D ont été générées à l’aide de PostGIS ST_AsX3D et rendues en HTML à l’aide de X3Dom HTML Javascript
rendering library.
SELECT ST_3DDifference(geom1,geom2)
FROM ( SELECT ST_Extrude(ST_Buffer( ←-
SELECT ST_Extrude(ST_Buffer( ←- ST_GeomFromText('POINT(100 90)'),
ST_GeomFromText('POINT(100 90)'), 50, 'quad_segs=2'),0,0,30) AS geom1,
50, 'quad_segs=2'),0,0,30) AS geom1, ST_Extrude(ST_Buffer( ←-
ST_Extrude(ST_Buffer( ←- ST_GeomFromText('POINT(80 80)'),
ST_GeomFromText('POINT(80 80)'), 50, 'quad_segs=1'),0,0,30) AS geom2 ) As ←-
50, 'quad_segs=1'),0,0,30) AS geom2; t;
Voir aussi
7.21.7 ST_3DUnion
Synopsis
Description
Disponibilité : 2.2.0
Manuel PostGIS 3.4.0dev 468 / 870
Cette fonction prend en charge les triangles et les réseaux irréguliers triangulés (TIN).
Variante agrégée: renvoie une géométrie qui est l’union 3D d’un ensemble de géométries. La fonction ST_3DUnion() est
une fonction "agrégée" dans la terminologie de PostgreSQL. Cela signifie qu’elle opère sur des lignes de données, de la même
manière que les fonctions SUM() et AVG() et, comme la plupart des agrégats, elle ignore les géométries NULL.
Exemples
Les images 3D ont été générées à l’aide de PostGIS ST_AsX3D et rendues en HTML à l’aide de X3Dom HTML Javascript
rendering library.
SELECT ST_3DUnion(geom1,geom2)
SELECT ST_Extrude(ST_Buffer( ←- FROM ( SELECT ST_Extrude(ST_Buffer( ←-
ST_GeomFromText('POINT(100 90)'), ST_GeomFromText('POINT(100 90)'),
50, 'quad_segs=2'),0,0,30) AS geom1, 50, 'quad_segs=2'),0,0,30) AS geom1,
ST_Extrude(ST_Buffer( ←- ST_Extrude(ST_Buffer( ←-
ST_GeomFromText('POINT(80 80)'), ST_GeomFromText('POINT(80 80)'),
50, 'quad_segs=1'),0,0,30) AS geom2; 50, 'quad_segs=1'),0,0,30) AS geom2 ) As ←-
t;
Voir aussi
7.21.8 ST_AlphaShape
Synopsis
Description
Calcule la forme alpha des points d’une géométrie. Une forme alpha est une géométrie polygonale (généralement) concave qui
contient tous les sommets de l’entrée et dont les sommets sont un sous-ensemble des sommets de l’entrée. Une forme alpha
permet de se rapprocher davantage de la forme de l’entrée que la forme produite par l’ enveloppe convexe.
La "proximité de l’ajustement" est contrôlée par le paramètre alpha, qui peut prendre des valeurs comprises entre 0 et l’infini.
Des valeurs alpha plus petites produisent des résultats plus concaves. Les valeurs alpha supérieures à une certaine valeur dépen-
dant des données produisent l’enveloppe convexe de l’entrée.
Note
Conformément à l’implémentation du CGAL, la valeur alpha est le carré du rayon du disque utilisé dans l’algorithme
Alpha-Shape pour "éroder" la triangulation de Delaunay des points d’entrée. Voir CGAL Alpha-Shapes pour plus
d’informations. Cela diffère de la définition originale des formes alpha, qui définit alpha comme le rayon du disque
d’érosion.
La forme calculée ne contient pas de trous, sauf si l’argument facultatif allow_holes est spécifié comme true.
Cette fonction calcule effectivement une enveloppe concave d’une géométrie d’une manière similaire à ST_ConcaveHull, mais
utilise CGAL et un algorithme différent.
Disponibilité : 3.3.0 - nécessite SFCGAL >= 1.4.1.
Exemples
(75 84),(75 77),(81 29),(77 73),(41 42),(83 72),(23 36),(89 53),(27 57),(57 ←-
97),(27 77),(39 88),(60 81),
(80 72),(54 32),(55 26),(62 22),(70 20),(76 27),(84 35),(87 42),(82 54),(83 ←-
64),(69 86),(60 90),(50 86),(43 80),(36 73),
(36 68),(40 75),(24 67),(23 60),(26 44),(28 33),(40 32),(43 19),(65 16),(73 ←-
16),(38 46),(31 59),(34 86),(45 90),(64 97))'::geometry,80.2));
POLYGON((89 53,91 50,87 42,90 30,88 29,84 19,78 16,73 16,65 16,53 18,43 19,37 23,30 22,28 ←-
33,23 36,26 44,27 54,23 60,24 67,
27 77,24 82,26 85,34 86,39 88,45 90,49 95,52 98,57 97,64 97,72 95,76 88,75 84,83 ←-
72,85 71,88 58,89 53))
Forme alpha d’un MultiPoint, autorisant les trous (même exemple que ST_OptimalAlphaShape)
POLYGON((89 53,91 50,87 42,90 30,88 29,84 19,78 16,73 16,65 16,53 18,43 19,37 23,30 22,28 ←-
33,23 36,26 44,27 54,23 60,24 67,27 77,24 82,26 85,34 86,39 88,45 90,49 95,52 98,57 ←-
97,64 97,72 95,76 88,75 84,83 72,85 71,88 58,89 53),
(36 61,36 68,40 75,43 80,50 86,60 81,68 73,77 67,81 60,82 54,81 47,78 43,76 ←-
27,62 22,54 32,48 34,44 42,38 46,36 61))
Manuel PostGIS 3.4.0dev 471 / 870
Forme alpha d’un MultiPoint, autorisant les trous (même exemple que ST_ConcaveHull)
SELECT ST_AlphaShape(
'MULTIPOINT ((132 64), (114 64), (99 64), (81 64), (63 64), (57 49), (52 36), ←-
(46 20), (37 20), (26 20), (32 36), (39 55), (43 69), (50 84), (57 100), (63 ←-
118), (68 133), (74 149), (81 164), (88 180), (101 180), (112 180), (119 ←-
164), (126 149), (132 131), (139 113), (143 100), (150 84), (157 69), (163 ←-
51), (168 36), (174 20), (163 20), (150 20), (143 36), (139 49), (132 64), ←-
(99 151), (92 138), (88 124), (81 109), (74 93), (70 82), (83 82), (99 82), ←-
(112 82), (126 82), (121 96), (114 109), (110 122), (103 138), (99 151), (34 ←-
27), (43 31), (48 44), (46 58), (52 73), (63 73), (61 84), (72 71), (90 69) ←-
, (101 76), (123 71), (141 62), (166 27), (150 33), (159 36), (146 44), (154 ←-
53), (152 62), (146 73), (134 76), (143 82), (141 91), (130 98), (126 104), ←-
(132 113), (128 127), (117 122), (112 133), (119 144), (108 147), (119 153) ←-
, (110 171), (103 164), (92 171), (86 160), (88 142), (79 140), (72 124), ←-
(83 131), (79 118), (68 113), (63 102), (68 93), (35 45))'::geometry,102.2, ←-
true);
POLYGON((134 80,136 75,130 63,135 45,132 44,126 28,117 24,110 24,98 24,80 27,82 39,72 51,60 ←-
48,56 34,52 52,42 50,
34 54,39 66,40 81,34 90,36 100,40 116,36 123,39 128,51 129,58 132,68 135,74 ←-
142,78 147,86 146,96 146,
108 142,114 132,112 126,112 116,116 110,120 108,125 108,128 106,125 96,132 ←-
87,134 80))
Voir aussi
ST_ConcaveHull, ST_OptimalAlphaShape
7.21.9 ST_ApproximateMedialAxis
Synopsis
Description
Renvoie un axe médian approximatif pour l’entrée aréolaire en se basant sur son squelette. Utilise une API spécifique à SFC-
GAL lorsqu’elle est construite avec une version compatible (1.2.0+). Sinon, la fonction est juste une enveloppe autour de
ST_StraightSkeleton (cas le plus lent).
Disponibilité : 2.2.0
Cette fonction prend en charge les triangles et les réseaux irréguliers triangulés (TIN).
Exemples
Voir aussi
ST_StraightSkeleton
7.21.10 ST_ConstrainedDelaunayTriangles
ST_ConstrainedDelaunayTriangles — Renvoie une triangulation de Delaunay contrainte autour de la géométrie d’entrée donnée.
Synopsis
Description
Renvoie un Constrained Delaunay triangulation autour des sommets de la géométrie d’entrée. Le résultat est un TIN.
Exemples
Voir aussi
7.21.11 ST_Extrude
Synopsis
Description
Disponibilité : 2.1.0
Cette fonction prend en charge les triangles et les réseaux irréguliers triangulés (TIN).
Exemples
Les images 3D ont été générées à l’aide de PostGIS ST_AsX3D et rendues en HTML à l’aide de X3Dom HTML Javascript
rendering library.
SELECT ST_Buffer(ST_GeomFromText('POINT ←-
(100 90)'), ST_Extrude(ST_Buffer(ST_GeomFromText(' ←-
50, 'quad_segs=2'),0,0,30); POINT(100 90)'),
50, 'quad_segs=2'),0,0,30);
Ligne d’origine
Voir aussi
ST_AsX3D
7.21.12 ST_ForceLHR
Synopsis
Description
Disponibilité : 2.1.0
Cette fonction prend en charge les triangles et les réseaux irréguliers triangulés (TIN).
7.21.13 ST_IsPlanar
Synopsis
Description
Disponibilité : 2.2.0 : Ce point était documenté dans la version 2.1.0 mais a été accidentellement omis dans la version 2.1.
Cette fonction prend en charge les triangles et les réseaux irréguliers triangulés (TIN).
7.21.14 ST_IsSolid
ST_IsSolid — Teste si la géométrie est un solide. Aucun contrôle de validité n’est effectué.
Synopsis
Description
Disponibilité : 2.2.0
Cette fonction prend en charge les triangles et les réseaux irréguliers triangulés (TIN).
7.21.15 ST_MakeSolid
ST_MakeSolid — Transformer la géométrie dans un solide. Aucune vérification n’est effectuée. Pour obtenir un solide valide,
la géométrie d’entrée doit être une surface polyédrique fermée ou un TIN fermé.
Synopsis
Description
Disponibilité : 2.2.0
Cette fonction prend en charge les triangles et les réseaux irréguliers triangulés (TIN).
Manuel PostGIS 3.4.0dev 477 / 870
7.21.16 ST_MinkowskiSum
Synopsis
Description
Cette fonction effectue une somme de minkowski en 2D d’un point, d’une ligne ou d’un polygone avec un polygone.
Une somme de minkowski de deux géométries A et B est l’ensemble de tous les points qui sont la somme de n’importe quel
point de A et B. Les sommes de minkowski sont souvent utilisées dans la planification des mouvements et la conception assistée
par ordinateur. Plus de détails sur Wikipedia Addition de Minkowski.
Le premier paramètre peut être n’importe quelle géométrie 2D (point, ligne, polygone). Si une géométrie 3D est transmise, elle
sera convertie en 2D en forçant Z à 0, ce qui peut entraîner des cas d’invalidité. Le second paramètre doit être un polygone 2D.
La mise en œuvre utilise CGAL 2D Minkowskisum.
Disponibilité : 2.1.0
Exemples
Somme de Minkowski d’une ligne et d’un cercle polygonal où la ligne traverse le cercle
-- wkt --
Manuel PostGIS 3.4.0dev 478 / 870
-- wkt --
MULTIPOLYGON(
((70 115,100 135,175 175,225 225,70 115)),
((120 65,150 85,225 125,275 175,120 65))
)
7.21.17 ST_OptimalAlphaShape
ST_OptimalAlphaShape — Calcule une forme alpha entourant une géométrie en utilisant une valeur alpha "optimale".
Manuel PostGIS 3.4.0dev 479 / 870
Synopsis
Description
Calcule la forme alpha "optimale" des points d’une géométrie. La forme alpha est calculée en utilisant une valeur de α choisie
de telle sorte que :
1. le nombre d’éléments du polygone est égal ou inférieur à nb_components (qui vaut 1 par défaut)
2. tous les points d’entrée sont contenus dans la forme
Le résultat ne contiendra pas de trous à moins que l’argument facultatif allow_holes ne soit spécifié comme true.
Disponibilité : 3.3.0 - nécessite SFCGAL >= 1.4.1.
Exemples
POLYGON((89 53,91 50,87 42,90 30,88 29,84 19,78 16,73 16,65 16,53 18,43 19,37 23,30 22,28 ←-
33,23 36,
26 44,27 54,23 60,24 67,27 77,24 82,26 85,34 86,39 88,45 90,49 95,52 98,57 ←-
97,64 97,72 95,76 88,75 84,75 77,83 72,85 71,83 64,88 58,89 53))
Manuel PostGIS 3.4.0dev 480 / 870
Forme alpha optimale d’un MultiPoint, autorisant les trous (même exemple que ST_AlphaShape)
POLYGON((89 53,91 50,87 42,90 30,88 29,84 19,78 16,73 16,65 16,53 18,43 19,37 23,30 22,28 ←-
33,23 36,26 44,27 54,23 60,24 67,27 77,24 82,26 85,34 86,39 88,45 90,49 95,52 98,57 ←-
97,64 97,72 95,76 88,75 84,75 77,83 72,85 71,83 64,88 58,89 53),(36 61,36 68,40 75,43 ←-
80,50 86,60 81,68 73,77 67,81 60,82 54,81 47,78 43,81 29,76 27,70 20,62 22,55 26,54 ←-
32,48 34,44 42,38 46,36 61))
Voir aussi
ST_ConcaveHull, ST_AlphaShape
7.21.18 ST_Orientation
Synopsis
Description
Cette fonction ne s’applique qu’aux polygones. Elle renvoie -1 si le polygone est orienté dans le sens inverse des aiguilles d’une
montre et 1 s’il est orienté dans le sens des aiguilles d’une montre.
Manuel PostGIS 3.4.0dev 481 / 870
Disponibilité : 2.1.0
7.21.19 ST_StraightSkeleton
Synopsis
Description
Disponibilité : 2.1.0
Cette fonction prend en charge les triangles et les réseaux irréguliers triangulés (TIN).
Exemples
Polygone d’origine
Manuel PostGIS 3.4.0dev 482 / 870
7.21.20 ST_Tesselate
ST_Tesselate — Effectue la tessellation de la surface d’un polygone ou d’une surface polyédrique et renvoie un TIN ou une
collection de TINS
Synopsis
Description
Prend en entrée une surface telle que MULTI(POLYGON) ou POLYHEDRALSURFACE et renvoie une représentation TIN via
le processus de tessellation à l’aide de triangles.
Disponibilité : 2.1.0
Cette fonction prend en charge les triangles et les réseaux irréguliers triangulés (TIN).
Exemples
Manuel PostGIS 3.4.0dev 483 / 870
SELECT ST_Tesselate(ST_GeomFromText(' ←-
POLYHEDRALSURFACE Z( ((0 0 0, 0 0 1, 0 1 1, 0 1
((0 0 0, 0 1 0, 1 1 0, 1 0 0, 0 0 ←-
0)), ((0 0 0, 1 0 0, 1 0 1, 0 0 1, 0 0 0)),
((1 1 0, 1 1 1, 1 0 1, 1 0 0, 1 1 ←-
0)),
((0 1 0, 0 1 1, 1 1 1, 1 1 0, 0 1 ←-
SELECT ST_GeomFromText('POLYHEDRALSURFACE ←- 0)), ((0 0 1, 1 0 1, 1 1 1, 0 1 1, 0 0 1)) )'))
Z( ((0 0 0, 0 0 1, 0 1 1, 0 1 0, 0 0 0)),
Sortie ST_AsText :
((0 0 0, 0 1 0, 1 1 0, 1 ←-
0 0, 0 0 0)), ((0 0 0, 1 0 0, 1 0 1, 0 0 1,TIN
0 0Z 0)),
(((0 0 0,0 0 1,0 1 1,0 0 0)),((0 1 ←-
((1 1 0, 1 1 1, 1 0 1, 1 ←- 0,0 0 0,0 1 1,0 1 0)),
0 0, 1 1 0)), ((0 0 0,0 1 0,1 1 0,0 0 0)),
((0 1 0, 0 1 1, 1 1 1, 1 ←- ((1 0 0,0 0 0,1 1 0,1 0 0)),((0 0 ←-
1 0, 0 1 0)), ((0 0 1, 1 0 1, 1 1 1, 0 1 1, 0 0 1,1
1)) 0)');
0,1 0 1,0 0 1)),
((0 0 1,0 0 0,1 0 0,0 0 1)),
((1 1 0,1 1 1,1 0 1,1 1 0)),((1 0 ←-
0,1 1 0,1 0 1,1 0 0)),
((0 1 0,0 1 1,1 1 1,0 1 0)),((1 1 ←-
0,0 1 0,1 1 1,1 1 0)),
((0 1 1,1 0 1,1 1 1,0 1 1)),((0 1 ←-
1,0 0 1,1 0 1,0 1 1)))
Cube d’origine
SELECT
ST_Tesselate('POLYGON (( 10 190, ←-
10 70, 80 70, 80 130, 50 160, 120 160, 120 190,
Polygone d’origine
Polygone tessellé
Voir aussi
ST_ConstrainedDelaunayTriangles, ST_DelaunayTriangles
7.21.21 ST_Volume
ST_Volume — Calcule le volume d’un solide 3D. S’il est appliqué à des géométries de surface (même fermées), il renvoie 0.
Synopsis
Description
Disponibilité : 2.2.0
Cette fonction prend en charge les triangles et les réseaux irréguliers triangulés (TIN).
Cette méthode implémente la spécification SQL/MM. SQL-MM IEC 13249-3 : 9.1 (identique à ST_3DVolume)
Exemple
Lorsque des surfaces fermées sont créées avec WKT, elles sont traitées comme des surfaces aréolaires plutôt que comme des
surfaces solides. Pour les rendre solides, vous devez utiliser ST_MakeSolid. Les géométries aréolaires n’ont pas de volume.
Voici un exemple pour le démontrer.
SELECT ST_Volume(geom) As cube_surface_vol,
ST_Volume(ST_MakeSolid(geom)) As solid_surface_vol
FROM (SELECT 'POLYHEDRALSURFACE( ((0 0 0, 0 0 1, 0 1 1, 0 1 0, 0 0 0)),
((0 0 0, 0 1 0, 1 1 0, 1 0 0, 0 0 0)),
((0 0 0, 1 0 0, 1 0 1, 0 0 1, 0 0 0)),
((1 1 0, 1 1 1, 1 0 1, 1 0 0, 1 1 0)),
((0 1 0, 0 1 1, 1 1 1, 1 1 0, 0 1 0)),
((0 0 1, 1 0 1, 1 1 1, 0 1 1, 0 0 1)) )'::geometry) As f(geom);
cube_surface_vol | solid_surface_vol
------------------+-------------------
0 | 1
Voir aussi
Note
Pour que le mécanisme de verrouillage fonctionne correctement, le sérialisable niveau d’isolation de la transaction doit
être utilisé.
7.22.1 AddAuth
Synopsis
Description
Exemples
---Error--
ERROR: UPDATE where "gid" = '353' requires authorization 'priscilla'
Voir aussi
LockRow
7.22.2 CheckAuth
CheckAuth — Crée un déclencheur sur une table pour empêcher/autoriser les mises à jour (UPDATE) et les suppressions
(DELETE) de lignes en se basant sur le jeton d’autorisation.
Synopsis
Description
Crée un déclencheur sur une table pour empêcher/autoriser les mises à jour (UPDATE) et les suppressions (DELETE) de lignes
en se basant sur le jeton d’autorisation. Identifie les lignes en utilisant la colonne <rowid_col> .
Si a_schema_name n’est pas passé en entrée, alors la table est cherchée dans le schéma courant.
Note
Si un déclencheur d’autorisation existe déjà sur la table alors la fonction renvoie une erreur.
Si le support des transactions longues n’est pas activé alors la fonction lance une exception.
Disponibilité : 1.1.3
Exemples
Voir aussi
EnableLongTransactions
Manuel PostGIS 3.4.0dev 487 / 870
7.22.3 DisableLongTransactions
Synopsis
text DisableLongTransactions();
Description
Désactive le support des transactions longues. Cette fonction supprime les tables de métadonnées du support de transactions
longues, et supprime également tous les déclencheurs attachés aux tables pour lesquelles il y a une vérification de verrou.
Supprime la table de métadonnées nommée authorization_table et la vue nommée authorized_tables ainsi que
tous les déclencheurs nommés checkauthtrigger
Disponibilité : 1.1.3
Exemples
SELECT DisableLongTransactions();
--result--
Long transactions support disabled
Voir aussi
EnableLongTransactions
7.22.4 EnableLongTransactions
Synopsis
text EnableLongTransactions();
Description
Active le support des transactions longues. Cette fonction crée les tables de métadonnées requises. Elle doit être appelée une fois
avant d’utiliser les autres fonctions de cette section. L’appeler deux fois est inoffensif.
Crée une table de métadonnées nommée authorization_table et une vue nommée authorized_tables
Disponibilité : 1.1.3
Exemples
SELECT EnableLongTransactions();
--result--
Long transactions support enabled
Manuel PostGIS 3.4.0dev 488 / 870
Voir aussi
DisableLongTransactions
7.22.5 LockRow
Synopsis
integer LockRow(text a_schema_name, text a_table_name, text a_row_key, text an_auth_token, timestamp expire_dt);
integer LockRow(text a_table_name, text a_row_key, text an_auth_token, timestamp expire_dt);
integer LockRow(text a_table_name, text a_row_key, text an_auth_token);
Description
Définit le verrouillage/autorisation pour une ligne spécifique dans une table. an_auth_token est une valeur texte. expire_dt
est un timestamp qui a pour valeur par défaut now() + 1 heure. Renvoie 1 si le verrou a été attribué, 0 sinon (c’est-à-dire que la
rangée est déjà verrouillée par une autre auth.)
Disponibilité : 1.1.3
Exemples
--Joey has already locked the record and Priscilla is out of luck
SELECT LockRow('public', 'towns', '2', 'priscilla');
LockRow
-------
0
Voir aussi
UnlockRows
7.22.6 UnlockRows
Synopsis
Description
Supprime tous les verrous détenus par le jeton d’autorisation spécifié. Renvoie le nombre de verrous libérés.
Disponibilité : 1.1.3
Manuel PostGIS 3.4.0dev 489 / 870
Exemples
Voir aussi
LockRow
7.23.1 PostGIS_Extensions_Upgrade
PostGIS_Extensions_Upgrade — Packages et mises à jour des extensions PostGIS (par exemple postgis_raster, postgis_topology,
postgis_sfcgal) vers la version donnée ou la plus récente.
Synopsis
Description
Packages et mises à jour des extensions PostGIS vers la version donnée ou la plus récente. Seules les extensions que vous avez
installées dans la base de données seront packagées et mises à jour si nécessaire. Rapporte la version complète de PostGIS et les
informations sur la configuration de la compilation. C’est un raccourci pour faire plusieurs CREATE EXTENSION ... FROM
non packagée et ALTER EXTENSION ... UPDATE pour chaque extension PostGIS. Actuellement, il n’essaie de mettre à jour
que les extensions postgis, postgis_raster, postgis_sfcgal, postgis_topology, et postgis_tiger_geocoder.
Disponibilité : 2.5.0
Note
Modifié : 3.4.0 pour ajouter l’argument target_version.
Modifié : 3.3.0 support pour les mises à jour à partir de n’importe quelle version de PostGIS. Ne fonctionne pas sur
tous les systèmes.
Modifié : 3.0.0 pour repackager les extensions libres et supporter postgis_raster.
Exemples
SELECT PostGIS_Extensions_Upgrade();
postgis_extensions_upgrade
-------------------------------------------------------------------
Upgrade completed, run SELECT postgis_full_version(); for details
(1 row)
Voir aussi
7.23.2 PostGIS_Full_Version
PostGIS_Full_Version — Donne des informations complètes sur la version de PostGIS et la configuration du packaging.
Synopsis
text PostGIS_Full_Version();
Description
Donne des informations complètes sur la version de PostGIS et la configuration du packaging. Il fournit également des informa-
tions sur la synchronisation entre les bibliothèques et les scripts, suggérant des mises à niveau si nécessaire.
Amélioration : 3.4.0 inclut désormais les configurations supplémentaires PROJ NETWORK_ENABLED, URL_ENDPOINT et
DATABASE_PATH pour l’emplacement proj.db
Exemples
SELECT PostGIS_Full_Version();
postgis_full_version
----------------------------------------------------------------------------------
POSTGIS="3.4.0dev 3.3.0rc2-993-g61bdf43a7" [EXTENSION] PGSQL="160" GEOS="3.12.0dev-CAPI ←-
-1.18.0" SFCGAL="1.3.8" PROJ="7.2.1 NETWORK_ENABLED=OFF URL_ENDPOINT=https://cdn.proj. ←-
org USER_WRITABLE_DIRECTORY=/tmp/proj DATABASE_PATH=/usr/share/proj/proj.db" GDAL="GDAL ←-
3.2.2, released 2021/03/05" LIBXML="2.9.10" LIBJSON="0.15" LIBPROTOBUF="1.3.3" WAGYU ←-
="0.5.0 (Internal)" TOPOLOGY RASTER
(1 row)
Voir aussi
7.23.3 PostGIS_GEOS_Version
Synopsis
text PostGIS_GEOS_Version();
Manuel PostGIS 3.4.0dev 491 / 870
Description
Renvoie le numéro de version de la librairie GEOS, ou NULL si le support GEOS n’est pas activé.
Exemples
SELECT PostGIS_GEOS_Version();
postgis_geos_version
----------------------
3.12.0dev-CAPI-1.18.0
(1 row)
Voir aussi
7.23.4 PostGIS_GEOS_Compiled_Version
PostGIS_GEOS_Compiled_Version — Renvoie le numéro de version de la librairie GEOS avec laquelle PostGIS a été construit.
Synopsis
text PostGIS_GEOS_Compiled_Version();
Description
Renvoie le numéro de version de la librairie GEOS, ou par rapport à laquelle PostGIS a été construit.
Disponibilité : 3.4.0
Exemples
SELECT PostGIS_GEOS_Compiled_Version();
postgis_geos_compiled_version
-------------------------------
3.12.0
(1 row)
Voir aussi
PostGIS_GEOS_Version, PostGIS_Full_Version
7.23.5 PostGIS_Liblwgeom_Version
PostGIS_Liblwgeom_Version — Renvoie le numéro de version de la librairie liblwgeom. Cela devrait correspondre à la version
de PostGIS.
Synopsis
text PostGIS_Liblwgeom_Version();
Manuel PostGIS 3.4.0dev 492 / 870
Description
Exemples
SELECT PostGIS_Liblwgeom_Version();
postgis_liblwgeom_version
--------------------------
3.4.0dev 3.3.0rc2-993-g61bdf43a7
(1 row)
Voir aussi
7.23.6 PostGIS_LibXML_Version
Synopsis
text PostGIS_LibXML_Version();
Description
Exemples
SELECT PostGIS_LibXML_Version();
postgis_libxml_version
----------------------
2.9.10
(1 row)
Voir aussi
7.23.7 PostGIS_Lib_Build_Date
Synopsis
text PostGIS_Lib_Build_Date();
Manuel PostGIS 3.4.0dev 493 / 870
Description
Exemples
SELECT PostGIS_Lib_Build_Date();
postgis_lib_build_date
------------------------
2023-06-22 03:56:11
(1 row)
7.23.8 PostGIS_Lib_Version
Synopsis
text PostGIS_Lib_Version();
Description
Exemples
SELECT PostGIS_Lib_Version();
postgis_lib_version
---------------------
3.4.0dev
(1 row)
Voir aussi
7.23.9 PostGIS_PROJ_Version
Synopsis
text PostGIS_PROJ_Version();
Description
Exemples
SELECT PostGIS_PROJ_Version();
postgis_proj_version
-------------------------
7.2.1 NETWORK_ENABLED=OFF URL_ENDPOINT=https://cdn.proj.org USER_WRITABLE_DIRECTORY=/tmp/ ←-
proj DATABASE_PATH=/usr/share/proj/proj.db
(1 row)
Voir aussi
7.23.10 PostGIS_Wagyu_Version
Synopsis
text PostGIS_Wagyu_Version();
Description
Renvoie le numéro de version de la librairie interne Wagyu, ou NULL si le support Wagyu n’est pas activé.
Exemples
SELECT PostGIS_Wagyu_Version();
postgis_wagyu_version
-----------------------
0.5.0 (Internal)
(1 row)
Voir aussi
7.23.11 PostGIS_Scripts_Build_Date
Synopsis
text PostGIS_Scripts_Build_Date();
Description
Exemples
SELECT PostGIS_Scripts_Build_Date();
postgis_scripts_build_date
-------------------------
2023-06-22 03:56:11
(1 row)
Voir aussi
7.23.12 PostGIS_Scripts_Installed
PostGIS_Scripts_Installed — Retourne la version des scripts PostGIS installés dans cette base de données.
Synopsis
text PostGIS_Scripts_Installed();
Description
Retourne la version des scripts PostGIS installés dans cette base de données.
Note
Si la sortie de cette fonction ne correspond pas à la sortie de PostGIS_Scripts_Released, vous avez probablement
manqué de mettre correctement à niveau une base de données existante. Consultez la section Upgrading pour plus
d’informations.
Disponibilité : 0.9.0
Exemples
SELECT PostGIS_Scripts_Installed();
postgis_scripts_installed
-------------------------
3.4.0dev 3.3.0rc2-993-g61bdf43a7
(1 row)
Voir aussi
7.23.13 PostGIS_Scripts_Released
PostGIS_Scripts_Released — Retourne le numéro de version du script postgis.sql publié avec la librairie PostGIS installée.
Synopsis
text PostGIS_Scripts_Released();
Manuel PostGIS 3.4.0dev 496 / 870
Description
Retourne le numéro de version du script postgis.sql publié avec la librairie PostGIS installée.
Note
À partir de la version 1.1.0, cette fonction renvoie la même valeur de PostGIS_Lib_Version. Conservée pour des raisons
de rétrocompatibilité.
Disponibilité : 0.9.0
Exemples
SELECT PostGIS_Scripts_Released();
postgis_scripts_released
-------------------------
3.4.0dev 3.3.0rc2-993-g61bdf43a7
(1 row)
Voir aussi
7.23.14 PostGIS_Version
Synopsis
text PostGIS_Version();
Description
Exemples
SELECT PostGIS_Version();
postgis_version
---------------------------------------
3.4 USE_GEOS=1 USE_PROJ=1 USE_STATS=1
(1 row)
Voir aussi
7.24.1 postgis.backend
postgis.backend — Le backend qui sera utilisé par les fonctions lorsque GEOS et SFCGAL se recouvrent. Options :
geos ou sfcgal. Valeur par défaut geos.
Description
Cette GUC n’a de sens que si vous avez compilé PostGIS avec le support SFCGAL. Par défaut le backend geos est utilisé pour
les fonctions proposées à la fois par GEOS et SFCGAL (même nom). Cette variable permet de surcharger la valeur par défaut et
d’utiliser sfcgal comme backend pour effectuer la requête.
Disponibilité : 2.1.0
Exemples
Voir aussi
Section 7.21
7.24.2 postgis.gdal_datapath
postgis.gdal_datapath — Une option de configuration pour régler la valeur de l’option GDAL_DATA de GDAL. Si elle n’est pas
assignée, la valeur de la variable d’environnement GDAL_DATA est utilisée.
Description
Une variable GUC PostgreSQL pour régler la valeur de l’option GDAL_DATA de GDAL. La valeur postgis.gdal_datapath
devrait être le chemin physique complet vers les fichiers de données de GDAL.
Cette option de configuration est principalement destinée aux plateformes Windows où le chemin des fichiers de données de
GDAL n’est pas codé en dur. Cette option devrait aussi être réglée lorsque les fichiers de données GDAL ne sont pas situés dans
le chemin attendu par GDAL.
Note
Cette option peut être réglée dans le fichier de configuration postgresql.conf de PostgreSQL. Elle peut aussi être réglée
par connexion ou par transaction.
Disponibilité : 2.2.0
Note
Des informations complémentaires sur GDAL_DATA sont disponibles dans la description des Options de configuration.
Manuel PostGIS 3.4.0dev 498 / 870
Exemples
Voir aussi
PostGIS_GDAL_Version, ST_Transform
7.24.3 postgis.gdal_enabled_drivers
postgis.gdal_enabled_drivers — Option de configuration permettant de définir les drivers GDAL activés dans l’environnement
PostGIS. Affecte la variable de configuration GDAL GDAL_SKIP.
Description
Option de configuration permettant de définir les drivers GDAL activés dans l’environnement PostGIS. Affecte la variable de
configuration GDAL GDAL_SKIP. Cette option peut être définie dans le fichier de configuration de PostgreSQL : postgresql.conf.
Elle peut également être définie par connexion ou transaction.
La valeur initiale de postgis.gdal_enabled_drivers peut aussi être définie en passant la variable d’environnement
POSTGIS_GDAL_ENABLED_DRIVERS avec la liste des drivers activés au processus de démarrage de PostgreSQL.
Les drivers GDAL activés peuvent être spécifiés par leur nom abrégé ou leur code. Les noms courts ou les codes des drivers sont
disponibles sur GDAL Raster Formats. Il est possible de spécifier plusieurs drivers en insérant un espace entre chacun d’eux.
Note
Trois codes spéciaux sont disponibles pour postgis.gdal_enabled_drivers. Les codes sont sensibles à la
casse.
• DISABLE_ALL désactive tous les drivers GDAL. S’il est présent, DISABLE_ALL remplace toutes les autres
valeurs de postgis.gdal_enabled_drivers.
Note
Dans l’installation standard de PostGIS, postgis.gdal_enabled_drivers est défini sur DISABLE_ALL.
Manuel PostGIS 3.4.0dev 499 / 870
Note
Des informations supplémentaires sur GDAL_SKIP sont disponibles sur le site GDAL Configuration Options.
Disponibilité : 2.2.0
Exemples
Définit les drivers activés par défaut pour toutes les nouvelles connexions au serveur. Nécessite un accès super utilisateur et
PostgreSQL 9.4+. Notez également que les paramètres de la base de données, de la session et de l’utilisateur sont prioritaires.
ALTER SYSTEM SET postgis.gdal_enabled_drivers TO 'GTiff PNG JPEG';
SELECT pg_reload_conf();
Voir aussi
7.24.4 postgis.enable_outdb_rasters
postgis.enable_outdb_rasters — Une option de configuration booléenne pour permettre l’accès aux bandes matricielles de out-db.
Description
Une option de configuration booléenne pour permettre l’accès aux bandes matricielles de out-db. Cette option peut être définie
dans le fichier de configuration de PostgreSQL : postgresql.conf. Elle peut également être définie par connexion ou transaction.
La valeur initiale de postgis.enable_outdb_rasters peut également être définie en passant la variable d’environnement
POSTGIS_ENABLE_OUTDB_RASTERS avec une valeur non nulle au processus de démarrage de PostgreSQL.
Note
Même si postgis.enable_outdb_rasters est True, le GUC postgis.gdal_enabled_drivers déter-
mine les formats raster accessibles.
Manuel PostGIS 3.4.0dev 500 / 870
Note
Dans l’installation standard de PostGIS, postgis.enable_outdb_rasters est défini sur False.
Disponibilité : 2.2.0
Exemples
Paramètres pour l’ensemble du cluster de bases de données. Vous devez vous reconnecter à la base de données pour que les
modifications soient prises en compte.
--writes to postgres.auto.conf
ALTER SYSTEM postgis.enable_outdb_rasters = true;
--Reloads postgres conf
SELECT pg_reload_conf();
Voir aussi
postgis.gdal_enabled_drivers postgis.gdal_config_options
7.24.5 postgis.gdal_config_options
postgis.gdal_config_options — Une chaîne de configuration pour définir les options utilisées lors de l’utilisation d’un raster
out-db.
Description
Une chaîne de configuration pour définir les options utilisées lors de l’utilisation d’un raster out-db. Les options de configuration
contrôlent des éléments tels que l’espace alloué par GDAL au cache des données locales, la lecture ou non des aperçus et les clés
d’accès à utiliser pour les sources de données out-db distantes.
Disponibilité : 3.2.0
Exemples
Définissez postgis.gdal_vsi_options uniquement pour la transaction courante en utilisant le mot clé LOCAL :
SET LOCAL postgis.gdal_config_options = 'AWS_ACCESS_KEY_ID=xxxxxxxxxxxxxxx ←-
AWS_SECRET_ACCESS_KEY=yyyyyyyyyyyyyyyyyyyyyyyyyy';
Manuel PostGIS 3.4.0dev 501 / 870
Voir aussi
postgis.enable_outdb_rasters postgis.gdal_enabled_drivers
7.25.1 PostGIS_AddBBox
Synopsis
Description
Ajouter une boîte de délimitation à la géométrie. Cela rendrait les requêtes basées sur la boîte de délimitation plus rapides, mais
augmenterait la taille de la géométrie.
Note
Les boîtes de délimitation sont automatiquement ajoutées aux géométries, de sorte qu’en général, cela n’est pas
nécessaire, à moins que la boîte de délimitation générée ne soit corrompue d’une manière ou d’une autre ou que
vous ayez une ancienne installation qui ne contient pas les boîtes de délimitation. Dans ce cas, vous devez supprimer
l’ancienne et ajouter la nouvelle.
Exemples
UPDATE sometable
SET geom = PostGIS_AddBBox(geom)
WHERE PostGIS_HasBBox(geom) = false;
Voir aussi
PostGIS_DropBBox, PostGIS_HasBBox
7.25.2 PostGIS_DropBBox
Synopsis
Description
Supprime le cache de la boîte de délimitation de la géométrie. Cela réduit la taille de la géométrie, mais rend les requêtes basées
sur les boîtes de délimitation plus lentes. Elle est également utilisée pour supprimer une boîte de délimitation corrompue. Un
signe révélateur d’une boîte de délimitation corrompue dans le cache est lorsque vos ST_Intersects et autres requêtes de relations
laissent de côté des géométries qui devraient légitimement renvoyer un résultat vrai.
Note
Les boîtes de délimitation sont automatiquement ajoutées aux géométries et améliorent la vitesse des requêtes. En
général, cela n’est donc pas nécessaire, sauf si le boîte de délimitation générée est corrompue d’une manière ou
d’une autre ou si vous avez une ancienne installation qui ne contient pas de boîtes de délimitation. Dans ce cas,
il est nécessaire de supprimer l’ancienne installation et de la remplacer par une nouvelle. Ce type de corruption a
été observé dans les séries 8.3-8.3.6 où les bboxes mises en cache n’étaient pas toujours recalculées lorsqu’une
géométrie changeait et lors des mises à jour vers une version plus récente où le dump non rechargé ne corrigeait pas
les bboxes déjà corrompues. La mise à jour vers une version plus récente sans rechargement du dump ne corrigera
pas les boîtes déjà corrompues. Il est donc possible de corriger manuellement en utilisant la méthode ci-dessous et de
lire la bbox ou de recharger le dump.
Exemples
--This example drops bounding boxes where the cached box is not correct
--The force to ST_AsBinary before applying Box2D forces a ←-
recalculation of the box, and Box2D applied to the table ←-
geometry always
-- returns the cached bounding box.
UPDATE sometable
SET geom = PostGIS_DropBBox(geom)
WHERE Not (Box2D(ST_AsBinary(geom)) = Box2D(geom));
UPDATE sometable
SET geom = PostGIS_AddBBox(geom)
WHERE Not PostGIS_HasBBOX(geom);
Voir aussi
7.25.3 PostGIS_HasBBox
PostGIS_HasBBox — Renvoie TRUE si la bbox de cette géométrie est en cache, sinon FALSE.
Synopsis
Description
Renvoie TRUE si la boîte de délimitation de cette géométrie est mise en cache, FALSE dans le cas contraire. Utilisez Post-
GIS_AddBBox et PostGIS_DropBBox pour contrôler la mise en cache.
Exemples
SELECT geom
FROM sometable WHERE PostGIS_HasBBox(geom) = false;
Voir aussi
PostGIS_AddBBox, PostGIS_DropBBox
Manuel PostGIS 3.4.0dev 504 / 870
Chapter 8
Topologie
Les types et fonctions topologiques de PostGIS sont utilisés pour gérer les objets topologiques tels que les faces, les arêtes et les
des noeuds.
La présentation de Sandro Santilli à la conférence PostGIS Day Paris 2011 donne un bon aperçu de PostGIS Topology et de son
évolution Topology with PostGIS 2.0 slide deck.
Vincent Picavet fournit un bon résumé et une vue d’ensemble de ce qu’est la topologie, comment elle est utilisée, et divers outils
FOSS4G qui la supportent dans PostGIS Topology PGConf EU 2012.
Un exemple de base de données SIG topologique est la base de données US Census Topologically Integrated Geographic Encod-
ing and Referencing System (TIGER). Si vous souhaitez expérimenter la topologie PostGIS et avez besoin de quelques données,
consultez Topology_Load_Tiger.
Le module sur la topologie de PostGIS existe dans les versions précédentes de PostGIS mais n’a jamais fait partie de la docu-
mentation officielle de PostGIS. Dans la version 2.0.0 de PostGIS, un grand nettoyage est en cours pour en éliminer l’utilisation
de toutes les fonctions obsolètes, résoudre les problèmes d’utilisabilité connus, mieux documenter les caractéristiques et les
fonctions, ajouter de nouvelles fonctions, et l’améliorer afin de mieux se conformer aux normes SQL-MM.
Les détails sur ce projet peuvent être trouvés à PostGIS Topology Wiki
Toutes les fonctions et toutes les tables associées à ce module sont installées dans un schéma appelé topology.
Les fonctions qui sont définies dans le standard SQL/MM sont préfixées par ST_ et les fonctions spécifiques à PostGIS ne sont
pas préfixées.
Le support topologique est compilé par défaut à partir de PostGIS 2.0, et peut être désactivé en spécifiant l’option de configuration
--without-topology au moment de la construction, comme décrit dans Chapter 2
8.1.1 getfaceedges_returntype
getfaceedges_returntype — Type composite composé d’un numéro de séquence et d’un numéro d’arête.
Description
Type composite composé d’un numéro de séquence et d’un numéro d’arête. Il s’agit du type de retour pour les fonctions
ST_GetFaceEdges et GetNodeEdges.
1. sequence est un entier. Il fait référence à un élément topologique défini dans la table topology.topology qui définit le
schéma de la topologie et le srid.
2. edge est un entier : c’est l’identifiant d’une arête.
Manuel PostGIS 3.4.0dev 505 / 870
8.1.2 TopoGeometry
Description
Un type composite qui fait référence à une géométrie topologique dans une couche topologique spécifique, ayant un type et un
identifiant spécifiques. Les éléments d’une TopoGeometry ont les propriétés suivantes : topology_id, layer_id, id integer, type
integer.
1. topology_id est un entier : il fait référence à un élément topologique défini dans la table topology.topology qui définit
le schéma de la topologie et le srid.
2. layer_id est un entier : L’identifiant de la couche dans la table des couches à laquelle la TopoGeometry appartient. La
combinaison de topology_id, layer_id fournit une référence unique dans la table topology.layers.
3. id est un nombre entier : L’id est le numéro de séquence autogénéré qui définit de manière unique la topogeometry dans
la couche topologique correspondante.
4. type un entier entre 1 et 4 qui définit le type de la géométrie : 1:[multi]point, 2:[multi]line, 3:[multi]poly, 4:collection
Transtypages
Cette section liste les transtypages autorisés pour ce type de donnée, qu’ils soient automatiques ou bien explicites
Voir aussi
CreateTopoGeom
8.1.3 validatetopology_returntype
validatetopology_returntype — Un type composite composé d’un message d’erreur et de id1 et id2 pour indiquer l’emplacement
de l’erreur. Il s’agit du type de retour pour ValidateTopology.
Description
Un type composite composé d’un message d’erreur et de deux nombres entiers. La fonction ValidateTopology renvoie un en-
semble d’entiers pour indiquer les erreurs de validation et les id1 et id2 pour indiquer les id des objets topologiques concernés
par l’erreur.
Voir aussi
ValidateTopology
Manuel PostGIS 3.4.0dev 506 / 870
8.2.1 TopoElement
Description
Un tableau de 2 entiers utilisé pour représenter une composante d’une TopoGeometry simple ou hiérarchique.
Dans le cas d’une TopoGeometry simple, le premier élément du tableau représente l’identifiant d’une primitive topologique et
le deuxième élément représente son type (1:nœud, 2:arête, 3:face). Dans le cas d’une TopoGeometry hiérarchique, le premier
élément du tableau représente l’identifiant d’une TopoGeometry enfant et le deuxième élément représente son identifiant de
couche.
Note
Pour une TopoGeometry hiérarchique donnée, tous les éléments TopoGeometry enfants proviendront de la même
couche enfant, comme spécifié dans l’enregistrement topology.layer pour la couche de la TopoGeometry en cours de
définition.
Exemples
SELECT ARRAY[1,2]::topology.topoelement;
te
-------
{1,2}
--Example of what happens when you try to case a 3 element array to topoelement
-- NOTE: topoement has to be a 2 element array so fails dimension check
SELECT ARRAY[1,2,3]::topology.topoelement;
ERROR: value for domain topology.topoelement violates check constraint "dimensions"
Voir aussi
8.2.2 TopoElementArray
Description
Un tableau de 1 ou plusieurs objets TopoElement, généralement utilisé pour transmettre des composants d’objets TopoGeometry.
Manuel PostGIS 3.4.0dev 507 / 870
Exemples
tea
-------
{{1,2},{4,3}}
Voir aussi
8.3.1 AddTopoGeometryColumn
AddTopoGeometryColumn — Ajoute une colonne topogeometry à une table existante, enregistre cette nouvelle colonne en tant
que couche dans topology.layer et renvoie le nouveau numéro d’identification de la couche.
Synopsis
Description
Chaque objet TopoGeometry appartient à une couche spécifique d’une topologie spécifique. Avant de créer un objet TopoGe-
ometry, il faut créer sa couche topologique. Une couche topologique est une association d’une table de caractéristiques avec la
topologie. Elle contient également des informations sur le type et la hiérarchie. Nous créons une couche à l’aide de la fonction
AddTopoGeometryColumn() :
Cette fonction ajoutera la colonne demandée à la table et ajoutera un enregistrement à la table topology.layer avec toutes les
informations données.
Si vous ne spécifiez pas [child_layer] (ou si vous lui attribuez la valeur NULL), cette couche contiendra des TopoGeometries
basiques (composées d’éléments topologiques primitifs). Sinon, cette couche contiendra des TopoGeometries hiérarchiques
(composées de TopoGéométries de la couche_enfant).
Manuel PostGIS 3.4.0dev 508 / 870
Une fois la couche créée (son identifiant est renvoyé par la fonction AddTopoGeometryColumn), vous êtes prêt à y construire
des objets TopoGeometry
Les feature_type valides sont : POINT, MULTIPOINT, LINE, MULTILINE, POLYGON, MULTIPOLYGON, COLLEC-
TION
DIsponibilité : 1.1
Exemples
-- Note for this example we created our new table in the ma_topo schema
-- though we could have created it in a different schema -- in which case topology_name and ←-
schema_name would be different
CREATE SCHEMA ma;
CREATE TABLE ma.parcels(gid serial, parcel_id varchar(20) PRIMARY KEY, address text);
SELECT topology.AddTopoGeometryColumn('ma_topo', 'ma', 'parcels', 'topo', 'POLYGON');
Voir aussi
8.3.2 RenameTopoGeometryColumn
Synopsis
Description
Cette fonction modifie le nom d’une colonne TopoGeometry existante en veillant à ce que les informations de métadonnées la
concernant soient mises à jour en conséquence.
Disponibilité : 3.4.0
Exemples
Voir aussi
AddTopoGeometryColumn, RenameTopology
8.3.3 DropTopology
DropTopology — À utiliser avec précaution : Abandonne un schéma de topologie et supprime sa référence dans la table topol-
ogy.topology et les références aux tables de ce schéma dans la table geometry_columns.
Manuel PostGIS 3.4.0dev 509 / 870
Synopsis
Description
Abandonne un schéma topologique et supprime sa référence dans la table topology.topology et les références aux tables de ce
schéma dans la table geometry_columns. Cette fonction doit être utilisée avec précaution, car elle peut détruire des données qui
vous sont chères. Si le schéma n’existe pas, elle supprime simplement les entrées de référence du schéma nommé.
DIsponibilité : 1.1
Exemples
Cascade abandonne le schéma ma_topo et supprime toutes les références à ce schéma dans topology.topology et geometry_columns.
SELECT topology.DropTopology('ma_topo');
Voir aussi
DropTopoGeometryColumn
8.3.4 RenameTopology
Synopsis
Description
Renomme un schéma topologique, en mettant à jour son enregistrement de métadonnées dans la table topology.topology.
Disponibilité : 3.4.0
Exemples
Voir aussi
CopyTopology, RenameTopoGeometryColumn
8.3.5 DropTopoGeometryColumn
DropTopoGeometryColumn — Supprime la colonne topogeometry de la table nommée table_name dans le schéma schema_name
et désenregistre les colonnes de la table topology.layer.
Manuel PostGIS 3.4.0dev 510 / 870
Synopsis
Description
Supprime la colonne topogeometry de la table nommée table_name dans le schéma schema_name et désenregistre les
colonnes de la table topology.layer. Renvoie un résumé de l’état d’abandon. NOTE : il définit d’abord toutes les valeurs à NULL
avant de procéder à l’abandon afin de contourner les contrôles d’intégrité référentielle.
DIsponibilité : 1.1
Exemples
Voir aussi
AddTopoGeometryColumn
8.3.6 Populate_Topology_Layer
Populate_Topology_Layer — Ajoute les entrées manquantes à la table topology.layer en lisant les métadonnées des tables topo.
Synopsis
Description
Ajoute les entrées manquantes à la table topology.layer en inspectant les contraintes topologiques sur les tables. Cette
fonction est utile pour corriger les entrées dans le catalogue topologique après la restauration de schémas contenant des données
topographiques.
Elle renvoie la liste des entrées créées. Les colonnes retournées sont schema_name, table_name, feature_column.
Disponibilité : 2.3.0
Exemples
SELECT CreateTopology('strk_topo');
CREATE SCHEMA strk;
CREATE TABLE strk.parcels(gid serial, parcel_id varchar(20) PRIMARY KEY, address text);
SELECT topology.AddTopoGeometryColumn('strk_topo', 'strk', 'parcels', 'topo', 'POLYGON');
-- this will return no records because this feature is already registered
SELECT *
FROM topology.Populate_Topology_Layer();
-- let's rebuild
TRUNCATE TABLE topology.layer;
SELECT *
FROM topology.Populate_Topology_Layer();
Manuel PostGIS 3.4.0dev 511 / 870
topology_id | layer_id | sn | tn | fc
-------------+----------+------+---------+------
2 | 2 | strk | parcels | topo
(1 row)
Voir aussi
AddTopoGeometryColumn
8.3.7 TopologySummary
TopologySummary — Prend un nom de topologie et fournit des totaux récapitulatifs des types d’objets dans la topologie.
Synopsis
Description
Prend un nom de topologie et fournit des totaux récapitulatifs des types d’objets dans la topologie.
Disponibilité : 2.0.0
Exemples
SELECT topology.topologysummary('city_data');
topologysummary
--------------------------------------------------------
Topology city_data (329), SRID 4326, precision: 0
22 nodes, 24 edges, 10 faces, 29 topogeoms in 5 layers
Layer 1, type Polygonal (3), 9 topogeoms
Deploy: features.land_parcels.feature
Layer 2, type Puntal (1), 8 topogeoms
Deploy: features.traffic_signs.feature
Layer 3, type Lineal (2), 8 topogeoms
Deploy: features.city_streets.feature
Layer 4, type Polygonal (3), 3 topogeoms
Hierarchy level 1, child layer 1
Deploy: features.big_parcels.feature
Layer 5, type Puntal (1), 1 topogeoms
Hierarchy level 1, child layer 2
Deploy: features.big_signs.feature
Voir aussi
Topology_Load_Tiger
Manuel PostGIS 3.4.0dev 512 / 870
8.3.8 ValidateTopology
ValidateTopology — Renvoie un ensemble d’objets validatetopology_returntype détaillant les problèmes liés à la topologie.
Synopsis
Description
Renvoie un ensemble d’objets validatetopology_returntype détaillant les problèmes de topologie, en limitant éventuellement la
vérification à la zone spécifiée par le paramètre bbox.
La liste des erreurs possibles, ce qu’elles signifient et ce que représentent les identifiants renvoyés est affichée ci-dessous :
Disponibilité : 1.0.0
Amélioration : 2.0.0 détection plus efficace des croisements d’arêtes et correction des faux positifs qui existaient dans les versions
précédentes.
Modifié : 2.2.0 les valeurs pour id1 et id2 ont été échangées pour "edge crosses node" pour être cohérent avec la description de
l’erreur.
Modifié : 3.2.0 a ajouté le paramètre optionnel bbox, effectuant des vérifications de l’étiquetage des faces et de la liaison des
arêtes.
Exemples
Manuel PostGIS 3.4.0dev 514 / 870
Voir aussi
validatetopology_returntype, Topology_Load_Tiger
8.3.9 ValidateTopologyRelation
ValidateTopologyRelation — Renvoie des informations sur les enregistrements de relations topologiques non valides
Synopsis
Description
Renvoie un ensemble d’enregistrements donnant des informations sur les invalidités dans la table des relations de la topologie.
Disponibilité : 3.2.0
Voir aussi
ValidateTopology
8.3.10 FindTopology
Synopsis
Description
Prend un identifiant de topologie ou l’identifiant d’un objet lié à la topologie et renvoie un enregistrement topology.topology.
Disponibilité : 3.2.0
Exemples
Voir aussi
FindLayer
8.3.11 FindLayer
Synopsis
Description
Prend un identifiant de couche ou l’identifiant d’un objet lié à la topologie et renvoie un enregistrement topology.layer.
Disponibilité : 3.2.0
Exemples
Voir aussi
FindTopology
L’ajout d’éléments à une topologie déclenche de nombreuses requêtes dans la base de données pour trouver les arêtes existantes
qui seront divisées, ajouter des nœuds et mettre à jour les arêtes qui formeront un nœud avec le nouveau réseau de lignes. C’est
pourquoi il est utile que les statistiques relatives aux données contenues dans les tables de topologie soient à jour.
Les fonctions d’insertion et d’édition de topologie de PostGIS ne mettent pas automatiquement à jour les statistiques, car une
mise à jour des statistiques après chaque changement dans une topologie serait exagérée, et c’est donc à l’appelant de s’en
charger.
Note
Les statistiques mises à jour par autovacuum ne seront PAS visibles pour les transactions qui ont démarré avant la fin
du processus d’autovacuum, de sorte que les transactions de longue durée devront exécuter ANALYZE elles-mêmes,
pour utiliser les statistiques mises à jour.
Manuel PostGIS 3.4.0dev 516 / 870
8.5.1 CreateTopology
Synopsis
Description
Crée un nouveau schéma de topologie portant le nom topology_name et l’enregistre dans la table topology.topology.
Les topologies doivent porter un nom unique. Les tables de topologie (edge_data, face, node et relation) sont créées
dans le schéma. Elle renvoie l’identifiant de la topologie.
Le srid est le système de référence spatiale SRID pour la topologie.
La tolérance prec est mesurée dans les unités du système de référence spatiale. La tolérance est fixée par défaut à 0.
hasz La valeur par défaut est false si elle n’est pas spécifiée.
Cette fonction est similaire à la fonction SQL/MM ST_InitTopoGeo mais possède plus de fonctionnalités.
DIsponibilité : 1.1
Amélioration : 2.0 ajout de la signature acceptant hasZ
Exemples
Créez un schéma topologique appelé ma_topo qui stocke les arêtes et les nœuds en mètres de Massachusetts State Plane (SRID
= 26986). La tolérance est de 0,5 mètre puisque le système de référence spatiale est basé sur le mètre.
SELECT topology.CreateTopology('ma_topo', 26986, 0.5);
Créer une topologie pour Rhode Island appelée ri_topo dans le système de référence spatiale State Plane-feet (SRID = 3438)
SELECT topology.CreateTopology('ri_topo', 3438) AS topoid;
topoid
------
2
Voir aussi
8.5.2 CopyTopology
CopyTopology — Copie une topologie (nœuds, arêtes, faces, couches et TopoGeometries) dans un nouveau schéma
Synopsis
Description
Crée une nouvelle topologie avec le nom new_name, avec le SRID et la précision copiés à partir de existing_topology_name
Les nœuds, les arêtes et les faces dans existing_topology_name sont copiés dans la nouvelle topologie, ainsi que les
couches et leurs TopoGeometries associées.
Note
Les nouvelles lignes de la table topology.layer contiennent des valeurs synthétiques pour schema_name, ta-
ble_name et feature_column. Ceci est dû au fait que les objets TopoGeometry n’existent qu’en tant que définition et ne
sont pas encore disponibles dans une table définie par l’utilisateur.
Disponibilité : 2.0.0
Exemples
Voir aussi
8.5.3 ST_InitTopoGeo
Synopsis
Description
C’est l’équivalent SQL-MM de CreateTopology. Il manque des options pour le système de référence spatial et la tolérance. Il
renvoie une description textuelle de la création de la topologie, au lieu de l’identifiant de la topologie.
DIsponibilité : 1.1
Cette méthode implémente la spécification SQL/MM. SQL-MM 3 Topo-Geo et Topo-Net 3 : Routine Details : X.3.17
Exemples
Voir aussi
CreateTopology
Manuel PostGIS 3.4.0dev 518 / 870
8.5.4 ST_CreateTopoGeo
ST_CreateTopoGeo — Ajoute une collection de géométries à une topologie vide donnée et renvoie un message détaillant le
succès.
Synopsis
Description
Ajoute une collection de géométries à une topologie vide donnée et renvoie un message détaillant le succès.
Utile pour remplir une topologie vide.
Disponibilité : 2.0
Cette méthode implémente la spécification SQL/MM. SQL-MM: Topo-Geo et Topo-Net 3: Routine Details -- X.3.18
Exemples
-- Populate topology --
SELECT topology.ST_CreateTopoGeo('ri_topo',
ST_GeomFromText('MULTILINESTRING((384744 236928,384750 236923,384769 236911,384799 ←-
236895,384811 236890,384833 236884,
384844 236882,384866 236881,384879 236883,384954 236898,385087 236932,385117 236938,
385167 236938,385203 236941,385224 236946,385233 236950,385241 236956,385254 236971,
385260 236979,385268 236999,385273 237018,385273 237037,385271 237047,385267 237057,
385225 237125,385210 237144,385192 237161,385167 237192,385162 237202,385159 237214,
385159 237227,385162 237241,385166 237256,385196 237324,385209 237345,385234 237375,
385237 237383,385238 237399,385236 237407,385227 237419,385213 237430,385193 237439,
385174 237451,385170 237455,385169 237460,385171 237475,385181 237503,385190 237521,
385200 237533,385206 237538,385213 237541,385221 237542,385235 237540,385242 237541,
385249 237544,385260 237555,385270 237570,385289 237584,385292 237589,385291 ←-
237596,385284 237630))',3438)
);
st_createtopogeo
----------------------------
Topology ri_topo populated
Voir aussi
8.5.5 TopoGeo_AddPoint
TopoGeo_AddPoint — Ajoute un point à une topologie existante en utilisant une tolérance et en divisant éventuellement une
arête existante.
Manuel PostGIS 3.4.0dev 519 / 870
Synopsis
Description
Ajoute un point à une topologie existante et renvoie son identifiant. Le point donné s’accroche aux nœuds ou aux arêtes existants
dans la limite d’une tolérance donnée. Une arête existante peut être divisée par le point accroché.
Disponibilité : 2.0.0
Voir aussi
8.5.6 TopoGeo_AddLineString
TopoGeo_AddLineString — Ajoute une ligne à une topologie existante en utilisant une tolérance et en divisant éventuellement
les arêtes/faces existantes. Retourne les identifiants des arêtes.
Synopsis
Description
Ajoute une ligne à une topologie existante et renvoie un ensemble d’identifiants d’arêtes la constituant. La ligne donnée
s’accroche aux nœuds ou aux arêtes existants dans la limite d’une tolérance donnée. Les arêtes et les faces existantes peuvent
être divisées par la ligne.
Note
La mise à jour des statistiques sur les topologies chargées via cette fonction est du ressort de l’appelant, voir maintain-
ing statistics during topology editing and population.
Disponibilité : 2.0.0
Voir aussi
8.5.7 TopoGeo_AddPolygon
TopoGeo_AddPolygon — Ajoute un polygone à une topologie existante en utilisant une tolérance et en divisant éventuellement
les arêtes/faces existantes. Renvoie les identifiants des faces.
Synopsis
Description
Ajoute un polygone à une topologie existante et renvoie un ensemble d’identifiants de face le constituant. La limite du polygone
donné s’accrochera aux nœuds ou aux arêtes existants dans la limite d’une tolérance donnée. Les arêtes et les faces existantes
peuvent être divisées par la limite du nouveau polygone.
Note
La mise à jour des statistiques sur les topologies chargées via cette fonction est du ressort de l’appelant, voir maintain-
ing statistics during topology editing and population.
Disponibilité : 2.0.0
Voir aussi
8.6.1 ST_AddIsoNode
ST_AddIsoNode — Ajoute un noeud isolé à une face dans une topologie et renvoie le nodeid du nouveau noeud. Si la face est
nulle, le noeud est quand même créé.
Synopsis
Description
Ajoute un noeud isolé avec un point apoint à une face existante avec un faceid aface à une topologie atopology et renvoie
le nodeid du nouveau noeud.
Si le système de référence spatiale (srid) de la géométrie du point n’est pas le même que la topologie, si le apoint n’est pas
une géométrie de point, si le point est nul ou si le point croise une arête existante (même aux limites), une exception est levée. Si
le point existe déjà en tant que nœud, une exception est levée.
Si aface n’est pas null et que le apoint n’est pas à l’intérieur de la face, une exception est levée.
DIsponibilité : 1.1
Exemples
Voir aussi
8.6.2 ST_AddIsoEdge
ST_AddIsoEdge — Ajoute une arête isolée définie par la géométrie alinestring à une topologie reliant deux nœuds isolés
existants anode et anothernode et renvoie l’identifiant de l’arête de la nouvelle arête.
Manuel PostGIS 3.4.0dev 521 / 870
Synopsis
Description
Ajoute une arête isolée définie par la géométrie alinestring à une topologie reliant deux nœuds isolés existants anode et
anothernode et renvoie l’identifiant de l’arête de la nouvelle arête.
Si le système de référence spatiale (srid) de la géométrie alinestring n’est pas le même que la topologie, si l’un des
arguments d’entrée est nul, si les noeuds sont contenus dans plus d’une face, ou si les noeuds sont des noeuds de départ ou
d’arrivée d’une arête existante, une exception est levée.
Si le alinestring ne se trouve pas à l’intérieur de la face à laquelle appartiennent le anode et le anothernode, une
exception est levée.
Si le anode et le anothernode ne sont pas les points de départ et d’arrivée du alinestring, une exception est levée.
DIsponibilité : 1.1
Cette méthode implémente la spécification SQL/MM. SQL-MM: Topo-Geo et Topo-Net 3: Routine Details: X.3.4
Exemples
Voir aussi
8.6.3 ST_AddEdgeNewFaces
ST_AddEdgeNewFaces — Ajoutez une nouvelle arête et, si elle divise une face, supprimez la face d’origine et remplacez-la par
deux nouvelles faces.
Synopsis
Description
Ajoutez une nouvelle arête et, si elle divise une face, supprimez la face d’origine et remplacez-la par deux nouvelles faces.
Renvoie l’identifiant de l’arête nouvellement ajoutée.
Met à jour toutes les arêtes jointes existantes et les relations en conséquence.
Si l’un des arguments est nul, les nœuds donnés sont inconnus (doivent déjà exister dans la table node du schéma topologique),
la acurve n’est pas une LINESTRING, le anode et anothernode ne sont pas les points de départ et d’arrivée de acurve,
une erreur est générée.
Si le système de référence spatiale (srid) de la géométrie acurve n’est pas le même que la topologie, une exception est levée.
Disponibilité : 2.0
Cette méthode implémente la spécification SQL/MM. SQL-MM: Topo-Geo et Topo-Net 3: Routine Details: X.3.12
Manuel PostGIS 3.4.0dev 522 / 870
Exemples
Voir aussi
ST_RemEdgeNewFace
ST_AddEdgeModFace
8.6.4 ST_AddEdgeModFace
ST_AddEdgeModFace — Ajoutez une nouvelle arête et, si elle divise une face, modifiez la face d’origine et ajoutez une nouvelle
face.
Synopsis
Description
Ajouter une nouvelle arête et, si cela divise une face, modifier la face d’origine et en ajouter une nouvelle.
Note
Si possible, la nouvelle face sera créée sur le côté gauche de la nouvelle arête. Cela ne sera pas possible si la face du
côté gauche doit être la face de l’univers (non borné).
Cette méthode implémente la spécification SQL/MM. SQL-MM: Topo-Geo et Topo-Net 3: Routine Details: X.3.13
Exemples
Voir aussi
ST_RemEdgeModFace
ST_AddEdgeNewFaces
8.6.5 ST_RemEdgeNewFace
ST_RemEdgeNewFace — Enlève une arête et, si l’arête enlevée séparait deux faces, supprime les faces originales et les remplace
par une nouvelle face.
Synopsis
Description
Supprime une arête et, si l’arête supprimée séparait deux faces, supprime les faces originales et les remplace par une nouvelle
face.
Renvoie l’identifiant d’une face nouvellement créée ou NULL, si aucune nouvelle face n’est créée. Aucune nouvelle face n’est
créée lorsque l’arête supprimée est pendante, isolée ou confinée avec la face de l’univers (ce qui peut entraîner "l’inondation de
la face" de l’autre côté de l’univers).
Met à jour toutes les arêtes jointes existantes et les relations en conséquence.
Refuse de supprimer une arête participant à la définition d’une TopoGeometry existante. Refuse de recoller deux faces si une
TopoGeometry n’est définie que par l’une d’entre elles (et non par l’autre).
Si l’un des arguments est nul, si l’arête donnée est inconnue (elle doit déjà exister dans la table edge du schéma topologique), si
le nom de la topologie n’est pas valide, une erreur est générée.
Disponibilité : 2.0
Cette méthode implémente la spécification SQL/MM. SQL-MM: Topo-Geo et Topo-Net 3: Routine Details: X.3.14
Exemples
Voir aussi
ST_RemEdgeModFace
ST_AddEdgeNewFaces
8.6.6 ST_RemEdgeModFace
ST_RemEdgeModFace — Supprime une arête et, si l’arête sépare deux faces, supprime une face et modifie l’autre face pour
couvrir l’espace des deux.
Synopsis
Description
Supprime une arête et, si l’arête supprimée sépare deux faces, supprime une face et modifie l’autre face pour couvrir l’espace des
deux. La face de droite est conservée de préférence, par souci de cohérence avec ST_AddEdgeModFace. Renvoie l’identifiant
de la face conservée.
Met à jour toutes les arêtes jointes existantes et les relations en conséquence.
Refuse de supprimer une arête participant à la définition d’une TopoGeometry existante. Refuse de recoller deux faces si une
TopoGeometry n’est définie que par l’une d’entre elles (et non par l’autre).
Si l’un des arguments est nul, si l’arête donnée est inconnue (elle doit déjà exister dans la table edge du schéma topologique), si
le nom de la topologie n’est pas valide, une erreur est générée.
Disponibilité : 2.0
Cette méthode implémente la spécification SQL/MM. SQL-MM: Topo-Geo et Topo-Net 3: Routine Details: X.3.15
Manuel PostGIS 3.4.0dev 524 / 870
Exemples
Voir aussi
ST_AddEdgeModFace
ST_RemEdgeNewFace
8.6.7 ST_ChangeEdgeGeom
Synopsis
Description
Cette méthode implémente la spécification SQL/MM. SQL-MM: Topo-Geo et Topo-Net 3: Routine Details X.3.6
Exemples
SELECT topology.ST_ChangeEdgeGeom('ma_topo', 1,
ST_GeomFromText('LINESTRING(227591.9 893900.4,227622.6 893844.3,227641.6 ←-
893816.6, 227704.5 893778.5)', 26986) );
----
Edge 1 changed
Voir aussi
ST_AddEdgeModFace
ST_RemEdgeModFace
ST_ModEdgeSplit
8.6.8 ST_ModEdgeSplit
ST_ModEdgeSplit — Fractionner une arête en créant un nouveau nœud le long d’une arête existante, en modifiant l’arête
d’origine et en ajoutant une nouvelle arête.
Manuel PostGIS 3.4.0dev 525 / 870
Synopsis
Description
Fractionner une arête en créant un nouveau nœud le long d’une arête existante, en modifiant l’arête d’origine et en ajoutant une
nouvelle arête. Cette opération met à jour toutes les arêtes jointes existantes et les relations en conséquence. Renvoie l’identifiant
du nœud nouvellement ajouté.
DIsponibilité : 1.1
Modifié : 2.0 - Dans les versions antérieures, cette fonction était mal nommée ST_ModEdgesSplit
Cette méthode implémente la spécification SQL/MM. SQL-MM: Topo-Geo et Topo-Net 3: Routine Details: X.3.9
Exemples
-- Add an edge --
SELECT topology.AddEdge('ma_topo', ST_GeomFromText('LINESTRING(227592 893910, 227600 ←-
893910)', 26986) ) As edgeid;
-- edgeid-
3
Voir aussi
8.6.9 ST_ModEdgeHeal
ST_ModEdgeHeal — Répare deux arêtes en supprimant le nœud qui les relie, en modifiant la première arête et en supprimant la
seconde. Renvoie l’identifiant du nœud supprimé.
Synopsis
Description
Répare deux arêtes en supprimant le nœud qui les relie, en modifiant la première arête et en supprimant la seconde. Renvoie
l’identifiant du nœud supprimé. Met à jour toutes les arêtes jointes existantes et les relations en conséquence.
Disponibilité : 2.0
Cette méthode implémente la spécification SQL/MM. SQL-MM: Topo-Geo et Topo-Net 3: Routine Details: X.3.9
Manuel PostGIS 3.4.0dev 526 / 870
Voir aussi
ST_ModEdgeSplit ST_NewEdgesSplit
8.6.10 ST_NewEdgeHeal
ST_NewEdgeHeal — Répare deux arêtes en supprimant le nœud qui les relie, en supprimant les deux arêtes et en les remplaçant
par une arête dont la direction est la même que la première arête fournie.
Synopsis
Description
Répare deux arêtes en supprimant le nœud qui les relie, en supprimant les deux arêtes et en les remplaçant par une arête dont la
direction est la même que la première arête fournie. Renvoie l’identifiant de la nouvelle arête remplaçant les arêtes réparées. Met
à jour toutes les arêtes jointes existantes et les relations en conséquence.
Disponibilité : 2.0
Cette méthode implémente la spécification SQL/MM. SQL-MM: Topo-Geo et Topo-Net 3: Routine Details: X.3.9
Voir aussi
8.6.11 ST_MoveIsoNode
ST_MoveIsoNode — Déplace un nœud isolé dans une topologie d’un point à un autre. Si la nouvelle géométrie apoint existe
en tant que noeud, une erreur est générée. Retourne la description du déplacement.
Synopsis
Description
Déplace un nœud isolé dans une topologie d’un point à un autre. Si la nouvelle géométrie apoint existe en tant que noeud, une
erreur est générée.
Si l’un des arguments est nul, si le apoint n’est pas un point, si le noeud existant n’est pas isolé (c’est un point de départ ou
d’arrivée d’une arête existante), si l’emplacement du nouveau noeud coupe une arête existante (même aux points d’arrivée) ou si
le nouvel emplacement se trouve dans une face différente (depuis la version 3.2.0), une exception est levée.
Si le système de référence spatiale (srid) de la géométrie du point n’est pas le même que la topologie, une exception est levée.
Disponibilité : 2.0.0
Amélioration : la version 3.2.0 garantit que le nœud ne peut pas être déplacé vers une autre face
Exemples
Voir aussi
ST_AddIsoNode
8.6.12 ST_NewEdgesSplit
ST_NewEdgesSplit — Fractionne une arête en créant un nouveau nœud le long d’une arête existante, en supprimant l’arête
d’origine et en la remplaçant par deux nouvelles arêtes. Renvoie l’identifiant du nouveau nœud créé qui relie les nouvelles arêtes.
Synopsis
Description
Divise une arête avec l’identifiant anedge en créant un nouveau noeud avec l’emplacement du point apoint le long de l’arête
actuelle, en supprimant l’arête d’origine et en la remplaçant par deux nouvelles arêtes. Renvoie l’identifiant du nouveau nœud
créé qui relie les nouvelles arêtes. Met à jour toutes les arêtes jointes existantes et les relations en conséquence.
Si le système de référence spatiale (srid) de la géométrie du point n’est pas le même que la topologie, si le apoint n’est pas une
géométrie de point, si le point est nul, si le point existe déjà en tant que nœud, si l’arête ne correspond pas à une arête existante
ou si le point n’est pas à l’intérieur de l’arête, une exception est levée.
DIsponibilité : 1.1
Exemples
-- Add an edge --
SELECT topology.AddEdge('ma_topo', ST_GeomFromText('LINESTRING(227575 893917,227592 893900) ←-
', 26986) ) As edgeid;
-- result-
edgeid
------
2
-- Split the new edge --
SELECT topology.ST_NewEdgesSplit('ma_topo', 2, ST_GeomFromText('POINT(227578.5 893913.5)', ←-
26986) ) As newnodeid;
newnodeid
---------
6
Manuel PostGIS 3.4.0dev 528 / 870
Voir aussi
8.6.13 ST_RemoveIsoNode
ST_RemoveIsoNode — Supprime un noeud isolé et renvoie la description de l’action. Si le noeud n’est pas isolé (début ou fin
d’une arête), une exception est levée.
Synopsis
Description
Supprime un noeud isolé et renvoie la description de l’action. Si le nœud n’est pas isolé (est le début ou la fin d’une arête), une
exception est levée.
DIsponibilité : 1.1
Cette méthode implémente la spécification SQL/MM. SQL-MM: Topo-Geo et Topo-Net 3: Routine Details: X+1.3.3
Exemples
Voir aussi
ST_AddIsoNode
8.6.14 ST_RemoveIsoEdge
ST_RemoveIsoEdge — Supprime une arête isolée et renvoie la description de l’action. Si l’arête n’est pas isolée, une exception
est levée.
Synopsis
Description
Supprime une arête isolée et renvoie la description de l’action. Si l’arête n’est pas isolée, une exception est levée.
DIsponibilité : 1.1
Cette méthode implémente la spécification SQL/MM. SQL-MM: Topo-Geo et Topo-Net 3: Routine Details: X+1.3.3
Manuel PostGIS 3.4.0dev 529 / 870
Exemples
Voir aussi
ST_AddIsoNode
8.7.1 GetEdgeByPoint
Synopsis
Description
Note
Si la tolérance = 0, la fonction utilise ST_Intersects, sinon elle utilise ST_DWithin.
Exemples
Ces exemples utilisent les arêtes que nous avons créées dans AddEdge
SELECT topology.GetEdgeByPoint('ma_topo',geom, 1) As with1mtol, topology.GetEdgeByPoint(' ←-
ma_topo',geom,0) As withnotol
FROM ST_GeomFromEWKT('SRID=26986;POINT(227622.6 893843)') As geom;
with1mtol | withnotol
-----------+-----------
2 | 0
Manuel PostGIS 3.4.0dev 530 / 870
-- get error --
ERROR: Two or more edges found
Voir aussi
8.7.2 GetFaceByPoint
Synopsis
Description
Recherche une face référencée par un point, avec une tolérance donnée.
La fonction recherchera effectivement une face coupant un cercle dont le point est le centre et la tolérance le rayon.
Si aucune face n’intersecte l’emplacement de la requête, la valeur 0 est renvoyée (face universelle).
Si plus d’une face croise l’emplacement de la requête, une exception est levée.
Disponibilité : 2.0.0
Amélioration : 3.2.0 mise en œuvre plus efficace et contrat plus clair, arrêt du fonctionnement avec des topologies non valides.
Exemples
with1mtol | withnotol
-----------+-----------
1 | 0
-- get error --
ERROR: Two or more faces found
Voir aussi
8.7.3 GetFaceContainingPoint
Synopsis
Description
Note
La fonction repose sur une topologie valide, utilisant la liaison des arêtes et l’étiquetage des faces.
Disponibilité : 3.2.0
Voir aussi
ST_GetFaceGeometry
8.7.4 GetNodeByPoint
Synopsis
Description
Note
Si la tolérance = 0, la fonction utilise ST_Intersects, sinon elle utilise ST_DWithin.
Exemples
Ces exemples utilisent les arêtes que nous avons créées dans AddEdge
SELECT topology.GetNodeByPoint('ma_topo',geom, 1) As nearnode
FROM ST_GeomFromEWKT('SRID=26986;POINT(227591.9 893900.4)') As geom;
nearnode
----------
2
----get error--
ERROR: Two or more nodes found
Voir aussi
8.7.5 GetTopologyID
GetTopologyID — Retourne l’identifiant d’une topologie dans la table topology.topology étant donné le nom de la topologie.
Synopsis
Description
Retourne l’identifiant d’une topologie dans la table topology.topology en fonction du nom de la topologie.
DIsponibilité : 1.1
Exemples
Voir aussi
8.7.6 GetTopologySRID
GetTopologySRID — Renvoie le SRID d’une topologie dans la table topology.topology en fonction du nom de la topologie.
Synopsis
Description
Renvoie l’identifiant de référence spatiale d’une topologie dans la table topology.topology en fonction du nom de la topologie.
Disponibilité : 2.0.0
Exemples
Voir aussi
8.7.7 GetTopologyName
Synopsis
Description
Renvoie le nom de la topologie (schéma) d’une topologie de la table topology.topology en fonction de l’identifiant de la topologie.
DIsponibilité : 1.1
Exemples
Voir aussi
8.7.8 ST_GetFaceEdges
Synopsis
Description
Renvoie un ensemble d’arêtes ordonnées qui délimitent aface. Chaque sortie se compose d’une séquence et d’un numéro
d’arête. Les numéros de séquence commencent par la valeur 1.
L’énumération des arêtes de chaque anneau commence par l’arête dont l’identifiant est le plus petit. L’ordre des arêtes suit la
règle de la main gauche (la face liée se trouve à gauche de chaque arête dirigée).
Disponibilité : 2.0
Cette méthode implémente la spécification SQL/MM. SQL-MM 3 Topo-Geo et Topo-Net 3: Routine Details: X.3.5
Exemples
Voir aussi
8.7.9 ST_GetFaceGeometry
ST_GetFaceGeometry — Renvoie le polygone dans la topologie donnée avec l’identifiant de face spécifié.
Synopsis
Description
Renvoie le polygone dans la topologie donnée avec l’identifiant de face spécifié. Construit le polygone à partir des arêtes
composant la face.
DIsponibilité : 1.1
Cette méthode implémente la spécification SQL/MM. SQL-MM 3 Topo-Geo et Topo-Net 3: Routine Details: X.3.16
Manuel PostGIS 3.4.0dev 535 / 870
Exemples
--------------------------------------------------------------------------------
POLYGON((234776.9 899563.7,234896.5 899456.7,234914 899436.4,234946.6 899356.9,
234872.5 899328.7,234891 899285.4,234992.5 899145,234890.6 899069,
234755.2 899255.4,234612.7 899379.4,234776.9 899563.7))
Voir aussi
AddFace
8.7.10 GetRingEdges
GetRingEdges — Renvoie l’ensemble ordonné des identifiants d’arêtes signés rencontrés en évoluant sur un côté d’arête donné.
Synopsis
Description
Renvoie l’ensemble ordonné des identifiants d’arêtes signés rencontrés en évoluant sur un côté d’arête donné. Chaque sortie se
compose d’une séquence et d’un identifiant d’arête signé. Les numéros de séquence commencent par la valeur 1.
Si vous passez un identifiant d’arête positif, la marche commence du côté gauche de l’arête correspondante et suit la direction
de l’arête. Si vous passez un identifiant d’arête négatif, la marche commence du côté droit de l’arête correspondante et va vers
l’arrière.
Si max_edges n’est pas nul, cette fonction ne renvoie pas plus que ces enregistrements. Il s’agit d’un paramètre de sécurité
dans le cas de topologies éventuellement non valides.
Note
Cette fonction utilise les métadonnées de liaison des anneaux des arêtes.
Disponibilité : 2.0.0
Voir aussi
ST_GetFaceEdges, GetNodeEdges
8.7.11 GetNodeEdges
Synopsis
Description
Renvoie un ensemble ordonné d’arêtes incidentes au nœud donné. Chaque sortie se compose d’une séquence et d’un numéro
d’arête signé. Les numéros de séquence commencent par la valeur 1. Une arête positive commence au nœud donné. Une arête
négative se termine au nœud donné. Les arêtes fermées apparaissent deux fois (avec les deux signes). L’ordre est celui des
aiguilles d’une montre en partant du nord.
Note
Cette fonction calcule l’ordre plutôt que de dériver des métadonnées et peut donc être utilisée pour établir des liens
entre les anneaux des arêtes.
Disponibilité : 2.0
Voir aussi
8.8.1 Polygonize
Polygonize — Recherche et enregistre toutes les faces définies par les arêtes de la topologie.
Synopsis
Description
Enregistre toutes les faces qui peuvent être construites à partir d’une primitive d’arête topologique.
La topologie cible est supposée ne pas contenir d’arêtes s’auto-intersectant.
Note
Les faces déjà connues sont reconnues, de sorte qu’il est possible d’appeler Polygonize plusieurs fois sur la même
topologie.
Note
Cette fonction n’utilise ni ne définit les champs next_left_edge et next_right_edge de la table des arêtes.
Disponibilité : 2.0.0
Manuel PostGIS 3.4.0dev 537 / 870
Voir aussi
AddFace, ST_Polygonize
8.8.2 AddNode
AddNode — Ajoute un nœud ponctuel à la table des nœuds dans le schéma topologique spécifié et renvoie le nodeid du nouveau
nœud. Si le point existe déjà en tant que nœud, l’identifiant du nœud existant est renvoyé.
Synopsis
Description
Ajoute un nœud ponctuel à la table des nœuds dans le schéma topologique spécifié. La fonction AddEdge ajoute automatiquement
les points de départ et d’arrivée d’une arête lorsqu’elle est appelée, de sorte qu’il n’est pas nécessaire d’ajouter explicitement les
nœuds d’une arête.
Si une arête traversant le nœud est trouvée, une exception est levée ou l’arête est scindée, en fonction de la valeur du paramètre
allowEdgeSplitting.
Si computeContainingFace est true, un nœud nouvellement ajouté verra sa face contenante calculée correctement.
Note
Si la géométrie apoint existe déjà en tant que noeud, le noeud n’est pas ajouté mais le nodeid existant est renvoyé.
Disponibilité : 2.0.0
Exemples
Voir aussi
AddEdge, CreateTopology
8.8.3 AddEdge
AddEdge — Ajoute une arête linéaire à la table des arêtes et les points de départ et d’arrivée associés à la table des nœuds de
points du schéma topologique spécifié en utilisant la géométrie linéaire spécifiée et renvoie l’identifiant de l’arête nouvelle (ou
existante).
Manuel PostGIS 3.4.0dev 538 / 870
Synopsis
Description
Ajoute une arête à la table des arêtes et les nœuds associés à la table des nœuds du schéma toponame spécifié en utilisant la
géométrie de ligne spécifiée et renvoie l’identifiant de l’arête du nouvel enregistrement ou de l’enregistrement existant. L’arête
nouvellement ajoutée a une face "univers" des deux côtés et est liée à elle-même.
Note
Si la géométrie aline croise, chevauche, contient ou est contenue par un bord de ligne existant, une erreur est
générée et l’arête n’est pas ajoutée.
Note
La géométrie de aline doit avoir la même srid que celle définie pour la topologie, sinon une erreur sys de référence
spatiale non valide sera levée.
Exemples
Voir aussi
8.8.4 AddFace
AddFace — Enregistre une primitive de face dans une topologie et obtient son identifiant.
Manuel PostGIS 3.4.0dev 539 / 870
Synopsis
Description
Enregistre une primitive de face dans une topologie et obtient son identifiant.
Pour une face nouvellement ajoutée, les arêtes formant ses limites et celles contenues dans la face seront mises à jour pour que
les valeurs des champs left_face et right_face soient correctes. Les nœuds isolés contenus dans la face seront également mis à
jour pour que la valeur du champ containing_face soit correcte.
Note
Cette fonction n’utilise ni ne définit les champs next_left_edge et next_right_edge de la table des arêtes.
La topologie cible est supposée valide (ne contenant pas d’arêtes se recoupant). Une exception est levée si : La limite du polygone
n’est pas entièrement définie par les arêtes existantes ou le polygone chevauche une face existante.
Si la géométrie apolygon existe déjà en tant que face, alors : si force_new est false (par défaut), l’identifiant de la face
existante est renvoyé ; si force_new est true, un nouvel identifiant sera attribué à la face nouvellement enregistrée.
Note
Lorsqu’un nouvel enregistrement d’une face existante est effectué (force_new=true), aucune action ne sera entreprise
pour résoudre les références pendantes à la face existante dans les tables d’arêtes, de nœuds et de relations, et le
champ MBR (Minimum Bounding Rectangle) de l’enregistrement de la face existante ne sera pas mis à jour. C’est à
l’appelant de s’en occuper.
Note
La géométrie apolygon doit avoir la même srid que celle définie pour la topologie, sinon une erreur sys de
référence spatiale non valide sera déclenchée.
Disponibilité : 2.0.0
Exemples
4
5
6
7
8
9
10
11
12
(10 rows)
-- then add the face -
SELECT topology.AddFace('ma_topo',
ST_GeomFromText('POLYGON((234896.5 899456.7,234914 899436.4,234946.6 899356.9,234872.5 ←-
899328.7,
234891 899285.4,234992.5 899145, 234890.6 899069,234755.2 899255.4,
234612.7 899379.4,234776.9 899563.7,234896.5 899456.7))', 26986) ) As faceid;
-- result --
faceid
--------
1
Voir aussi
8.8.5 ST_Simplify
ST_Simplify — Renvoie une version géométrique "simplifiée" de la TopoGeometry donnée en utilisant l’algorithme de Douglas-
Peucker.
Synopsis
Description
Renvoie une version géométrique "simplifiée" de la TopoGeometry donnée en utilisant l’algorithme de Douglas-Peucker sur
chaque arête de la composante.
Note
La géométrie renvoyée peut être non simple ou non valide.
La séparation des arêtes des composants peut contribuer à préserver la simplicité et la validité.
Voir aussi
8.8.6 RemoveUnusedPrimitives
RemoveUnusedPrimitives — Supprime les primitives topologiques qui ne sont pas nécessaires pour définir les objets TopoGe-
ometry existants.
Synopsis
Description
Recherche toutes les primitives (nœuds, arêtes, faces) qui ne sont pas strictement nécessaires pour représenter les objets TopoGe-
ometry existants et les supprime, en maintenant la validité de la topologie (liaison des arêtes, étiquetage des faces) et l’occupation
de l’espace TopoGeometry.
Aucun nouvel identifiant de primitive n’est créé, mais les primitives existantes sont étendues pour inclure les faces fusionnées
(en supprimant les arêtes) ou les arêtes réparées (en supprimant les nœuds).
Disponibilité : 3.3.0
Voir aussi
ST_ModEdgeHeal, ST_RemEdgeModFace
8.9.1 CreateTopoGeom
CreateTopoGeom — Crée un nouvel objet géométrique topo à partir d’un tableau d’éléments topo - tg_type : 1 :[multi]point, 2
:[multi]ligne, 3 :[multi]poly, 4:collection
Synopsis
Description
Crée un objet topogéométrique pour la couche désignée par layer_id et l’enregistre dans la table des relations du schéma
toponame.
tg_type est un nombre entier : 1 : [multi]point (ponctuel), 2 : [multi]ligne (linéaire), 3 : [multi]poly (aréolaire), 4:collection.
layer_id est l’identifiant de la couche dans la table topology.layer.
Les couches ponctuelles sont formées à partir d’un ensemble de nœuds, les couches linéaires sont formées à partir d’un ensemble
d’arêtes, les couches aréales sont formées à partir d’un ensemble de faces, et les collections peuvent être formées à partir d’un
mélange de nœuds, d’arêtes et de faces.
L’omission du tableau de composants génère un objet TopoGeometry vide.
DIsponibilité : 1.1
Manuel PostGIS 3.4.0dev 542 / 870
Créer un topogeom dans le schéma ri_topo pour la couche 2 (nos ri_roads), de type (2) LINE, pour la première arête (que nous
avons chargée dans ST_CreateTopoGeo).
INSERT INTO ri.ri_roads(road_name, topo) VALUES('Unknown', topology.CreateTopoGeom('ri_topo ←-
',2,2,'{{1,2}}'::topology.topoelementarray);
Supposons que nous ayons des géométries qui doivent être formées à partir d’une collection de faces. Nous disposons par
exemple d’un tableau de groupes de blocs et nous voulons connaître la géométrie topographique de chaque groupe de blocs. Si
nos données étaient parfaitement alignées, nous pourrions le faire :
-- create our topo geometry column --
SELECT topology.AddTopoGeometryColumn(
'topo_boston',
'boston', 'blockgroups', 'topo', 'POLYGON');
-- addtopgeometrycolumn --
1
Voir aussi
8.9.2 toTopoGeom
Synopsis
Description
Exemples
-- summary--
Topology topo_boston_test (5), SRID 2249, precision 0
61 nodes, 87 edges, 35 faces, 15 topogeoms in 1 layers
Layer 1, type Polygonal (3), 15 topogeoms
Deploy: public.nei_topo.topo
Voir aussi
8.9.3 TopoElementArray_Agg
Synopsis
Description
Exemples
Voir aussi
TopoElement, TopoElementArray
8.9.4 TopoElement
Synopsis
Description
Exemples
-- using as cast
SELECT topology.TopoElementArray_Agg(topo::topoelement)
FROM neighborhoods
GROUP BY city;
Voir aussi
8.10.1 clearTopoGeom
Synopsis
Description
Efface le contenu d’une TopoGeometry en la transformant en une vide. Principalement utile en conjonction avec toTopoGeom
pour remplacer la forme des objets existants et de tout objet dépendant dans les niveaux hiérarchiques supérieurs.
Disponibilité : 2.1
Manuel PostGIS 3.4.0dev 546 / 870
Exemples
Voir aussi
toTopoGeom
8.10.2 TopoGeom_addElement
Synopsis
Description
Ajoute un TopoElement à la définition d’un objet TopoGeometry. Il n’y a pas d’erreur si l’élément fait déjà partie de la définition.
Disponibilité : 2.3
Exemples
Voir aussi
TopoGeom_remElement, CreateTopoGeom
8.10.3 TopoGeom_remElement
Synopsis
Description
Exemples
Voir aussi
TopoGeom_addElement, CreateTopoGeom
8.10.4 TopoGeom_addTopoGeom
Synopsis
Description
Ajoute les éléments d’une TopoGeometry à la définition d’une autre TopoGeometry, en changeant éventuellement son type mis
en cache (attribut type) en une collection, si nécessaire pour contenir tous les éléments de l’objet source.
Les deux objets TopoGeometry doivent être définis par rapport à la même topologie et, s’ils sont définis hiérarchiquement, ils
doivent être composés d’éléments de la même couche enfant.
Disponibilité : 3.2
Exemples
Voir aussi
8.10.5 toTopoGeom
Description
Se référer à toTopoGeom.
8.11.1 GetTopoGeomElementArray
GetTopoGeomElementArray — Renvoie un topoelementarray (un tableau de topoelements) contenant les éléments topologiques
et le type de la TopoGeometry donnée (éléments primitifs).
Manuel PostGIS 3.4.0dev 548 / 870
Synopsis
Description
Renvoie un TopoElementArray contenant les éléments topologiques et le type de la TopoGeometry donnée (éléments primitifs).
Cette fonction est similaire à GetTopoGeomElements, sauf qu’elle renvoie les éléments sous la forme d’un tableau plutôt que
sous la forme d’un ensemble de données.
tg_id est l’identifiant topogeometry de l’objet topogeometry de la topologie dans la couche désignée par layer_id dans la
table topology.layer.
DIsponibilité : 1.1
Exemples
Voir aussi
GetTopoGeomElements, TopoElementArray
8.11.2 GetTopoGeomElements
GetTopoGeomElements — Renvoie un ensemble d’objets topoelement contenant les éléments topologiques element_id,element_type
de la TopoGeometry donnée (éléments primitifs).
Synopsis
Description
Renvoie un ensemble de element_id,element_type (topoelements) correspondant aux éléments topologiques primitifs TopoEle-
ment (1 : noeuds, 2 : arêtes, 3 : faces) dont est composé un objet topogeometry donné dans le schéma toponame.
tg_id est l’identifiant topogeometry de l’objet topogeometry de la topologie dans la couche désignée par layer_id dans la
table topology.layer.
Disponibilité : 2.0.0
Exemples
Voir aussi
8.11.3 ST_SRID
Synopsis
Description
Renvoie l’identifiant de référence spatiale pour la ST_Geometry tel que défini dans la table spatial_ref_sys. Section 4.5
Note
La table spatial_ref_sys est une table qui répertorie tous les systèmes de référence spatiale connus de PostGIS et qui
est utilisée pour les transformations d’un système de référence spatiale à un autre. Il est donc important de vérifier que
vous disposez du bon identifiant de système de référence spatiale si vous envisagez de transformer vos géométries.
Disponibilité : 3.2.0
Exemples
Voir aussi
8.12.1 AsGML
Synopsis
Description
Renvoie la représentation GML d’une topogeometry au format GML3. Si aucun nsprefix_in n’est spécifié, gml est utilisé.
Fournir une chaîne de caractères vide pour nsprefix afin d’obtenir un espace de noms non qualifié. Les paramètres precision (par
défaut : 15) et options (par défaut 1), s’ils sont donnés, sont transmis tels quels à l’appel sous-jacent à ST_AsGML.
Le paramètre visitedTable, s’il est donné, est utilisé pour garder une trace des éléments de nœud et d’arêtes visités afin
d’utiliser des références croisées (xlink:xref) plutôt que de dupliquer les définitions. La table doit comporter (au moins) deux
champs entiers : "element_type" et "element_id". L’utilisateur appelant doit avoir les privilèges de lecture et d’écriture sur la
table donnée. Pour de meilleures performances, un index doit être défini sur element_type et element_id, dans cet ordre.
Cet index sera créé automatiquement par l’ajout d’une contrainte d’unicité aux champs. Exemple :
CREATE TABLE visited (
element_type integer, element_id integer,
unique(element_type, element_id)
);
Le paramètre idprefix, s’il est indiqué, sera ajouté aux identifiants des balises Edge et Node.
Le paramètre gmlver, s’il est donné, sera transmis au ST_AsGML sous-jacent. La valeur par défaut est 3.
Disponibilité : 2.0.0
Exemples
Ceci utilise la géométrie topo que nous avons créée dans CreateTopoGeom
SELECT topology.AsGML(topo) As rdgml
FROM ri.roads
WHERE road_name = 'Unknown';
-- rdgml--
<gml:TopoCurve>
<gml:directedEdge>
<gml:Edge gml:id="E1">
<gml:directedNode orientation="-">
<gml:Node gml:id="N1"/>
</gml:directedNode>
<gml:directedNode
></gml:directedNode>
<gml:curveProperty>
<gml:Curve srsName="urn:ogc:def:crs:EPSG::3438">
<gml:segments>
<gml:LineStringSegment>
<gml:posList srsDimension="2"
>384744 236928 384750 236923 384769 236911 384799 236895 384811 236890
384833 236884 384844 236882 384866 236881 384879 236883 384954 ←-
236898 385087 236932 385117 236938
385167 236938 385203 236941 385224 236946 385233 236950 385241 ←-
236956 385254 236971
385260 236979 385268 236999 385273 237018 385273 237037 385271 ←-
237047 385267 237057 385225 237125
385210 237144 385192 237161 385167 237192 385162 237202 385159 ←-
237214 385159 237227 385162 237241
385166 237256 385196 237324 385209 237345 385234 237375 385237 ←-
237383 385238 237399 385236 237407
385227 237419 385213 237430 385193 237439 385174 237451 385170 ←-
237455 385169 237460 385171 237475
385181 237503 385190 237521 385200 237533 385206 237538 385213 ←-
237541 385221 237542 385235 237540 385242 237541
385249 237544 385260 237555 385270 237570 385289 237584 385292 ←-
237589 385291 237596 385284 237630</gml:posList>
Manuel PostGIS 3.4.0dev 551 / 870
</gml:LineStringSegment>
</gml:segments>
</gml:Curve>
</gml:curveProperty>
</gml:Edge>
</gml:directedEdge>
</gml:TopoCurve
>
-- rdgml--
<TopoCurve>
<directedEdge>
<Edge id="E1">
<directedNode orientation="-">
<Node id="N1"/>
</directedNode>
<directedNode
></directedNode>
<curveProperty>
<Curve srsName="urn:ogc:def:crs:EPSG::3438">
<segments>
<LineStringSegment>
<posList srsDimension="2"
>384744 236928 384750 236923 384769 236911 384799 236895 384811 236890
384833 236884 384844 236882 384866 236881 384879 236883 384954 ←-
236898 385087 236932 385117 236938
385167 236938 385203 236941 385224 236946 385233 236950 385241 ←-
236956 385254 236971
385260 236979 385268 236999 385273 237018 385273 237037 385271 ←-
237047 385267 237057 385225 237125
385210 237144 385192 237161 385167 237192 385162 237202 385159 ←-
237214 385159 237227 385162 237241
385166 237256 385196 237324 385209 237345 385234 237375 385237 ←-
237383 385238 237399 385236 237407
385227 237419 385213 237430 385193 237439 385174 237451 385170 ←-
237455 385169 237460 385171 237475
385181 237503 385190 237521 385200 237533 385206 237538 385213 ←-
237541 385221 237542 385235 237540 385242 237541
385249 237544 385260 237555 385270 237570 385289 237584 385292 ←-
237589 385291 237596 385284 237630</posList>
</LineStringSegment>
</segments>
</Curve>
</curveProperty>
</Edge>
</directedEdge>
</TopoCurve
>
Voir aussi
CreateTopoGeom, ST_CreateTopoGeo
Manuel PostGIS 3.4.0dev 552 / 870
8.12.2 AsTopoJSON
Synopsis
Description
Renvoie la représentation TopoJSON d’une topogeometry. Si edgeMapTable n’est pas nul, il sera utilisé comme correspon-
dance de consultation/stockage des identifiants d’arêtes aux indices d’arcs. Cela permet d’obtenir un tableau compact des "arcs"
dans le document final.
La table, si elle est donnée, doit avoir un champ "arc_id" de type "serial" et un champ "edge_id" de type integer ; le code
interrogera la table pour "edge_id" et il est donc recommandé d’ajouter un index sur ce champ.
Note
Les indices d’arc dans la sortie TopoJSON sont basés sur 0 mais ils sont basés sur 1 dans la table "edgeMapTable".
Un document TopoJSON complet devra contenir, en plus des extraits renvoyés par cette fonction, les arcs proprement dits et
quelques en-têtes. Voir le TopoJSON specification.
Disponibilité : 2.1.0
Amélioration : 2.2.1 ajout de la prise en charge des entrées "puntal"
Voir aussi
ST_AsGeoJSON
Exemples
-- header
SELECT '{ "type": "Topology", "transform": { "scale": [1,1], "translate": [0,0] }, "objects ←-
": {'
-- objects
UNION ALL SELECT '"' || feature_name || '": ' || AsTopoJSON(feature, 'edgemap')
FROM features.big_parcels WHERE feature_name = 'P3P4';
-- arcs
WITH edges AS (
SELECT m.arc_id, e.geom FROM edgemap m, city_data.edge e
WHERE e.edge_id = m.edge_id
), points AS (
SELECT arc_id, (st_dumppoints(geom)).* FROM edges
), compare AS (
SELECT p2.arc_id,
CASE WHEN p1.path IS NULL THEN p2.geom
ELSE ST_Translate(p2.geom, -ST_X(p1.geom), -ST_Y(p1.geom))
END AS geom
FROM points p2 LEFT OUTER JOIN points p1
Manuel PostGIS 3.4.0dev 553 / 870
-- footer
UNION ALL SELECT ']}'::text as t;
-- Result:
{ "type": "Topology", "transform": { "scale": [1,1], "translate": [0,0] }, "objects": {
"P3P4": { "type": "MultiPolygon", "arcs": [[[-1]],[[6,5,-5,-4,-3,1]]]}
}, "arcs": [
[[25,30],[6,0],[0,10],[-14,0],[0,-10],[8,0]],
[[35,6],[0,8]],
[[35,6],[12,0]],
[[47,6],[0,8]],
[[47,14],[0,8]],
[[35,22],[12,0]],
[[35,14],[0,8]]
]}
8.13.1 Equals
Equals — Retourne vrai si deux topogeometries sont composées des mêmes primitives topologiques.
Synopsis
Description
Retourne vrai si deux topogeometries sont composées des mêmes primitives topologiques : faces, arêtes, nœuds.
Note
Cette fonction n’est pas prise en charge pour les topogeometries qui sont des collections de géométries. Elle ne permet
pas non plus de comparer des topogeometries issues de topologies différentes.
Disponibilité : 1.1.0
Exemples
Voir aussi
GetTopoGeomElements, ST_Equals
8.13.2 Intersects
Intersects — Retourne true si une paire de primitives des deux topogeometries s’intersectent.
Synopsis
Description
Note
Cette fonction n’est pas prise en charge pour les topogeometries qui sont des collections de géométries. Elle ne permet
pas non plus de comparer des topogeometries issues de topologies différentes. Elle n’est pas non plus compatible avec
les topogeometries hiérarchiques (topogeometries composées d’autres topogeometries).
Disponibilité : 1.1.0
Exemples
Voir aussi
ST_Intersects
Une fois que vous avez créé des topologies, et éventuellement des couches topologiques associées, vous pouvez les exporter dans
un format de fichier pour les sauvegarder ou les transférer dans une autre base de données.
L’utilisation des outils standards de dump/restauration de PostgreSQL est problématique car les topologies sont composées
d’un ensemble de tables (4 pour les primitives, un nombre arbitraire pour les couches) et d’enregistrements dans des tables de
métadonnées (topology.topology et topology.layer). De plus, les identifiants de topologie ne sont pas univoques d’une base de
données à l’autre, de sorte que les paramètres de votre topologie devront être modifiés lors de sa restauration.
Afin de simplifier l’exportation/la restauration des topologies, une paire d’exécutables est fournie : pgtopo_export et
pgtopo_import. Exemple d’utilisation :
pgtopo_export dev_db topo1 | pgtopo_import topo1 | psql staging_db
Manuel PostGIS 3.4.0dev 555 / 870
Le script pgtopo_export prend le nom d’une base de données et d’une topologie et produit un fichier dump qui peut être
utilisé pour importer la topologie (et les couches associées) dans une nouvelle base de données.
Par défaut, pgtopo_export écrit le fichier dump sur la sortie standard afin qu’il puisse être acheminé vers pgtopo_import
ou redirigé vers un fichier (refusant d’écrire dans le terminal). Vous pouvez optionnellement spécifier un nom de fichier de sortie
en utilisant l’argument -f dans la ligne de commandes.
Par défaut pgtopo_export inclut un dump de toutes les couches définies par rapport à la topologie donnée. Cela peut être
plus de données que vous n’en avez besoin, ou peut ne pas fonctionner (dans le cas où vos tables de couches ont des dépendances
complexes), auquel cas vous pouvez demander à ignorer les couches avec l’argument --skip-layers et les traiter séparément.
En utilisant pgtopo_export avec l’argument --help (ou -h en abrégé) affichera toujours une courte chaîne de caractères
sur l’utilisation.
Le format du fichier dump est une archive tar compressée d’un répertoire pgtopo_export contenant au moins un fichier
pgtopo_dump_version avec des informations sur la version du format. A partir de la version 1, le répertoire contient des
fichiers CSV délimités par des tabulations avec les données des tables primitives de topologie (node, edge_data, face, relation),
les enregistrements de topologie et de couche associés et (sauf si --skip-layers est donné) un dump PostgreSQL au format
personnalisé des tables signalées comme étant des couches de la topologie donnée.
Le script pgtopo_import prend un dump topologique au format pgtopo_export et un nom à donner à la topologie à créer
et produit un script SQL reconstruisant la topologie et les couches associées.
Le fichier SQL généré contiendra des instructions qui créent une topologie avec le nom donné, chargent les données primitives,
restaurent et enregistrent toutes les couches de la topologie en liant correctement toutes les valeurs TopoGeometry à leur topologie
correcte.
Par défaut, pgtopo_import lit le dump depuis l’entrée standard afin qu’il puisse être utilisé en conjonction avec pgtopo_
export dans une chaîne de traitement. Vous pouvez optionnellement spécifier un nom de fichier d’entrée avec l’argument -f
en ligne de commande.
Par défaut, pgtopo_import inclut dans le fichier SQL de sortie le code permettant de restaurer toutes les couches trouvées
dans le dump.
Ceci peut être indésirable ou ne pas fonctionner si votre base de données cible a déjà des tables avec le même nom que celles dans
le dump. Dans ce cas, vous pouvez demander à ignorer les couches avec l’argument --skip-layers et les traiter séparément
(ou plus tard).
SQL pour charger et lier uniquement les couches à une topologie nommée peut être généré en utilisant l’argument --only-layers.
Cela peut être utile pour charger des couches APRÈS avoir résolu les conflits de noms ou pour lier des couches à une topologie
différente (par exemple une version spatialement simplifiée de la topologie de départ).
Manuel PostGIS 3.4.0dev 556 / 870
Chapter 9
Dans la plupart des cas, vous créerez des rasters PostGIS en chargeant des fichiers raster existants à l’aide du chargeur de rasters
raster2pgsql.
Le raster2pgsql est un exécutable de chargement de données raster qui charge les formats de données matricielles pris en
charge par GDAL en SQL adapté au chargement dans une table raster PostGIS. Il est capable de charger des dossiers de fichiers
raster ainsi que de créer des aperçus de rasters.
Comme raster2pgsql est le plus souvent compilé dans le cadre de PostGIS (à moins que vous ne compiliez votre propre bib-
liothèque GDAL), les types de données raster pris en charge par l’exécutable seront les mêmes que ceux compilés dans la
bibliothèque de dépendance GDAL. Pour obtenir une liste des types de données raster que votre raster2pgsql supporte,
utilisez l’argument -G.
Note
Lors de la création de vues d’ensemble d’un facteur spécifique à partir d’un ensemble de rasters alignés, il est possible
que les vues d’ensemble ne soient pas alignées. Consultez http://trac.osgeo.org/postgis/ticket/1764 pour un exemple
où les vues d’ensemble ne sont pas alignées.
Une session d’exemple utilisant le chargeur pour créer un fichier d’entrée et le charger en morceaux de 100 x 100 tuiles peut
ressembler à ceci :
# -s use srid 4326
# -I create spatial index
# -C use standard raster constraints
# -M vacuum analyze after load
# *.tif load all these files
# -F include a filename column in the raster table
# -t tile the output 100x100
# public.demelevation load into this table
raster2pgsql -s 4326 -I -C -M -F -t 100x100 *.tif public.demelevation
> elev.sql
Manuel PostGIS 3.4.0dev 557 / 870
Note
Si vous ne spécifiez pas le schéma dans le nom de la table cible, la table sera créée dans le schéma par défaut de la
base de données ou de l’utilisateur avec lequel vous vous connectez.
Une conversion et un téléchargement peuvent être effectués en une seule étape à l’aide de commandes UNIX :
raster2pgsql -s 4326 -I -C -M *.tif -F -t 100x100 public.demelevation | psql -d gisdb
Charger les rasters Massachusetts state plane meters aerial tiles dans un schéma appelé aerial et créer une vue complète, des
tables d’ensemble à 2 et 4 niveaux, utiliser le mode copy pour l’insertion (pas de fichier intermédiaire juste directement dans la
base de données), et -e ne pas forcer tout dans une transaction (bien si vous voulez voir les données dans les tables tout de suite
sans attendre). Décomposer les rasters en tuiles de 128x128 pixels et appliquer les contraintes des rasters. Utilisez le mode copy
au lieu de l’insertion de table. (-F) Inclure un champ appelé filename pour contenir le nom du fichier à partir duquel les tuiles ont
été découpées.
raster2pgsql -I -C -e -Y -F -s 26986 -t 128x128 -l 2,4 bostonaerials2008/*.jpg aerials. ←-
boston | psql -U postgres -d gisdb -h localhost -p 5432
-? Affiche l’écran d’aide. L’aide s’affichera également si vous ne fournissez aucun argument.
-G Affiche les formats raster pris en charge.
(c|a|d|p) Ces options s’excluent mutuellement :
-c Créer une nouvelle table et la remplir de données raster, c’est le mode par défaut
-a Ajouter des données raster à une table existante.
-d Supprimer la table, en créer une nouvelle et l’alimenter avec des données raster
-p En mode préparation, ne créez que la table.
Manuel PostGIS 3.4.0dev 558 / 870
Traitement des données raster : Application de contraintes pour un enregistrement correct dans les catalogues de données
-C Appliquer les contraintes du raster -- srid, pixelsize etc. pour s’assurer que le raster est correctement enregistré dans
la vue raster_columns.
-x Désactive la contrainte d’étendue maximale. Ne s’applique que si l’option -C est également utilisée.
-r Définit les contraintes (espacement unique et tuiles de couverture) pour le blocage régulier. Ne s’applique que si
l’option -C est également utilisée.
Traitement des données raster : Paramètres facultatifs utilisés pour manipuler le jeu de données raster d’entrée
-s <SRID> Attribue au raster de sortie le SRID spécifié. S’il n’est pas fourni ou s’il est égal à zéro, les métadonnées du
raster seront vérifiées pour déterminer un SRID approprié.
-b BAND Indice (basé sur 1) de la bande à extraire du raster. Pour plus d’un indice de bande, séparez-les par une virgule
(,). Si rien n’est spécifié, toutes les bandes de l’image seront extraites.
-t TILE_SIZE Découpe le raster en tuiles qui seront insérées une par une dans la table. TILE_SIZE est exprimée
en LARGEURxHAUTEUR ou fixée à la valeur "auto" pour permettre au chargeur de calculer une taille de tuile
appropriée en utilisant le premier raster et en l’appliquant à tous les rasters.
-P Les tuiles les plus à droite et les plus en bas sont remplacées pour garantir que toutes les tuiles ont la même largeur et
la même hauteur.
-R, --register Enregistrer le raster en tant que raster de système de fichiers (out-db).
Seules les métadonnées du raster et le chemin d’accès au raster sont stockés dans la base de données (pas les pixels).
-l OVERVIEW_FACTOR Créer un aperçu du raster. Pour plus d’un facteur, séparez-les par une virgule (,). Le nom de
la table de synthèse suit le modèle o_facteur de synthèse_table, où facteur de synthèse est un
espace réservé pour le facteur de synthèse numérique et table est remplacé par le nom de la table de base. La vue
d’ensemble créée est stockée dans la base de données et n’est pas affectée par -R. Notez que le fichier sql généré
contiendra à la fois la table principale et les tables de synthèse.
-N NODATA Valeur NODATA à utiliser pour les bandes sans valeur NODATA.
Paramètres facultatifs utilisés pour manipuler les objets de la base de données
-f COLUMN Spécifier le nom de la colonne raster de destination, la valeur par défaut étant "rast"
-F Ajouter une colonne avec le nom du fichier
-n COLONNE Spécifier le nom de la colonne "nom de fichier". Implique -F.
-q Mettre les identifiants PostgreSQL entre guillemets.
-I Créer un index GiST sur la colonne raster.
-M Vacuum analyze la table raster.
-k Conserve les tuiles vides et saute les vérifications des valeurs NODATA pour chaque bande de données matricielles.
Vous gagnez du temps en vérifiant, mais vous risquez de vous retrouver avec beaucoup plus de lignes inutiles dans
votre base de données et ces lignes inutiles ne sont pas marquées comme des tuiles vides.
-T tablespace Spécifier le tablespace pour la nouvelle table. Notez que les index (y compris la clé primaire) utiliseront
toujours le tablespace par défaut à moins que l’option -X ne soit également utilisée.
-X tablespace Spécifier le tablespace pour le nouvel index de la table. Ceci s’applique à la clé primaire et à l’index
spatial si l’option -I est utilisée.
-Y max_rows_per_copy=50 Utiliser les instructions de copie au lieu des instructions d’insertion. Spécifier option-
nellement max_rows_per_copy ; par défaut 50 si non spécifié.
-e Exécutez chaque déclaration individuellement, n’utilisez pas de transaction.
-E ENDIAN Contrôle l’ordre des octets de la sortie binaire générée du raster ; spécifier 0 pour XDR et 1 pour NDR (par défaut)
; seule la sortie NDR est prise en charge actuellement
-V version Indique la version du format de sortie. La valeur par défaut est 0. Seule la valeur 0 est prise en charge pour
l’instant.
Manuel PostGIS 3.4.0dev 559 / 870
Il arrive souvent que vous souhaitiez créer des rasters et des tables de rasters directement dans la base de données. Il existe une
multitude de fonctions pour ce faire. Les étapes générales à suivre.
1. Créer une table avec une colonne raster pour contenir les nouveaux enregistrements raster, ce qui peut être fait avec :
CREATE TABLE myrasters(rid serial primary key, rast raster);
2. Il existe de nombreuses fonctions pour vous aider à atteindre cet objectif. Si vous créez des rasters qui ne sont pas des
dérivés d’autres rasters, vous devrez commencer par ST_MakeEmptyRaster, suivi de ST_AddBand
Vous pouvez également créer des rasters à partir de géométries. Pour ce faire, vous devrez utiliser ST_AsRaster éventuelle-
ment accompagné d’autres fonctions telles que ST_Union ou ST_MapAlgebraFct ou n’importe quelle autre fonction
d’algèbre de carte.
Il existe encore bien d’autres options pour créer de nouvelles tables raster à partir de tables existantes. Par exemple, vous
pouvez créer une table raster dans une projection différente de celle d’une table existante en utilisant ST_Transform
3. Une fois que vous avez rempli votre table initialement, vous devez créer un index spatial sur la colonne des données raster
avec quelque chose comme :
CREATE INDEX myrasters_rast_st_convexhull_idx ON myrasters USING gist( ST_ConvexHull( ←-
rast) );
Notez l’utilisation de ST_ConvexHull puisque la plupart des opérateurs de données raster sont basés sur l’enveloppe
convexe des données raster.
Note
Les versions antérieures à la version 2.0 de PostGIS raster étaient basées sur l’enveloppe plutôt que sur
l’enveloppe convexe. Pour que les index spatiaux fonctionnent correctement, vous devez les supprimer et les
remplacer par des index basés sur l’enveloppe convexe.
L’outil raster2pgsql utilise GDAL pour accéder aux données raster et peut tirer parti d’une fonctionnalité clé de GDAL : la
possibilité de lire des données raster qui sont stockées à distance dans des "magasins d’objets" en nuage (par exemple AWS S3,
Google Cloud Storage).
L’utilisation efficace des rasters stockés dans le cloud nécessite l’utilisation d’un format "optimisé pour le cloud". Le plus connu
et le plus largement utilisé est le format "cloud optimized GeoTIFF". L’utilisation d’un format non optimisé pour le cloud,
comme un JPEG ou un TIFF non structuré, se traduira par des performances très médiocres, car le système devra télécharger
l’intégralité du raster chaque fois qu’il devra accéder à un sous-ensemble.
Tout d’abord, chargez votre raster dans le service de stockage cloud de votre choix. Une fois qu’il est chargé, vous aurez un URI
pour y accéder, soit un URI "http", soit parfois un URI spécifique au service (par exemple, "s3://bucket/object") Pour accéder
aux buckets non publics, vous devrez fournir des options de configuration GDAL pour authentifier votre connexion. Notez que
cette commande lit à partir du raster (stocké dans le cloud) et écrit dans la base de données.
AWS_ACCESS_KEY_ID=xxxxxxxxxxxxxxxxxxxx \
AWS_SECRET_ACCESS_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx \
raster2pgsql \
-s 990000 \
-t 256x256 \
-I \
-R \
/vsis3/your.bucket.com/your_file.tif \
your_table \
| psql your_db
Manuel PostGIS 3.4.0dev 560 / 870
Une fois la table chargée, vous devez donner à la base de données la permission de lire les rasters distants, en définissant deux
permissions, postgis.enable_outdb_rasters et postgis.gdal_enabled_drivers.
SET postgis.enable_outdb_rasters = true;
SET postgis.gdal_enabled_drivers TO 'ENABLE_ALL';
Pour que les changements soient durables, définissez-les directement dans votre base de données. Vous devrez vous reconnecter
pour bénéficier des nouveaux paramètres.
ALTER DATABASE your_db SET postgis.enable_outdb_rasters = true;
ALTER DATABASE your_db SET postgis.gdal_enabled_drivers TO 'ENABLE_ALL';
Pour les rasters non publics, il se peut que vous deviez fournir des clés d’accès pour lire les rasters stockés dans le cloud. Les
mêmes clés que vous avez utilisées pour écrire l’appel raster2pgsql peuvent être définies pour être utilisées à l’intérieur
de la base de données, avec la configuration postgis.gdal_config_options. Notez que plusieurs options peuvent être définies en
séparant les paires key=value par des espaces.
SET postgis.gdal_vsi_options = 'AWS_ACCESS_KEY_ID=xxxxxxxxxxxxxxxxxxxx
AWS_SECRET_ACCESS_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
Une fois les données chargées et les autorisations définies, vous pouvez interagir avec la table raster comme avec n’importe
quelle autre table raster, en utilisant les mêmes fonctions. La base de données se chargera de tous les mécanismes de connexion
aux données stockées dans le cloud lorsqu’elle aura besoin de lire les données des pixels.
Deux vues de catalogue raster sont fournies avec PostGIS. Ces deux vues utilisent des informations intégrées dans les contraintes
des tables raster. Par conséquent, les vues de catalogue sont toujours cohérentes avec les données raster des tables puisque les
contraintes sont appliquées.
1. raster_columns cette vue répertorie toutes les colonnes des tables raster de votre base de données.
2. raster_overviews cette vue répertorie toutes les colonnes des tables raster de votre base de données qui servent
d’aperçu pour une table plus finement structurée. Les tables de ce type sont générées lorsque vous utilisez le commutateur
-l pendant le chargement.
Le raster_columns est un catalogue de toutes les colonnes des tables raster de votre base de données qui sont de type
raster. Il s’agit d’une vue qui utilise les contraintes des tables afin que les informations soient toujours cohérentes, même si
vous restaurez une table raster à partir d’une sauvegarde d’une autre base de données. Les colonnes suivantes existent dans le
catalogue raster_columns.
Si vous n’avez pas créé vos tables avec le chargeur ou si vous avez oublié de spécifier l’option -C pendant le chargement,
vous pouvez appliquer les contraintes après coup en utilisant AddRasterConstraints pour que le catalogue raster_columns
enregistre les informations communes sur vos tuiles raster.
• r_table_catalog La base de données dans laquelle se trouve la table. La lecture se fera toujours dans la base de données
actuelle.
• srid L’identifiant de référence spatiale du raster. Il doit s’agir d’une entrée dans le fichier Section 4.5.
• scale_x L’échelle entre les coordonnées spatiales géométriques et le pixel. Elle n’est disponible que si toutes les tuiles de la
colonne raster ont la même scale_x et que cette contrainte est appliquée. Se référer à ST_ScaleX pour plus de détails.
• scale_y L’échelle entre les coordonnées spatiales géométriques et le pixel. Elle n’est disponible que si toutes les tuiles de la
colonne matricielle ont la même scale_y et que la contrainte scale_y est appliquée. Voir ST_ScaleY pour plus de détails.
• blocksize_x La largeur (nombre de pixels) de chaque tuile raster. Pour plus de détails, voir ST_Width.
• blocksize_y La largeur (nombre de pixels vers le bas) de chaque tuile raster. Voir ST_Height pour plus de détails.
• same_alignment Un booléen qui est vrai si toutes les tuiles raster ont le même alignement . Pour plus de détails, voir
ST_SameAlignment.
• regular_blocking Si la colonne de données raster est soumise aux contraintes d’unicité spatiale et de couverture des
tuiles, la valeur sera TRUE. Dans le cas contraire, la valeur sera FALSE.
• num_bands Le nombre de bandes dans chaque tuile de votre jeu de données raster. Il s’agit de la même information que celle
fournie par ST_NumBands
• pixel_types Un tableau définissant le type de pixel pour chaque bande. Le nombre d’éléments de ce tableau est identique
au nombre de bandes. Les types de pixels sont l’un des suivants, définis dans ST_BandPixelType.
• nodata_values Un tableau de nombres en double précision indiquant la nodata_value pour chaque bande. Le nombre
d’éléments de ce tableau est égal au nombre de bandes. Ces nombres définissent la valeur du pixel pour chaque bande qui doit
être ignorée pour la plupart des opérations. Il s’agit d’informations similaires à celles fournies par ST_BandNoDataValue.
• out_db Un tableau d’indicateurs booléens indiquant si les données des bandes raster sont conservées en dehors de la base de
données. Le nombre d’éléments de ce tableau est égal au nombre de bandes.
• extent Il s’agit de l’étendue de toutes les lignes de votre jeu de données raster. Si vous prévoyez de charger d’autres données
qui modifieront l’étendue de l’ensemble, vous devrez exécuter la fonction DropRasterConstraints avant le chargement, puis
réappliquer les contraintes avec AddRasterConstraints après le chargement.
• spatial_index Un booléen qui est vrai si la colonne raster a un index spatial.
raster_overviews catalogue des informations sur les colonnes des tables raster utilisées pour les aperçus et des informations
supplémentaires à leur sujet qu’il est utile de connaître lors de l’utilisation des aperçus. Les tableaux de synthèse sont catalogués
à la fois dans raster_columns et raster_overviews parce qu’il s’agit d’images raster à part entière, mais aussi parce
qu’elles servent de caricature à plus faible résolution d’un tableau à plus haute résolution. Elles sont générées en même temps
que la table raster principale lorsque vous utilisez le commutateur -l dans le chargement des données raster ou peuvent être
générées manuellement en utilisant AddOverviewConstraints.
Les tableaux d’aperçus contiennent les mêmes contraintes que les autres tableaux raster, ainsi que des contraintes supplémentaires
spécifiques aux aperçus.
Note
Les informations contenues dans raster_overviews ne font pas double emploi avec les informations con-
tenues dans raster_columns. Si vous avez besoin des informations sur un tableau de synthèse présentes dans
raster_columns, vous pouvez joindre les raster_overviews et raster_columns pour obtenir l’ensemble
des informations dont vous avez besoin.
Les deux principales raisons pour lesquelles les aperçus sont nécessaires sont les suivantes :
1. Représentation à basse résolution des tables centrales, couramment utilisée pour l’agrandissement rapide des cartes.
Manuel PostGIS 3.4.0dev 562 / 870
2. Les calculs y sont généralement plus rapides que sur leurs homologues à plus haute résolution, car il y a moins d’enregistrements
et chaque pixel couvre un plus grand territoire. Bien que les calculs ne soient pas aussi précis que les tableaux à haute
résolution qu’ils supportent, ils peuvent être suffisants pour de nombreux calculs empiriques.
• o_table_catalog La base de données dans laquelle se trouve l’aperçu. Il s’agit toujours de la base de données actuelle.
• o_table_schema Schéma de la base de données auquel appartient l’aperçu de la table raster.
• r_table_schema Schéma de la base de données auquel appartient la table raster à laquelle ce service de vue d’ensemble
est associé.
• r_table_name table raster que cet aperçu dessert.
• r_raster_column la colonne raster que cette colonne d’aperçu dessert.
• overview_factor - il s’agit du niveau pyramidal de l’aperçu. Plus le nombre est élevé, plus la résolution du tableau
est faible. raster2pgsql, s’il reçoit un dossier d’images, calculera la vue d’ensemble de chaque fichier image et le chargera
séparément. Le niveau 1 est supposé être le fichier original. Au niveau 2, chaque tuile représente 4 de l’original. Par ex-
emple, si vous avez un dossier de fichiers images de 5000x5000 pixels que vous avez choisi de diviser en 125x125, pour
chaque fichier image votre table de base aura (5000*5000)/(125*125) enregistrements = 1600, votre table (l=2) o_2 aura un
plafond(1600/Power(2,2)) = 400 lignes, votre (l=3) o_3 aura un plafond(1600/Power(2,3) ) = 200 lignes. Si vos pixels ne sont
pas divisibles par la taille de vos tuiles, vous obtiendrez des bouts de tuiles (tuiles non complètement remplies). Notez que
chaque tuile d’aperçu générée par raster2pgsql a le même nombre de pixels que son parent, mais a une résolution inférieure,
chaque pixel représentant (Puissance(2,facteur_d’aperçu) pixels de l’original).
Le fait que PostGIS raster vous fournisse des fonctions SQL pour rendre les rasters dans les formats d’image connus vous donne
beaucoup d’options pour les rendre. Par exemple, vous pouvez utiliser OpenOffice / LibreOffice pour le rendu comme démontré
dans Rendering PostGIS Raster graphics with LibreOffice Base Reports. En outre, vous pouvez utiliser une grande variété de
langages, comme le montre cette section.
9.3.1 Exemple de sortie PHP utilisant ST_AsPNG avec d’autres fonctions raster
Dans cette section, nous allons montrer comment utiliser le driver PHP PostgreSQL et la famille de fonctions ST_AsGDALRaster
pour produire les bandes 1,2,3 d’un raster dans un flux de requête PHP qui peut ensuite être incorporé dans une balise html img
src.
L’exemple de requête montre comment combiner tout un ensemble de fonctions raster pour récupérer toutes les tuiles qui in-
tersectent une boîte de délimitation wgs 84 particulière, puis unit avec ST_Union les tuiles intersectées en retournant toutes
les bandes, transforme en projection spécifiée par l’utilisateur en utilisant ST_Transform, et sort les résultats au format png en
utilisant ST_AsPNG.
Vous appellerez la commande ci-dessous en utilisant
http://mywebserver/test_raster.php?srid=2249
<?php
/** contents of test_raster.php **/
$conn_str ='dbname=mydb host=localhost port=5432 user=myuser password=mypwd';
$dbconn = pg_connect($conn_str);
header('Content-Type: image/png');
/**If a particular projection was requested use it otherwise use mass state plane meters ←-
**/
if (!empty( $_REQUEST['srid'] ) && is_numeric( $_REQUEST['srid']) ){
$input_srid = intval($_REQUEST['srid']);
}
else { $input_srid = 26986; }
/** The set bytea_output may be needed for PostgreSQL 9.0+, but not for 8.4 **/
$sql = "set bytea_output='escape';
SELECT ST_AsPNG(ST_Transform(
ST_AddBand(ST_Union(rast,1), ARRAY[ST_Union(rast,2),ST_Union(rast ←-
,3)])
,$input_srid) ) As new_rast
FROM aerials.boston
WHERE
ST_Intersects(rast, ST_Transform(ST_MakeEnvelope(-71.1217, 42.227, -71.1210, ←-
42.218,4326),26986) )";
$result = pg_query($sql);
$row = pg_fetch_row($result);
pg_free_result($result);
if ($row === false) return;
echo pg_unescape_bytea($row[0]);
?>
9.3.2 Exemple ASP.NET C# Sortie utilisant ST_AsPNG en conjonction avec d’autres fonctions raster
Dans cette section, nous allons montrer comment utiliser le driver Npgsql PostgreSQL .NET et la famille de fonctions ST_AsGDALRaste
pour produire les bandes 1,2,3 d’un raster dans un flux de requête PHP qui peut ensuite être incorporé dans une balise html img
src.
Pour cet exercice, vous aurez besoin du driver PostgreSQL npgsql .NET dont vous pouvez obtenir la dernière version sur
http://npgsql.projects.postgresql.org/. Il vous suffit de télécharger la dernière version et de la placer dans votre dossier ASP.NET
bin.
L’exemple de requête montre comment combiner tout un ensemble de fonctions raster pour récupérer toutes les tuiles qui in-
tersectent une boîte de délimitation wgs 84 particulière, puis unit avec ST_Union les tuiles intersectées en retournant toutes
les bandes, transforme en projection spécifiée par l’utilisateur en utilisant ST_Transform, et sort les résultats au format png en
utilisant ST_AsPNG.
Il s’agit du même exemple que Section 9.3.1 sauf qu’il est implémenté en C#.
Vous appellerez la commande ci-dessous en utilisant
http://mywebserver/TestRaster.ashx?srid=2249
context.Response.ContentType = "image/png";
context.Response.BinaryWrite(GetResults(context));
if (context.Request["srid"] != null)
{
input_srid = Convert.ToInt32(context.Request["srid"]);
}
sql = @"SELECT ST_AsPNG(
ST_Transform(
ST_AddBand(
ST_Union(rast,1), ARRAY[ST_Union(rast,2),ST_Union(rast,3)])
,:input_srid) ) As new_rast
FROM aerials.boston
WHERE
ST_Intersects(rast,
ST_Transform(ST_MakeEnvelope(-71.1217, 42.227, ←-
-71.1210, 42.218,4326),26986) )";
command = new NpgsqlCommand(sql, conn);
command.Parameters.Add(new NpgsqlParameter("input_srid", input_srid));
}
catch (Exception ex)
{
result = null;
context.Response.Write(ex.Message.Trim());
}
Manuel PostGIS 3.4.0dev 565 / 870
return result;
}
}
9.3.3 Application console Java qui produit une requête raster sous forme de fichier image
Il s’agit d’une simple application console Java qui prend une requête renvoyant une image et l’envoie dans le fichier spécifié.
Vous pouvez télécharger les derniers drivers JDBC de PostgreSQL à partir de http://jdbc.postgresql.org/download.html
Vous pouvez compiler le code suivant à l’aide d’une commande du type :
set env CLASSPATH .:..\postgresql-9.0-801.jdbc4.jar
javac SaveQueryImage.java
jar cfm SaveQueryImage.jar Manifest.txt *.class
-- Manifest.txt --
Class-Path: postgresql-9.0-801.jdbc4.jar
Main-Class: SaveQueryImage
try {
//java.sql.DriverManager.registerDriver (new org.postgresql.Driver());
Class.forName("org.postgresql.Driver");
}
catch (ClassNotFoundException cnfe) {
System.out.println("Couldn't find the driver!");
cnfe.printStackTrace();
System.exit(1);
}
try {
conn = DriverManager.getConnection("jdbc:postgresql://localhost:5432/mydb","myuser ←-
", "mypwd");
conn.setAutoCommit(false);
ResultSet rs = sGetImg.executeQuery();
FileOutputStream fout;
try
{
Manuel PostGIS 3.4.0dev 566 / 870
rs.next();
/** Output to file name requested by user **/
fout = new FileOutputStream(new File(argv[1]) );
fout.write(rs.getBytes(1));
fout.close();
}
catch(Exception e)
{
System.out.println("Can't create file");
e.printStackTrace();
}
rs.close();
sGetImg.close();
conn.close();
}
catch (SQLException se) {
System.out.println("Couldn't connect: print out a stack trace and exit.");
se.printStackTrace();
System.exit(1);
}
}
}
Il s’agit d’une fonction stockée en plpython qui crée un fichier dans le répertoire du serveur pour chaque enregistrement. Nécessite
l’installation de plpython. Elle devrait fonctionner correctement avec plpythonu et plpython3u.
CREATE OR REPLACE FUNCTION write_file (param_bytes bytea, param_filepath text)
RETURNS text
AS $$
f = open(param_filepath, 'wb+')
f.write(param_bytes)
return param_filepath
$$ LANGUAGE plpythonu;
write_file
---------------------
C:/temp/slices1.png
C:/temp/slices2.png
C:/temp/slices3.png
C:/temp/slices4.png
C:/temp/slices5.png
Malheureusement, PSQL n’a pas de fonctionnalité intégrée facile à utiliser pour produire des binaires. Il s’agit d’une astuce qui
s’appuie sur le support des gros objets de PostgreSQL. Pour l’utiliser, lancez d’abord votre ligne de commande psql connectée à
votre base de données.
Manuel PostGIS 3.4.0dev 567 / 870
Contrairement à l’approche python, cette approche crée le fichier sur votre ordinateur local.
SELECT oid, lowrite(lo_open(oid, 131072), png) As num_bytes
FROM
( VALUES (lo_create(0),
ST_AsPNG( (SELECT rast FROM aerials.boston WHERE rid=1) )
) ) As v(oid,png);
-- you'll get an output something like --
oid | num_bytes
---------+-----------
2630819 | 74860
-- next note the oid and do this replacing the c:/test.png to file path location
-- on your local computer
\lo_export 2630819 'C:/temp/aerial_samp.png'
Chapter 10
Référence Raster
Les fonctions mentionnées ci-dessous sont celles qu’un utilisateur typique de PostGIS Raster sera amené à utiliser et qui sont
disponibles dans PostGIS Raster. D’autres fonctions sont également définies, requises en interne pour le support des objets
rasters, mais ne sont pas destinées à être utilisées par le grand public.
raster est un nouveau type PostGIS pour stocker et analyser les données raster.
Pour charger des rasters depuis des fichiers, voir Section 9.1
Pour les exemples dans cette section, nous utiliserons une table de rasters fictifs, créée via la requête suivante
CREATE TABLE dummy_rast(rid integer, rast raster);
INSERT INTO dummy_rast(rid, rast)
VALUES (1,
('01' -- little endian (uint8 ndr)
||
'0000' -- version (uint16 0)
||
'0000' -- nBands (uint16 0)
||
'0000000000000040' -- scaleX (float64 2)
||
'0000000000000840' -- scaleY (float64 3)
||
'000000000000E03F' -- ipX (float64 0.5)
||
'000000000000E03F' -- ipY (float64 0.5)
||
'0000000000000000' -- skewX (float64 0)
||
'0000000000000000' -- skewY (float64 0)
||
'00000000' -- SRID (int32 0)
||
'0A00' -- width (uint16 10)
||
'1400' -- height (uint16 20)
)::raster
),
-- Raster: 5 x 5 pixels, 3 bands, PT_8BUI pixel type, NODATA = 0
(2, ('01000003009A9999999999A93F9A9999999999A9BF000000E02B274A' ||
'41000000007719564100000000000000000000000000000000 ←-
FFFFFFFF050005000400FDFEFDFEFEFDFEFEFDF9FAFEF' ||
' ←-
EFCF9FBFDFEFEFDFCFAFEFEFE04004E627AADD16076B4F9FE6370A9F5FE59637AB0E54F58617087040046566487A1506C
')::raster);
Manuel PostGIS 3.4.0dev 569 / 870
10.1.1 geomval
geomval — Un type spatial comportant deux champs : geom (stockant un objet géométrique) et val (stockant la valeur du pixel
en double précision depuis une bande du raster).
Description
geomval est un type composite, comprenant un objet géométrique dans le champ .geom et val, une valeur en double préci-
sion qui représente la valeur du pixel à un emplacement spécifique d’une bande raster. Ce type est utilisé par la fonction
ST_DumpAsPolygon et la famille de fonctions d’intersection Raster, en tant que type de sortie pour éclater une bande raster en
polygones.
Voir aussi
Section 12.6
10.1.2 addbandarg
addbandarg — Un type composite utilisé comme entrée pour la fonction ST_AddBand pour définir les attributs et la valeur
initiale d’une nouvelle bande.
Description
Un type composite utilisé comme entrée pour la fonction ST_AddBand pour définir les attributs et la valeur initiale d’une nouvelle
bande.
index integer Indice (basé sur 1) où insérer la nouvelle bande dans la liste des bandes du raster. Si NULL, la nouvelle bande
sera ajoutée en dernière position.
pixeltype text Type de pixel pour la nouvelle bande. Doit être un des types de pixels définis, tels que décrits dans
ST_BandPixelType.
initialvalue double precision Valeur initiale pour tous les pixels de la nouvelle bande.
nodataval double precision Valeur NODATA pour la nouvelle bande. Si NULL, la nouvelle bande n’aura pas de valeur
NODATA attribuée.
Voir aussi
ST_AddBand
10.1.3 rastbandarg
rastbandarg — Un type composite pour représenter à la fois un raster et un indice d’une bande de ce raster.
Description
Un type composite pour représenter à la fois un raster et un indice d’une bande de ce raster.
Voir aussi
10.1.4 raster
Description
raster est le type de données spatial pour représenter les données rasters, telles qu’importées depuis des fichiers JPEGs, TIFFs,
PNGs, modèles d’élévation numérique. Chaque raster a une ou plusieurs bandes, chacune correspondant à un ensemble de
valeurs de pixels. Les rasters peuvent être géo-référencés.
Note
PostGIS doit être compilé avec le support GDAL. Actuellement, les rasters peuvent être implicitement convertis en type
geometry, mais la conversion retourne un ST_ConvexHull du raster. Ce transtypage implicite peut être supprimé dans
le futur proche et ne devrait pas être utilisé.
Transtypages
Cette section liste les transtypages autorisés pour ce type de donnée, qu’ils soient automatiques ou bien explicites
Voir aussi
Chapter 10
10.1.5 reclassarg
reclassarg — Un type composite utilisé comme entrée pour la fonction ST_Reclass pour définir le comportement de la reclassi-
fication.
Description
Un type composite utilisé comme entrée pour la fonction ST_Reclass pour définir le comportement de la reclassification.
reclassexpr text Expression des classes, sous forme de correspondance range:map_range séparés par des virgules pour
définir les correspondances entre les anciennes valeurs de la bande et la nouvelle valeur. ( signifie plus grand que, )
signifie plus petit que, ] signifie inférieur ou égal, [ signifie supérieur ou égal
1. [a-b] = a <= x <= b
nodataval double precision Valeur à utiliser comme NODATA. Pour les formats d’images supportant la transparence, ces
pixels seront transparents.
Voir aussi
ST_Reclass
10.1.6 summarystats
Description
sum double precision Somme des valeurs de tous les pixels comptabilisés.
mean double precision Moyenne arithmétique des valeurs de tous les pixels comptabilisés.
stddev double precision Écart type des valeurs de tous les pixels comptabilisés.
min double precision Minimum des valeurs de tous les pixels comptabilisés.
max double precision Maximum des valeurs de tous les pixels comptabilisés.
Voir aussi
ST_SummaryStats, ST_SummaryStatsAgg
10.1.7 unionarg
unionarg — Un type composite utilisé comme entrée de la fonction ST_Union pour définir les bandes à traiter et le comportement
de l’opération d’union.
Manuel PostGIS 3.4.0dev 572 / 870
Description
Un type composite utilisé comme entrée de la fonction ST_Union pour définir les bandes à traiter et le comportement de
l’opération d’union.
nband integer Indice (basé sur 1) indiquant la bande de chaque raster d’entrée à traiter.
uniontype text Type de l’opération d’union. Doit être un des types définis, tels que décrits dans ST_Union.
Voir aussi
ST_Union
10.2.1 AddRasterConstraints
AddRasterConstraints — Ajoute des contraintes raster à une table pour une colonne spécifique pour contraindre le système de
référence spatial, l’échelle, la taille des blocs, l’alignement, le nombre de bandes, le type de pixels, la contrainte d’unicité spatiale.
La table doit être chargée avec des données pour que les contraintes puissent être inférées. Retourne true si les contraintes ont
été ajoutées, ou émet une notice sinon.
Synopsis
boolean AddRasterConstraints(name rasttable, name rastcolumn, boolean srid=true, boolean scale_x=true, boolean scale_y=true,
boolean blocksize_x=true, boolean blocksize_y=true, boolean same_alignment=true, boolean regular_blocking=false, boolean
num_bands=true , boolean pixel_types=true , boolean nodata_values=true , boolean out_db=true , boolean extent=true );
boolean AddRasterConstraints(name rasttable, name rastcolumn, text[] VARIADIC constraints);
boolean AddRasterConstraints(name rastschema, name rasttable, name rastcolumn, text[] VARIADIC constraints);
boolean AddRasterConstraints(name rastschema, name rasttable, name rastcolumn, boolean srid=true, boolean scale_x=true,
boolean scale_y=true, boolean blocksize_x=true, boolean blocksize_y=true, boolean same_alignment=true, boolean regular_blocking=fa
boolean num_bands=true, boolean pixel_types=true, boolean nodata_values=true , boolean out_db=true , boolean extent=true );
Description
Génère des contraintes pour une colonne raster, qui peuvent être utilisées pour afficher des informations depuis le catalogue
raster raster_columns. rastschema est le nom du schéma de la table. srid doit être un entier défini dans la table
SPATIAL_REF_SYS.
Le chargeur de rasters raster2pgsql utilise cette fonction pour enregistrer les tables raster
Noms de contraintes à passer en arguments : se référer à Section 9.2.1 pour plus de détails.
• same_alignment garantie que toutes les tuiles ont le même alignement. Comparer n’importe quel couple de tuiles retourn-
era true. Voir ST_SameAlignment pour plus de détails.
• srid garantie que tous les rasters ont le même srid
• Plus -- n’importe quelle contrainte listée parmi les arguments des fonctions décrites ci-dessus
Note
Cette fonction infère les contraintes depuis les données déjà présentes dans la table. Ainsi, vous devez d’abord créer
la colonne raster et charger des données dedans avant de pouvoir utiliser cette fonction.
Note
Si vous avez besoin de charger plus de données dans la table après avoir défini les contraintes, vous pourrez avoir
besoin d’exécuter la fonction DropRasterConstraints avant le chargement, en particulier si l’étendue des données est
modifiée.
Disponibilité : 2.0.0
Exemples : Appliquer toutes les contraintes possibles à partir des données présentes
Voir aussi
10.2.2 DropRasterConstraints
DropRasterConstraints — Supprime des contraintes raster PostGIS raster sur une colonne raster d’une table. Utile pour recharger
des données ou mettre à jour les données d’une colonne raster.
Synopsis
boolean DropRasterConstraints(name rasttable, name rastcolumn, boolean srid, boolean scale_x, boolean scale_y, boolean
blocksize_x, boolean blocksize_y, boolean same_alignment, boolean regular_blocking, boolean num_bands=true, boolean pixel_types=t
boolean nodata_values=true, boolean out_db=true , boolean extent=true);
boolean DropRasterConstraints(name rastschema, name rasttable, name rastcolumn, boolean srid=true, boolean scale_x=true,
boolean scale_y=true, boolean blocksize_x=true, boolean blocksize_y=true, boolean same_alignment=true, boolean regular_blocking=fa
boolean num_bands=true, boolean pixel_types=true, boolean nodata_values=true, boolean out_db=true , boolean extent=true);
boolean DropRasterConstraints(name rastschema, name rasttable, name rastcolumn, text[] constraints);
Description
Supprime des contraintes raster PostGIS ajoutées via AddRasterConstraints sur une colonne raster d’une table. Utile pour
recharger des données ou mettre à jour les données d’une colonne raster. Vous n’avez pas besoin d’appeler cette fonction si
vous voulez supprimer une table raster ou une colonne raster.
Pour supprimer une table raster, utilisez la requête classique
DROP TABLE mytable
Pour supprimer une colonne raster et garder le reste de la table intacte, utilisez la requête classique
ALTER TABLE mytable DROP COLUMN rast
La table disparaîtra du catalogue raster_columns si la colonne ou la table est supprimée. Si seulement les contraintes ont été
supprimées, la colonne raster sera toujours listée dans le catalogue raster_columns, mais il n’y aura pas d’autre information
que les noms de la colonne et de la table.
Disponibilité : 2.0.0
Exemples
0 | | | | | | |
Manuel PostGIS 3.4.0dev 575 / 870
Voir aussi
AddRasterConstraints
10.2.3 AddOverviewConstraints
AddOverviewConstraints — Marque une colonne raster comme étant un aperçu d’une autre colonne.
Synopsis
boolean AddOverviewConstraints(name ovschema, name ovtable, name ovcolumn, name refschema, name reftable, name
refcolumn, int ovfactor);
boolean AddOverviewConstraints(name ovtable, name ovcolumn, name reftable, name refcolumn, int ovfactor);
Description
Ajoute des contraintes sur une colonne raster, qui peuvent être utilisées pour afficher des informations depuis le catalogue raster
raster_overviews.
La paramètre ovfactor représente le facture de multiplication d’échelle pour la colonne d’aperçu : plus le facteur d’aperçu est
élevé, plus résolution est basse.
Si les paramètres ovschema et refschema sont omis, la première table trouvée lors du scan de search_path sera utilisée.
Disponibilité : 2.0.0
Exemples
Voir aussi
10.2.4 DropOverviewConstraints
Synopsis
Description
Supprime dans le catalogue raster raster_overviews les contraintes raster de la colonne indiquant que c’est un aperçu une
autre colonne.
Si le paramètre ovschema est omis, la première table trouvée lors du scan de search_path sera utilisée.
Disponibilité : 2.0.0
Voir aussi
10.2.5 PostGIS_GDAL_Version
Synopsis
text PostGIS_GDAL_Version();
Description
Retourne la version de la bibliothèque GDAL utilisée par PostGIS. Vérifie également si GDAL peut accéder à ses fichiers de
données et reportera une erreur si ce n’est pas le cas.
Exemples
SELECT PostGIS_GDAL_Version();
postgis_gdal_version
-----------------------------------
GDAL 1.11dev, released 2013/04/13
Voir aussi
postgis.gdal_datapath
10.2.6 PostGIS_Raster_Lib_Build_Date
Synopsis
text PostGIS_Raster_Lib_Build_Date();
Description
Exemples
SELECT PostGIS_Raster_Lib_Build_Date();
postgis_raster_lib_build_date
-----------------------------
2010-04-28 21:15:10
Voir aussi
PostGIS_Raster_Lib_Version
10.2.7 PostGIS_Raster_Lib_Version
PostGIS_Raster_Lib_Version — Retourne la version complète de la bibliothèque raster et les informations sur la configuration
de la compilation.
Synopsis
text PostGIS_Raster_Lib_Version();
Description
Retourne la version complète de la bibliothèque raster et les informations sur la configuration de la compilation.
Exemples
SELECT PostGIS_Raster_Lib_Version();
postgis_raster_lib_version
-----------------------------
2.0.0
Voir aussi
PostGIS_Lib_Version
10.2.8 ST_GDALDrivers
ST_GDALDrivers — Retourne la liste des formats raster supportés par PostGIS via GDAL. Seuls les formats avec can_write=True
peuvent être utilisés par ST_AsGDALRaster
Manuel PostGIS 3.4.0dev 578 / 870
Synopsis
setof record ST_GDALDrivers(integer OUT idx, text OUT short_name, text OUT long_name, text OUT can_read, text OUT
can_write, text OUT create_options);
Description
Retourne la liste des formats raster supportés par GDAL, sous forme short_name, long_name et creator. Vous pouvez utiliser
short_name comme paramètre format pour ST_AsGDALRaster. Les options peuvent varier selon les drivers compilés dans
votre bibliothèque libgdal. create_options retourne un XML contenant un ensemble de CreationOptionList/Option avec
comme attribut name et comme attributs optionnels type et description, ainsi qu’un ensemble de VALUE pour chaque
option de création pour ce driver.
Changement : 2.5.0 - ajout des colonnes can_read et can_write.
Changement : 2.0.6, 2.1.3 - aucun driver n’est activé par défaut, sauf si la variable GUC ou d’environnement gdal_enabled_drivers
est définie.
Disponibilité : 2.0.0 - nécessite GDAL >= 1.6.0.
<CreationOptionList>
<Option name="COMPRESS" type="string-select">
<Value
>NONE</Value>
<Value
>LZW</Value>
<Value
Manuel PostGIS 3.4.0dev 580 / 870
>PACKBITS</Value>
<Value
>JPEG</Value>
<Value
>CCITTRLE</Value>
<Value
>CCITTFAX3</Value>
<Value
>CCITTFAX4</Value>
<Value
>DEFLATE</Value>
</Option>
<Option name="PREDICTOR" type="int" description="Predictor Type"/>
<Option name="JPEG_QUALITY" type="int" description="JPEG quality 1-100" default="75"/>
<Option name="ZLEVEL" type="int" description="DEFLATE compression level 1-9" default ←-
="6"/>
<Option name="NBITS" type="int" description="BITS for sub-byte files (1-7), sub-uint16 ←-
(9-15), sub-uint32 (17-31)"/>
<Option name="INTERLEAVE" type="string-select" default="PIXEL">
<Value
>BAND</Value>
<Value
>PIXEL</Value>
</Option>
<Option name="TILED" type="boolean" description="Switch to tiled format"/>
<Option name="TFW" type="boolean" description="Write out world file"/>
<Option name="RPB" type="boolean" description="Write out .RPB (RPC) file"/>
<Option name="BLOCKXSIZE" type="int" description="Tile Width"/>
<Option name="BLOCKYSIZE" type="int" description="Tile/Strip Height"/>
<Option name="PHOTOMETRIC" type="string-select">
<Value
>MINISBLACK</Value>
<Value
>MINISWHITE</Value>
<Value
>PALETTE</Value>
<Value
>RGB</Value>
<Value
>CMYK</Value>
<Value
>YCBCR</Value>
<Value
>CIELAB</Value>
<Value
>ICCLAB</Value>
<Value
>ITULAB</Value>
</Option>
<Option name="SPARSE_OK" type="boolean" description="Can newly created files have ←-
missing blocks?" default="FALSE"/>
<Option name="ALPHA" type="boolean" description="Mark first extrasample as being alpha ←-
"/>
<Option name="PROFILE" type="string-select" default="GDALGeoTIFF">
<Value
>GDALGeoTIFF</Value>
<Value
>GeoTIFF</Value>
<Value
>BASELINE</Value>
</Option>
<Option name="PIXELTYPE" type="string-select">
Manuel PostGIS 3.4.0dev 581 / 870
<Value
>DEFAULT</Value>
<Value
>SIGNEDBYTE</Value>
</Option>
<Option name="BIGTIFF" type="string-select" description="Force creation of BigTIFF file ←-
">
<Value
>YES</Value>
<Value
>NO</Value>
<Value
>IF_NEEDED</Value>
<Value
>IF_SAFER</Value>
</Option>
<Option name="ENDIANNESS" type="string-select" default="NATIVE" description="Force ←-
endianness of created file. For DEBUG purpose mostly">
<Value
>NATIVE</Value>
<Value
>INVERTED</Value>
<Value
>LITTLE</Value>
<Value
>BIG</Value>
</Option>
<Option name="COPY_SRC_OVERVIEWS" type="boolean" default="NO" description="Force copy ←-
of overviews of source dataset (CreateCopy())"/>
</CreationOptionList
>
COMPRESS | string-select | ←-
| NONE, LZW, ←-
PACKBITS, JPEG, CCITTRLE, CCITTFAX3, CCITTFAX4, DEFLATE
PREDICTOR | int | Predictor Type ←-
|
JPEG_QUALITY | int | JPEG quality 1-100 ←-
|
ZLEVEL | int | DEFLATE compression level 1-9 ←-
|
NBITS | int | BITS for sub-byte files (1-7), sub-uint16 (9-15), sub ←-
-uint32 (17-31) |
INTERLEAVE | string-select | ←-
| BAND, PIXEL
TILED | boolean | Switch to tiled format ←-
|
TFW | boolean | Write out world file ←-
|
Manuel PostGIS 3.4.0dev 582 / 870
Voir aussi
10.2.9 ST_Contour
ST_Contour — Génère un ensemble de courbes de niveau vectorielles depuis la bande raster spécifiée, en utilisant l’algorithme
de contour GDAL.
Synopsis
setof record ST_Contour(raster rast, integer bandnumber, double precision level_interval, double precision level_base, double
precision[] fixed_levels, boolean polygonize);
Description
Génère un ensemble de courbes de niveau vectorielles depuis la bande raster spécifiée, en utilisant l’algorithme de contour
GDAL.
Si le paramètre fixed_levels est un tableau non vide, les paramètres level_interval et level_base sont ignorés.
La valeur de retour est un ensemble de résultats avec les attributs suivants :
Disponibilité : 3.2.0
Manuel PostGIS 3.4.0dev 583 / 870
Exemple
WITH c AS (
SELECT (ST_Contour(rast, 1, fixed_levels =
> ARRAY[100.0, 200.0, 300.0])).*
FROM dem_grid WHERE rid = 1
)
SELECT st_astext(geom), id, value
FROM c;
Voir aussi
ST_InterpolateRaster
10.2.10 ST_InterpolateRaster
ST_InterpolateRaster — Interpole une surface quadrillée à partir d’un ensemble de points 3-d, en utilisant les coordonnées X et
Y des points sur la grille et la coordonnée Z des points pour l’élévation des points.
Synopsis
Description
Interpole une surface quadrillée à partir d’un ensemble de points 3-d, en utilisant les coordonnées X et Y des points sur la
grille et la coordonnée Z des points pour l’élévation des points. 5 algorithmes d’interpolations sont disponibles : inverse de
la distance, inverse de la distance avec plus proche voisin, moyenne mobile, plus proche voisin, et interpolation linéaire. Voir
gdal_grid documentation pour plus de détails sur ces algorithmes et leurs paramètres. Pour plus d’informations sur le calcul des
interpolations, voir le tutorial GDAL grid.
Les paramètres d’entrée sont :
input_points Les points pour effectuer l’interpolation. Toute géometrie avec une dimension Z est acceptée ; tous les points de
la géométrie seront utilisés.
algorithm_options Une chaîne définissant l’algorithme et ses options, au format utilisable par gdal_grid. Par exemple, pour une
interpolation en inverse de la distance avec un lissage de 2, la valeur sera "invdist:smoothing=2.0"
template Un gabarit raster pour la création du raster de sortie. Les largeur, hauteur, taille des pixels, étendue spatiale et type des
pixels seront définis à partir de ce gabarit.
template_band_num Indice de la bande raster du gabarit raster à utiliser ; par défaut, la première bande sera utilisée.
Disponibilité : 3.2.0
Exemple
SELECT ST_InterpolateRaster(
'MULTIPOINT(10.5 9.5 1000, 11.5 8.5 1000, 10.5 8.5 500, 11.5 9.5 500)'::geometry,
'invdist:smoothing:2.0',
ST_AddBand(ST_MakeEmptyRaster(200, 400, 10, 10, 0.01, -0.005, 0, 0), '16BSI')
)
Manuel PostGIS 3.4.0dev 584 / 870
Voir aussi
ST_Contour
10.2.11 UpdateRasterSRID
UpdateRasterSRID — Change le SRID de tous les rasters dans la table et colonne en paramètres.
Synopsis
Description
Change le SRID de tous les rasters dans la table et colonne en paramètres. Cette fonction supprimera toutes les contraintes
nécessaires (étendue, alignement et SRID) avant de changer le SRID de la colonne raster.
Note
Les données (les valeurs des pixels) des rasters ne sont pas changées par cette fonction. Seules les métadonnées du
rasters sont modifiées.
Disponibilité : 2.1.0
Voir aussi
UpdateGeometrySRID
10.2.12 ST_CreateOverview
ST_CreateOverview — Créé une version à plus faible résolution d’une colonne raster.
Synopsis
Description
Créé une table d’aperçu avec les tuiles rééchantillonnées depuis la table source. Les tuiles de sortie auront la même taille que les
tuiles d’entrées et couvriront la même étendue, mais avec une résolution plus faible (la taille d’un pixel sera 1/factor dans les
deux directions).
La table d’aperçu sera disponible dans le catalogue raster_overviews avec les contraintes rasters ajoutées.
Les algorithmes disponibles sont : ’NearestNeighbor’ (plus proche voisin), ’Bilinear’ (Bilinéaire), ’Cubic’ (Cubique), ’Cubic-
Spline’ (Cubique Spline) et ’Lanczos’. Voir GDAL Warp resampling methods pour plus de détails.
Disponibilité : 2.2.0
Manuel PostGIS 3.4.0dev 585 / 870
Exemple
Voir aussi
10.3.1 ST_AddBand
ST_AddBand — Retourne un raster avec la/les nouvelle(s) bande(s) ajouté(s) à un index donné, de type et valeur initiale donnés.
Si aucun index n’est spécifié, la bande est ajoutée à la fin.
Synopsis
Description
Retourne un raster avec la nouvelle bande ajoutée à l’index donné, de type, valeur initiale et valeur nodata donnés. Si aucun
index n’est spécifié, la bande est ajoutée à la fin. Si le paramètre fromband n’est pas spécifié, la bande 1 est utilisée. Le type de
pixel est une chaîne contenant un des types de pixels tels que décrits dans ST_BandPixelType. Si un index existant est spécifié,
alors toutes les bandes ayant un index plus grand ou égal auront leur index incrémenté de 1. Si la valeur initiale donnée est plus
grande que le maximum autorisé pour le type de pixel spécifié, alors la valeur initiale sera la valeur maximale autorisée pour le
type de pixel.
Pour la variante acceptant un tableau de addbandarg en paramètre (Variante 1), un index spécifique au paramètre addbandarg est
relative au raster au moment où la bande décrite par ce paramètre addbandarg est ajoutée au raster. Voir l’exemple Multiples
nouvelles bandes ci-dessous.
Pour la variante acceptant un tableau de rasters (Variante 5), si torast est NULL, alors la bande fromband de chaque raster
est accumulée dans le nouveau raster.
Pour les variantes acceptant un paramètre outdbfile (Variantes 6 et 7), la valeur doit correspondre au chemin complet vers le
fichier raster. Ce fichier doit être accessible par le processus du serveur postgres.
Amélioration : 2.1.0 ajout du paramètre addbandarg.
Amélioration : 2.1.0 introduction du support des bandes out-db.
Manuel PostGIS 3.4.0dev 586 / 870
-- Add another band of type 8 bit unsigned integer with pixels initialized to 200
UPDATE dummy_rast
SET rast = ST_AddBand(rast,'8BUI'::text,200)
WHERE rid = 1;
-- Create an empty raster 100x100 units, with upper left right at 0, add 2 bands (band 1 ←-
is 0/1 boolean bit switch, band2 allows values 0-15)
-- uses addbandargs
INSERT INTO dummy_rast(rid,rast)
VALUES(10, ST_AddBand(ST_MakeEmptyRaster(100, 100, 0, 0, 1, -1, 0, 0, 0),
ARRAY[
ROW(1, '1BB'::text, 0, NULL),
ROW(2, '4BUI'::text, 0, NULL)
]::addbandarg[]
)
);
0 | 0 | 100 | 100 | 1 | -1 | 0 | 0 | 0 | ←-
2
SELECT
*
FROM ST_BandMetadata(
ST_AddBand(
ST_MakeEmptyRaster(10, 10, 0, 0, 1, -1, 0, 0, 0),
ARRAY[
ROW(NULL, '8BUI', 255, 0),
ROW(NULL, '16BUI', 1, 2),
ROW(2, '32BUI', 100, 12),
ROW(2, '32BF', 3.14, -1)
]::addbandarg[]
),
ARRAY[]::integer[]
);
Manuel PostGIS 3.4.0dev 587 / 870
-- Aggregate the 1st band of a table of like rasters into a single raster
-- with as many bands as there are test_types and as many rows (new rasters) as there are ←-
mice
-- NOTE: The ORDER BY test_type is only supported in PostgreSQL 9.0+
-- for 8.4 and below it usually works to order your data in a subselect (but not guaranteed ←-
)
-- The resulting raster will have a band for each test_type alphabetical by test_type
-- For mouse lovers: No mice were harmed in this exercise
SELECT
mouse,
ST_AddBand(NULL, array_agg(rast ORDER BY test_type), 1) As rast
FROM mice_studies
GROUP BY mouse;
SELECT
*
FROM ST_BandMetadata(
ST_AddBand(
ST_MakeEmptyRaster(10, 10, 0, 0, 1, -1, 0, 0, 0),
'/home/raster/mytestraster.tif'::text, NULL::int[]
),
ARRAY[]::integer[]
);
Voir aussi
10.3.2 ST_AsRaster
Synopsis
raster ST_AsRaster(geometry geom, raster ref, text pixeltype, double precision value=1, double precision nodataval=0, boolean
touched=false);
raster ST_AsRaster(geometry geom, raster ref, text[] pixeltype=ARRAY[’8BUI’], double precision[] value=ARRAY[1], double
precision[] nodataval=ARRAY[0], boolean touched=false);
raster ST_AsRaster(geometry geom, double precision scalex, double precision scaley, double precision gridx, double preci-
sion gridy, text pixeltype, double precision value=1, double precision nodataval=0, double precision skewx=0, double precision
Manuel PostGIS 3.4.0dev 588 / 870
Description
Convertit une géométrie PostGIS en un raster PostGIS. Les nombreuses variantes permettent trois groupes de possibilités pour
définir l’alignement et la taille des pixels du raster en sortie.
Le premier groupe, constitué des deux premières variantes, produit un raster avec le même alignement (scalex, scaley,
gridx et gridy), le même type de pixels et la même valeur nodata que le raster donné en référence. En général, vous passerez
cette référence en faisant une jointure entre la table contenant la géométrie avec la table contenant le raster de référence.
Le second groupe, composé de quatre variantes, vous permettent de spécifier les dimensions du raster via les paramètres de taille
de pixel (scalex & scaley et skewx & skewy). Les dimensions width & height du raster résultant seront ajustés pour
s’adapter à l’étendu de la géométrie. Dans la plupart des cas, vous devrez transtyper les paramètres scalex & scaley de
integer à double precision pour que PostgreSQL choisisse la variante correcte.
Le troisième groupe, composé de quatre variantes, vous permettent de spécifier les dimensions du raster directement (width &
height). Les paramètres de taille de pixel (scalex & scaley et skewx & skewy) du raster résultant seront ajustés pour
s’adapter à l’étendue de la géométrie.
Les deux premières variantes des deux derniers groupes vous permettent de spécifier l’alignement avec un coin arbitraire de la
grille d’alignement (gridx & gridy) et les deux dernières variantes via le coin haut-gauche (upperleftx & upperlefty).
Chaque groupe de variantes permet de produire un raster à une ou plusieurs bandes. Pour plusieurs bandes, vous devez fournir
un tableau de types de pixels (pixeltype[]), un tableau de valeurs initiales (value) et un tableau de valeurs nodata
(nodataval). Si non fournis, pixeltype est par défaut à 8BUI, value à 1 et nodataval à 0.
Le raster en sortie aura le même système de référence spatial que la géométrie source, sauf pour les variantes utilisant un raster
de référence. Dans ce cas, le raster en sortie aura le même SRID que le raster de référence.
Le paramètre optionnel touched est par défaut à false et correspond à l’option GDAL ALL_TOUCHED, qui détermine si les
pixels touchés par des lignes ou polygones seront mis à jour, et pas seulement ceux sur le chemin de la ligne ou dont le point
central est dans le polygone.
Ceci est particulièrement utile pour le rendu de JPEGs et de PNGs directement depuis la base de données en utilisant une
combinaison de ST_AsPNG et des fonctions de la famille de ST_AsGDALRaster.
Disponibilité : 2.0.0 - nécessite GDAL >= 1.6.0.
Manuel PostGIS 3.4.0dev 589 / 870
Note
Pas encore en mesure de faire le rendu de géométries complexes comme les CURVES, TIN et PolyhedralSurfaces,
mais cela devrait être le cas lorsque GDAL le supportera.
cercle noir
Voir aussi
10.3.3 ST_Band
ST_Band — Retourne une ou plusieurs bandes d’un raster existant en tant que nouveau raster. Utile pour construire de nouveaux
rasters à partir de rasters existants.
Manuel PostGIS 3.4.0dev 590 / 870
Synopsis
Description
Retourne une ou plusieurs bandes d’un raster existant en tant que nouveau raster. Utile pour construire de nouveaux rasters à
partir de rasters existants ou pour exporter certaines bandes d’un raster, ou pour réarranger l’ordre des bandes d’un raster. Si
aucune bande n’est spécifiée, ou si aucune des bandes spécifiées n’existent dans le raster, alors toutes les bandes sont retournées.
Cette fonction est utilisée en interne par diverses fonctions, comme pour supprimer une bande.
Warning
Pour les variantes avec le paramètre nbands en texte, le délimiteur par défaut est ,, il faut donc passer par exemple
’1,2,3’. Pour utiliser un autre délimiteur, utilisez le paramètre delimiter : ST_Band(rast, ’1@2@3’, ’@’).
Néanmoins, pour utiliser plusieurs bandes, nous encourageons fortement d’utiliser la variante avec le paramètre de
type tableau (e.g. ST_Band(rast, ’{1,2,3}’::int[]);); la variante avec la liste de bandes en text peut
être supprimée des prochaines versions de PostGIS.
Disponibilité : 2.0.0
Exemples
-- Make 2 new rasters: 1 containing band 1 of dummy, second containing band 2 of dummy and ←-
then reclassified as a 2BUI
SELECT ST_NumBands(rast1) As numb1, ST_BandPixelType(rast1) As pix1,
ST_NumBands(rast2) As numb2, ST_BandPixelType(rast2) As pix2
FROM (
SELECT ST_Band(rast) As rast1, ST_Reclass(ST_Band(rast,3), '100-200):1, [200-254:2', '2 ←-
BUI') As rast2
FROM dummy_rast
WHERE rid = 2) As foo;
num_bands
----------
2
--Make a new raster with 2nd band of original and 1st band repeated twice,
and another with just the third band
SELECT rast, ST_Band(rast, ARRAY[2,1,1]) As dupe_band,
ST_Band(rast, 3) As sing_band
FROM samples.than_chunked
WHERE rid=35;
Voir aussi
10.3.4 ST_MakeEmptyCoverage
ST_MakeEmptyCoverage — Couvre une zone géo-référencée avec une grille raster de tuiles vides.
Synopsis
raster ST_MakeEmptyCoverage(integer tilewidth, integer tileheight, integer width, integer height, double precision upperleftx,
double precision upperlefty, double precision scalex, double precision scaley, double precision skewx, double precision skewy,
integer srid=unknown);
Description
Créé un ensemble de tuiles rasters via ST_MakeEmptyRaster. La dimension de la grille est définie par width & height. La
dimension des tuiles est définie par tilewidth & tileheight. La zone géo-référencée couverte démarre au coin supérieur
gauche (upperleftx, upperlefty) jusqu’au coin inférieur droit (upperleftx + width * scalex, upperlefty +
height * scaley).
Note
A noter que scaley est généralement négatif pour les rasters, alors que scalex est généralement positif. Le coin inférieur
droit aura une valeur Y inférieure et une valeur X supérieure au coin supérieur gauche.
Disponibilité : 2.4.0
Manuel PostGIS 3.4.0dev 592 / 870
Exemples de base
Créer 16 tuiles de 1x1px dans une grille 4x4 pour couvrir une zone WGS84 du coin supérieur gauche (22, 77) jusqu’au coin
inférieur droit (55, 33).
SELECT (ST_MetaData(tile)).* FROM ST_MakeEmptyCoverage(1, 1, 4, 4, 22, 33, (55 - 22)/(4):: ←-
float, (33 - 77)/(4)::float, 0., 0., 4326) tile;
Voir aussi
ST_MakeEmptyRaster
10.3.5 ST_MakeEmptyRaster
ST_MakeEmptyRaster — Retourne un raster vide (sans aucune bande) de dimension donnée (width & height), de coin supérieur
gauche à X et Y, de paramètres de taille de pixel données (scalex, scaley, skewx & skewy) et de système de référence spatial
(srid) donné. Si un raster est spécifié, retourne un nouveau raster de même taille, alignement et SRID. Si srid n’est pas spécifié,
le système de référence spatial est défini à inconnu (0).
Synopsis
Description
Retourne un raster vide (sans aucune bande) de dimension donnée (width & height), géo-référencé via le coin supérieur gauche
(upperleftx & upperlefty), via les paramètres de taille de pixel données (scalex, scaley, skewx & skewy) et via le système de
référence spatial (srid) donné.
La dernière variante utilise un seul paramètre pour spécifier la taille des pixels (pixelsize). scalex est défini à la valeur de ce
paramètre et scaley est défini à la valeur négative de ce paramètre. skewx et skewy sont définis à 0.
Si un raster existant est spécifié, retourne un nouveau raster avec les mêmes métadonnées (sans aucune bande).
Si aucun srid n’est spécifié, la valeur 0 est utilisée. Après avoir créé un raster vide, vous voudrez probablement ajouter des bandes
ou l’éditer. Voir ST_AddBand pour définir des bandes et ST_SetValue pour initialiser des valeurs.
Exemples
-- output --
rid | upperleftx | upperlefty | width | height | scalex | scaley | skewx | skewy | srid | ←-
numbands
-----+------------+------------+-------+--------+------------+------------+-------+-------+------+---
Voir aussi
10.3.6 ST_Tile
ST_Tile — Retourne un ensemble de rasters issus de la division d’un raster d’entrée selon les dimensions spécifiées pour les
rasters de sortie.
Synopsis
setof raster ST_Tile(raster rast, int[] nband, integer width, integer height, boolean padwithnodata=FALSE, double precision no-
dataval=NULL);
Manuel PostGIS 3.4.0dev 594 / 870
setof raster ST_Tile(raster rast, integer nband, integer width, integer height, boolean padwithnodata=FALSE, double precision
nodataval=NULL);
setof raster ST_Tile(raster rast, integer width, integer height, boolean padwithnodata=FALSE, double precision nodataval=NULL);
Description
Retourne un ensemble de rasters issus de la division d’un raster d’entrée selon les dimensions spécifiées pour les rasters de sortie.
Si padwithnodata est FALSE, les tuiles des bords droits et bas peuvent avoir des dimensions différentes du reste des tuiles. Si
padwithnodata est TRUE, toutes les tuiles auront les mêmes dimensions, potentiellement avec les tuiles des bords complétées
par la valeur NODATA. Si la bande raster n’a pas de valeur NODATA définie, cette valeur peut être spécifiée via le paramètre
nodataval.
Note
Si une bande spécifiée du raster d’entrée est out-of-db, la bande correspondant dans les rasters de sortie sera aussi
out-of-db.
Disponibilité : 2.1.0
Exemples
WITH foo AS (
SELECT ST_AddBand(ST_AddBand(ST_MakeEmptyRaster(3, 3, 0, 0, 1, -1, 0, 0, 0), 1, '8BUI', ←-
1, 0), 2, '8BUI', 10, 0) AS rast UNION ALL
SELECT ST_AddBand(ST_AddBand(ST_MakeEmptyRaster(3, 3, 3, 0, 1, -1, 0, 0, 0), 1, '8BUI', ←-
2, 0), 2, '8BUI', 20, 0) AS rast UNION ALL
SELECT ST_AddBand(ST_AddBand(ST_MakeEmptyRaster(3, 3, 6, 0, 1, -1, 0, 0, 0), 1, '8BUI', ←-
3, 0), 2, '8BUI', 30, 0) AS rast UNION ALL
st_dumpvalues
------------------------------------------
(1,"{{1,1,1},{1,1,1},{1,1,1}}")
(2,"{{10,10,10},{10,10,10},{10,10,10}}")
(1,"{{2,2,2},{2,2,2},{2,2,2}}")
(2,"{{20,20,20},{20,20,20},{20,20,20}}")
Manuel PostGIS 3.4.0dev 595 / 870
(1,"{{3,3,3},{3,3,3},{3,3,3}}")
(2,"{{30,30,30},{30,30,30},{30,30,30}}")
(1,"{{4,4,4},{4,4,4},{4,4,4}}")
(2,"{{40,40,40},{40,40,40},{40,40,40}}")
(1,"{{5,5,5},{5,5,5},{5,5,5}}")
(2,"{{50,50,50},{50,50,50},{50,50,50}}")
(1,"{{6,6,6},{6,6,6},{6,6,6}}")
(2,"{{60,60,60},{60,60,60},{60,60,60}}")
(1,"{{7,7,7},{7,7,7},{7,7,7}}")
(2,"{{70,70,70},{70,70,70},{70,70,70}}")
(1,"{{8,8,8},{8,8,8},{8,8,8}}")
(2,"{{80,80,80},{80,80,80},{80,80,80}}")
(1,"{{9,9,9},{9,9,9},{9,9,9}}")
(2,"{{90,90,90},{90,90,90},{90,90,90}}")
(18 rows)
WITH foo AS (
SELECT ST_AddBand(ST_AddBand(ST_MakeEmptyRaster(3, 3, 0, 0, 1, -1, 0, 0, 0), 1, '8BUI', ←-
1, 0), 2, '8BUI', 10, 0) AS rast UNION ALL
SELECT ST_AddBand(ST_AddBand(ST_MakeEmptyRaster(3, 3, 3, 0, 1, -1, 0, 0, 0), 1, '8BUI', ←-
2, 0), 2, '8BUI', 20, 0) AS rast UNION ALL
SELECT ST_AddBand(ST_AddBand(ST_MakeEmptyRaster(3, 3, 6, 0, 1, -1, 0, 0, 0), 1, '8BUI', ←-
3, 0), 2, '8BUI', 30, 0) AS rast UNION ALL
st_dumpvalues
------------------------------------------
(1,"{{10,10,10},{10,10,10},{10,10,10}}")
(1,"{{20,20,20},{20,20,20},{20,20,20}}")
(1,"{{30,30,30},{30,30,30},{30,30,30}}")
(1,"{{40,40,40},{40,40,40},{40,40,40}}")
(1,"{{50,50,50},{50,50,50},{50,50,50}}")
(1,"{{60,60,60},{60,60,60},{60,60,60}}")
(1,"{{70,70,70},{70,70,70},{70,70,70}}")
(1,"{{80,80,80},{80,80,80},{80,80,80}}")
(1,"{{90,90,90},{90,90,90},{90,90,90}}")
(9 rows)
Manuel PostGIS 3.4.0dev 596 / 870
Voir aussi
ST_Union, ST_Retile
10.3.7 ST_Retile
ST_Retile — Retourne un ensemble de tuiles configurées à partir d’une couverture raster composée de tuiles arbitraires.
Synopsis
SETOF raster ST_Retile(regclass tab, name col, geometry ext, float8 sfx, float8 sfy, int tw, int th, text algo=’NearestNeighbor’);
Description
Retourne un ensemble de tuiles ayant l’échelle spécifiée (sfx, sfy), de taille maximale (tw, th) et couvrant l’étendue spécifiée
(ext), et avec les données provenant de la couverture raster spécifiée (tab, col).
Les algorithmes disponibles sont : ’NearestNeighbor’ (plus proche voisin), ’Bilinear’ (Bilinéaire), ’Cubic’ (Cubique), ’Cubic-
Spline’ (Cubique Spline) et ’Lanczos’. Voir GDAL Warp resampling methods pour plus de détails.
Disponibilité : 2.2.0
Voir aussi
ST_CreateOverview
10.3.8 ST_FromGDALRaster
Synopsis
Description
Retourne un raster depuis un fichier raster supporté par GDAL. Le paramètre gdaldata de type bytea est le contenu du fichier
raster GDAL.
Si srid est NULL, la fonction essaye de déterminer le SRID depuis le raster GDAL. Si srid est spécifié, la valeur spécifiée
écrase tout SRID déterminé automatiquement.
Disponibilité : 2.1.0
Exemples
WITH foo AS (
SELECT ST_AsPNG(ST_AddBand(ST_AddBand(ST_AddBand(ST_MakeEmptyRaster(2, 2, 0, 0, 0.1, ←-
-0.1, 0, 0, 4326), 1, '8BUI', 1, 0), 2, '8BUI', 2, 0), 3, '8BUI', 3, 0)) AS png
),
bar AS (
SELECT 1 AS rid, ST_FromGDALRaster(png) AS rast FROM foo
UNION ALL
SELECT 2 AS rid, ST_FromGDALRaster(png, 3310) AS rast FROM foo
Manuel PostGIS 3.4.0dev 597 / 870
)
SELECT
rid,
ST_Metadata(rast) AS metadata,
ST_SummaryStats(rast, 1) AS stats1,
ST_SummaryStats(rast, 2) AS stats2,
ST_SummaryStats(rast, 3) AS stats3
FROM bar
ORDER BY rid;
Voir aussi
ST_AsGDALRaster
10.4.1 ST_GeoReference
ST_GeoReference — Retourne les méta-données de géo-référencement au format GDAL (par défaut) ou ESRI, tel qu’utilisé
généralement dans les fichiers world file.
Synopsis
Description
Retourne les méta-données de géo-référencement au format GDAL ou ESRI, tel qu’utilisé généralement dans les fichiers world
file. Si aucun type n’est spécifié, utilise le format GDAL par défaut. type est une chaîne ’GDAL’ ou ’ESRI’.
La différence entre les représentations de format est la suivante :
GDAL :
scalex
skewy
skewx
scaley
upperleftx
upperlefty
ESRI :
scalex
skewy
skewx
scaley
upperleftx + scalex*0.5
upperlefty + scaley*0.5
Manuel PostGIS 3.4.0dev 598 / 870
Exemples
esri_ref | gdal_ref
--------------+--------------
2.0000000000 | 2.0000000000
0.0000000000 : 0.0000000000
0.0000000000 : 0.0000000000
3.0000000000 : 3.0000000000
1.5000000000 : 0.5000000000
2.0000000000 : 0.5000000000
Voir aussi
10.4.2 ST_Height
Synopsis
Description
Exemples
rid | rastheight
-----+------------
1 | 20
2 | 5
Voir aussi
ST_Width
10.4.3 ST_IsEmpty
ST_IsEmpty — Retourne true si le raster est vide (largeur = 0 et hauteur = 0). Sinon, retourne false.
Synopsis
Description
Retourne true si le raster est vide (largeur = 0 et hauteur = 0). Sinon, retourne false.
Disponibilité : 2.0.0
Exemples
Voir aussi
ST_HasNoBand
10.4.4 ST_MemSize
Synopsis
Description
Note
pg_relation_size qui donne la taille en octets d’une table peut renvoyer une taille en octets inférieure à ST_MemSize.
Cela est dû au fait que pg_relation_size n’ajoute pas la contribution des tables toasted et que les grandes géométries
sont stockées dans les tables TOAST. pg_column_size peut retourner une valeur inférieure parce qu’elle retourne la
taille compressée.
pg_total_relation_size - comprend la table, les tables toasted et les index.
Disponibilité : 2.2.0
Manuel PostGIS 3.4.0dev 600 / 870
Exemples
rast_mem
--------
22568
Voir aussi
10.4.5 ST_MetaData
ST_MetaData — Retourne les méta-données de base de l’objet raster : taille des pixels, rotation, coin haut/bas gauche, etc.
Synopsis
Description
Retourne les méta-données de base de l’objet raster : taille des pixels, rotation, coin haut/bas gauche, etc. Les colonnes retournées
sont : upperleftx | upperlefty | width | height | scalex | scaley | skewx | skewy | srid | numbands
Exemples
rid | upperleftx | upperlefty | width | height | scalex | scaley | skewx | skewy | srid | ←-
numbands
----+------------+------------+-------+--------+--------+-----------+-------+-------+------+-------
1 | 0.5 | 0.5 | 10 | 20 | 2 | 3 | 0 | 0 | 0 | ←-
0
2 | 3427927.75 | 5793244 | 5 | 5 | 0.05 | -0.05 | 0 | 0 | 0 | ←-
3
Voir aussi
ST_BandMetaData, ST_NumBands
10.4.6 ST_NumBands
Synopsis
Description
Exemples
rid | numbands
----+----------
1 | 0
2 | 3
Voir aussi
ST_Value
10.4.7 ST_PixelHeight
ST_PixelHeight — Retourne la hauteur d’un pixel, dans l’unité du système de référence spatial.
Synopsis
Description
Retourne la hauteur d’un pixel, dans l’unité du système de référence spatial. Dans le cas général où il n’y a pas d’obliquité
(skew), la hauteur d’un pixel est simplement l’échelle entre les coordonnées géométriques et les pixels rasters.
Voir ST_PixelWidth pour une représentation schématique de la relation.
Voir aussi
10.4.8 ST_PixelWidth
ST_PixelWidth — Retourne la largeur d’un pixel, dans l’unité du système de référence spatial.
Synopsis
Description
Retourne la largeur d’un pixel, dans l’unité du système de référence spatial. Dans le cas général où il n’y a pas d’obliquité (skew),
la largeur d’un pixel est simplement l’échelle entre les coordonnées géométriques et les pixels rasters.
Le diagramme suivant illustre cette relation :
Voir aussi
10.4.9 ST_ScaleX
ST_ScaleX — Renvoie la composante X de la largeur du pixel dans l’unité du système de référence spatial.
Synopsis
Description
Renvoie la composante X de la largeur du pixel dans l’unité du système de référence spatial. Voir World File pour plus de détails.
Changement : 2.0.0. Dans les versions WKTRaster, cette fonction était appelée ST_PixelSizeX.
Exemples
rid | rastpixwidth
-----+--------------
1 | 2
2 | 0.05
Voir aussi
ST_Width
Manuel PostGIS 3.4.0dev 604 / 870
10.4.10 ST_ScaleY
ST_ScaleY — Renvoie la composante Y de la hauteur du pixel dans l’unité du système de référence spatial.
Synopsis
Description
Renvoie la composante Y de la hauteur du pixel dans l’unité du système de référence spatial. Peut être négative. Voir World File
pour plus de détails.
Changement : 2.0.0. Dans les versions WKTRaster, cette fonction était appelée ST_PixelSizeY.
Exemples
rid | rastpixheight
-----+---------------
1 | 3
2 | -0.05
Voir aussi
ST_Height
10.4.11 ST_RasterToWorldCoord
ST_RasterToWorldCoord — Retourne le coin supérieur gauche du raster, sous forme de coordonnées X et Y (longitude et
latitude) d’un colonne et d’une ligne. Les numéros de colonne et de ligne commencent à 1.
Synopsis
Description
Retourne le coin supérieur gauche du raster, sous forme de coordonnées X et Y (longitude et latitude) d’un colonne et d’une
ligne. Les valeurs X et Y retournées sont dans l’unité du système de référence spatial du raster géo-référencé. Les numéros de
colonne et de ligne commencent à 1, mais si l’un des deux paramètres est 0, un nombre négatif ou supérieur à la dimension du
raster, la fonction retourne des coordonnées en dehors du raster, en supposant que la grille du raster est applicable en dehors de
son étendue.
Disponibilité : 2.1.0
Manuel PostGIS 3.4.0dev 605 / 870
Exemples
-- non-skewed raster
SELECT
rid,
(ST_RasterToWorldCoord(rast,1, 1)).*,
(ST_RasterToWorldCoord(rast,2, 2)).*
FROM dummy_rast
-- skewed raster
SELECT
rid,
(ST_RasterToWorldCoord(rast, 1, 1)).*,
(ST_RasterToWorldCoord(rast, 2, 3)).*
FROM (
SELECT
rid,
ST_SetSkew(rast, 100.5, 0) As rast
FROM dummy_rast
) As foo
Voir aussi
10.4.12 ST_RasterToWorldCoordX
ST_RasterToWorldCoordX — Retourne la coordonnée X du coin supérieur gauche du raster à column et row. Les numéros de
colonne et de ligne commencent à 1.
Synopsis
Description
Retourne la coordonnée X du coin supérieur gauche du raster à column et row dans l’unité du système de référence spatial du
raster géo-référencé. Les numéros de colonne et de ligne commencent à 1, mais si l’un des deux paramètres est 0, un nombre
négatif ou supérieur à la dimension du raster, la fonction retourne des coordonnées en dehors du raster, en supposant que la grille
du raster est applicable en dehors de son étendue (même taille de pixel et skew).
Note
Pour des rasters sans obliquité (skew), fournir le numéro de colonne X est suffisant. Pour des rasters avec obliquité,
les coordonnées géo-référencées sont fonction de ST_ScaleX et ST_SkewX et de la ligne et colonne. Une erreur sera
émise si seulement la colonne X est fournie pour une raster avec obliquité.
Manuel PostGIS 3.4.0dev 606 / 870
Changement : 2.1.0 Jusqu’à la version 2.0.x, cette fonction était appelée ST_Raster2WorldCoordX
Exemples
Voir aussi
10.4.13 ST_RasterToWorldCoordY
ST_RasterToWorldCoordY — Retourne la coordonnée Y du coin supérieur gauche du raster à column et row. Les numéros de
colonne et de ligne commencent à 1.
Synopsis
Description
Retourne la coordonnée Y du coin supérieur gauche du raster à column et row dans l’unité du système de référence spatial du
raster géo-référencé. Les numéros de colonne et de ligne commencent à 1, mais si l’un des deux paramètres est 0, un nombre
négatif ou supérieur à la dimension du raster, la fonction retourne des coordonnées en dehors du raster, en supposant que la grille
du raster est applicable en dehors de son étendue (même taille de pixel et skew).
Note
Pour des rasters sans obliquité (skew), fournir le numéro de ligne Y est suffisant. Pour des rasters avec obliquité, les
coordonnées géo-référencées sont fonction de ST_ScaleY et ST_SkewY et de la ligne et colonne. Une erreur sera
émise si seulement la ligne Y est fournie pour une raster avec obliquité.
Changement : 2.1.0 Jusqu’à la version 2.0.x, cette fonction était appelée ST_Raster2WorldCoordY
Manuel PostGIS 3.4.0dev 607 / 870
Exemples
Voir aussi
10.4.14 ST_Rotation
Synopsis
Description
Retourne la rotation uniforme du raster en radians. Si le raster n’a pas de rotation uniforme, retourne NaN. Voir World File pour
plus de détails.
Exemples
rid | rot
-----+-------------------
1 | 0.785398163397448
2 | 0.785398163397448
Voir aussi
10.4.15 ST_SkewX
Synopsis
Description
Retourne l’obliquité géo-référencée X (paramètre de rotation). Voir World File pour plus de détails.
Exemples
Voir aussi
10.4.16 ST_SkewY
Synopsis
Description
Retourne l’obliquité géo-référencée Y (paramètre de rotation). Voir World File pour plus de détails.
Manuel PostGIS 3.4.0dev 609 / 870
Exemples
Voir aussi
10.4.17 ST_SRID
ST_SRID — Retourne l’identifiant du système de référence spatial du raster, tel que défini dans la table spatial_ref_sys.
Synopsis
Description
Retourne l’identifiant du système de référence spatial du raster, tel que défini dans la table spatial_ref_sys.
Note
À partir de PostGIS 2.0+, le SRID d’un raster ou d’une géométrie non-géo-référencée est 0 au lieu de -1 précédem-
ment.
Exemples
srid
----------------
0
Manuel PostGIS 3.4.0dev 610 / 870
Voir aussi
10.4.18 ST_Summary
Synopsis
Description
Exemples
SELECT ST_Summary(
ST_AddBand(
ST_AddBand(
ST_AddBand(
ST_MakeEmptyRaster(10, 10, 0, 0, 1, -1, 0, 0, 0)
, 1, '8BUI', 1, 0
)
, 2, '32BF', 0, -9999
)
, 3, '16BSI', 0, NULL
)
);
st_summary
------------------------------------------------------------------
Raster of 10x10 pixels has 3 bands and extent of BOX(0 -10,10 0)+
band 1 of pixtype 8BUI is in-db with NODATA value of 0 +
band 2 of pixtype 32BF is in-db with NODATA value of -9999 +
band 3 of pixtype 16BSI is in-db with no NODATA value
(1 row)
Voir aussi
10.4.19 ST_UpperLeftX
ST_UpperLeftX — Retourne la coordonnée X du coin supérieur gauche du raster projeté dans le système de référence spatial.
Synopsis
Description
Retourne la coordonnée X du coin supérieur gauche du raster projeté dans le système de référence spatial.
Exemples
rid | ulx
-----+------------
1 | 0.5
2 | 3427927.75
Voir aussi
10.4.20 ST_UpperLeftY
ST_UpperLeftY — Retourne la coordonnée Y du coin supérieur gauche du raster projeté dans le système de référence spatial.
Synopsis
Description
Retourne la coordonnée Y du coin supérieur gauche du raster projeté dans le système de référence spatial.
Exemples
rid | uly
-----+---------
1 | 0.5
2 | 5793244
Voir aussi
10.4.21 ST_Width
Synopsis
Description
Exemples
rastwidth
----------------
10
Voir aussi
ST_Height
10.4.22 ST_WorldToRasterCoord
ST_WorldToRasterCoord — Retourne le coin supérieur gauche comme colonne et ligne, en fonction de coordonnées géométriques
X et Y (longitude et latitude) ou un point géométrique dans le système de référence spatial du raster.
Synopsis
Description
Retourne le coin supérieur gauche comme colonne et ligne, en fonction de coordonnées géométriques X et Y (longitude et
latitude) ou un point géométrique. Cette fonction fonctionne aussi bien si X et Y ou le point sont dans l’étendue du raster ou non.
Les coordonnées géométriques X et Y ou les coordonnées du point doivent être dans le système de référence spatial du raster.
Disponibilité : 2.1.0
Exemples
SELECT
rid,
(ST_WorldToRasterCoord(rast,3427927.8,20.5)).*,
(ST_WorldToRasterCoord(rast,ST_GeomFromText('POINT(3427927.8 20.5)',ST_SRID(rast)))).*
FROM dummy_rast;
Voir aussi
10.4.23 ST_WorldToRasterCoordX
ST_WorldToRasterCoordX — Retourne la colonne dans le raster du point géométrique (pt) ou des coordonnées X et Y (xw, yw)
exprimés dans le système de référence spatial du raster.
Synopsis
Description
Retourne la colonne dans le raster du point géométrique (pt) ou des coordonnées X et Y (xw, yw). Un point, ou le couple (xw,
yw) sont requis pour un raster avec obliquité (skew). Sinon, xw est suffisant. Les coordonnées sont exprimées dans le système
de référence spatial du raster.
Changement : 2.1.0 Dans les versions précédentes, cette fonctionne était appelée ST_World2RasterCoordX
Exemples
Voir aussi
10.4.24 ST_WorldToRasterCoordY
ST_WorldToRasterCoordY — Retourne la ligne dans le raster du point géométrique (pt) ou des coordonnées X et Y (xw, yw)
exprimés dans le système de référence spatial du raster.
Synopsis
Description
Retourne la ligne dans le raster du point géométrique (pt) ou des coordonnées X et Y (xw, yw). Un point, ou le couple (xw, yw)
sont requis pour un raster avec obliquité (skew). Sinon, xw est suffisant. Les coordonnées sont exprimées dans le système de
référence spatial du raster.
Changement : 2.1.0 Dans les versions précédentes, cette fonctionne était appelée ST_World2RasterCoordY
Manuel PostGIS 3.4.0dev 614 / 870
Exemples
Voir aussi
10.5.1 ST_BandMetaData
ST_BandMetaData — Retourne les méta-données de base d’une bande raster spécifique. Si aucune bande n’est spécifiée, la
bande 1 est utilisée.
Synopsis
Description
Retourne les méta-données de base d’une bande raster spécifique. Les colonnes retournées sont : pixeltype, nodatavalue, isoutdb,
path, outdbbandnum, filesize, filetimestamp.
Note
Si le raster ne contient aucune bande, une erreur est émise.
Note
Si la bande n’a pas de valeur NODATA, nodatavalue est NULL.
Note
Si isoutdb est False, alors path, outdbbandnum, filesize et filetimestamp sont NULL. Si l’accès outdb est désactivé,
filesize et filetimestamp sont également NULL.
Amélioration : 2.5.0 ajout de outdbbandnum, filesize et filetimestamp pour les rasters outdb.
Manuel PostGIS 3.4.0dev 615 / 870
Exemples : Variante 1
SELECT
rid,
(foo.md).*
FROM (
SELECT
rid,
ST_BandMetaData(rast, 1) AS md
FROM dummy_rast
WHERE rid=2
) As foo;
Exemples : Variante 2
WITH foo AS (
SELECT
ST_AddBand(NULL::raster, '/home/pele/devel/geo/postgis-git/raster/test/regress/ ←-
loader/Projected.tif', NULL::int[]) AS rast
)
SELECT
*
FROM ST_BandMetadata(
(SELECT rast FROM foo),
ARRAY[1,3,2]::int[]
);
1 | 8BUI | | t | /home/pele/devel/geo/postgis-git/raster/test ←-
/regress/loader/Projected.tif | 1 | 12345 | 1521807257 |
3 | 8BUI | | t | /home/pele/devel/geo/postgis-git/raster/test ←-
/regress/loader/Projected.tif | 3 | 12345 | 1521807257 |
2 | 8BUI | | t | /home/pele/devel/geo/postgis-git/raster/test ←-
/regress/loader/Projected.tif | 2 | 12345 | 1521807257 |
Voir aussi
ST_MetaData, ST_BandPixelType
10.5.2 ST_BandNoDataValue
ST_BandNoDataValue — Retourne la valeur qui représente l’absence de valeur (nodata) pour cette bande. Si aucune bande n’est
spécifiée, la bande 1 est utilisée.
Synopsis
Description
Retourne la valeur qui représente l’absence de valeur (nodata) pour cette bande
Exemples
Voir aussi
ST_NumBands
10.5.3 ST_BandIsNoData
Synopsis
Description
Retourne true si la bande ne contient que des valeurs nodata. Si aucune bande n’est spécifiée, la bande 1 est utilisée. Si le
dernier paramètre est TRUE, la bande entière est vérifiée pixel par pixel. Sinon, la fonction retourne simplement la valeur du flag
isnodata pour cette bande. La valeur par défaut pour ce paramètre est FALSE.
Disponibilité : 2.0.0
Note
Si le flag est obsolète (c’est à dire si le résultat est différent selon qu’on utilise TRUE ou non comme dernier
paramètre), vous devriez mettre à jour le raster pour mettre à jour ce flag, en utilisant ST_SetBandIsNodata(), ou
ST_SetBandNodataValue() avec TRUE en dernier paramètre. Voir ST_SetBandIsNoData.
Exemples
-- Add raster with two bands, one pixel/band. In the first band, nodatavalue = pixel value ←-
= 3.
-- In the second band, nodatavalue = 13, pixel value = 4
insert into dummy_rast values(1,
(
'01' -- little endian (uint8 ndr)
Manuel PostGIS 3.4.0dev 617 / 870
||
'0000' -- version (uint16 0)
||
'0200' -- nBands (uint16 0)
||
'17263529ED684A3F' -- scaleX (float64 0.000805965234044584)
||
'F9253529ED684ABF' -- scaleY (float64 -0.00080596523404458)
||
'1C9F33CE69E352C0' -- ipX (float64 -75.5533328537098)
||
'718F0E9A27A44840' -- ipY (float64 49.2824585505576)
||
'ED50EB853EC32B3F' -- skewX (float64 0.000211812383858707)
||
'7550EB853EC32B3F' -- skewY (float64 0.000211812383858704)
||
'E6100000' -- SRID (int32 4326)
||
'0100' -- width (uint16 1)
||
'0100' -- height (uint16 1)
||
'6' -- hasnodatavalue and isnodata value set to true.
||
'2' -- first band type (4BUI)
||
'03' -- novalue==3
||
'03' -- pixel(0,0)==3 (same that nodata)
||
'0' -- hasnodatavalue set to false
||
'5' -- second band type (16BSI)
||
'0D00' -- novalue==13
||
'0400' -- pixel(0,0)==4
)::raster
);
Voir aussi
10.5.4 ST_BandPath
ST_BandPath — Retourne le chemin système du fichier d’une bande stockée sur le système de fichier. Si aucune bande n’est
spécifiée, la bande 1 est utilisée.
Synopsis
Description
Retourne le chemin système du fichier d’une bande. Renvoie une erreur si la bande n’est pas outofdb.
Exemples
Voir aussi
10.5.5 ST_BandFileSize
ST_BandFileSize — Retourne la taille du fichier d’une bande stockée sur le système de fichier. Si aucune bande n’est spécifiée,
la bande 1 est utilisée.
Synopsis
Description
Retourne la taille du fichier d’une bande stockée sur le système de fichier. Renvoie une erreur si la bande n’est pas outofdb, ou si
l’accès outdb est désactivé.
Cette fonction est généralement utilisée conjointement à ST_BandPath() et ST_BandFileTimestamp(), pour qu’un client puisse
déterminer le nom du fichier d’un raster outdb, tel que vu par le serveur.
Disponibilité : 2.5.0
Exemples
st_bandfilesize
-----------------
240574
10.5.6 ST_BandFileTimestamp
ST_BandFileTimestamp — Retourne le timestamp du fichier d’une bande stockée sur le système de fichier. Si aucune bande
n’est spécifiée, la bande 1 est utilisée.
Synopsis
Description
Retourne le timestamp (nombre de secondes depuis Jan 1st 1970 00:00:00 UTC) du fichier d’une bande stockée sur le système
de fichier. Renvoie une erreur si la bande n’est pas outofdb, ou si l’accès outdb est désactivé.
Cette fonction est généralement utilisée conjointement à ST_BandPath() et ST_BandFileSize(), pour qu’un client puisse déter-
miner le nom du fichier d’un raster outdb, tel que vu par le serveur.
Disponibilité : 2.5.0
Manuel PostGIS 3.4.0dev 619 / 870
Exemples
st_bandfiletimestamp
----------------------
1521807257
10.5.7 ST_BandPixelType
ST_BandPixelType — Retourne le type de pixel d’une bande. Si aucune bande n’est spécifiée, la bande 1 est utilisée.
Synopsis
Description
Retourne le nom décrivant le type de données et la taille des valeurs stockées pour chaque pixel de la bande spécifiée.
Il existe 11 types de pixels. Les types de pixels supportés sont :
Exemples
Voir aussi
ST_NumBands
Manuel PostGIS 3.4.0dev 620 / 870
10.5.8 ST_MinPossibleValue
Synopsis
Description
Exemples
SELECT ST_MinPossibleValue('16BSI');
st_minpossiblevalue
---------------------
-32768
SELECT ST_MinPossibleValue('8BUI');
st_minpossiblevalue
---------------------
0
Voir aussi
ST_BandPixelType
10.5.9 ST_HasNoBand
ST_HasNoBand — Retourne true si le raster n’a pas la bande spécifiée. Si aucune bande n’est spécifiée, la bande 1 est utilisée.
Synopsis
Description
Retourne true si le raster n’a pas la bande spécifiée. Si aucune bande n’est spécifiée, la bande 1 est utilisée.
Disponibilité : 2.0.0
Exemples
Voir aussi
ST_NumBands
10.6.1 ST_PixelAsPolygon
ST_PixelAsPolygon — Retourne la géométrie polygonale qui délimite le pixel pour une ligne et colonne spécifiées.
Synopsis
Description
Retourne la géométrie polygonale qui délimite le pixel pour une ligne et colonne spécifiées.
Disponibilité : 2.0.0
Exemples
i | j | b1pgeom
---+---+-----------------------------------------------------------------------------
1 | 1 | POLYGON((3427927.75 5793244,3427927.8 5793244,3427927.8 5793243.95,...
2 | 1 | POLYGON((3427927.8 5793244,3427927.85 5793244,3427927.85 5793243.95, ..
Voir aussi
10.6.2 ST_PixelAsPolygons
ST_PixelAsPolygons — Retourne la géométrie polygonale qui délimite chaque pixel de la bande raster, avec la valeur et les
coordonnées raster X et Y de chaque pixel.
Synopsis
Description
Retourne la géométrie polygonale qui délimite chaque pixel de la bande raster, avec la valeur (double précision) et les coordon-
nées raster X et Y (entiers) de chaque pixel.
Format de l’enregistrement de retour : geom geometry, val double precision, x entier, y entier.
Note
Si exclude_nodata_value = TRUE, seuls les pixels qui ne sont pas NODATA sont retournés.
Note
ST_PixelAsPolygons retourne un polygone pour chaque pixel. Ce comportement est différent de ST_DumpAsPolygons,
où chaque géométrie représente un ou plusieurs pixels de même valeur.
Disponibilité : 2.0.0
Amélioration : 2.1.0 ajout du paramètre optionnel exclude_nodata_value.
Changement : 2.1.1 Changement du comportement de behavior of exclude_nodata_value.
Exemples
x | y | val | geom
---+---+-----------------------------------------------------------------------------
1 | 1 | | POLYGON((0 0,0.001 0.001,0.002 0,0.001 -0.001,0 0))
1 | 2 | 1 | POLYGON((0.001 -0.001,0.002 0,0.003 -0.001,0.002 -0.002,0.001 -0.001))
2 | 1 | 1 | POLYGON((0.001 0.001,0.002 0.002,0.003 0.001,0.002 0,0.001 0.001))
2 | 2 | 10 | POLYGON((0.002 0,0.003 0.001,0.004 0,0.003 -0.001,0.002 0))
Voir aussi
10.6.3 ST_PixelAsPoint
Synopsis
Description
Exemples
st_astext
----------------
POINT(0.5 0.5)
Voir aussi
10.6.4 ST_PixelAsPoints
ST_PixelAsPoints — Retourne un point géométrique pour chaque pixel de la bande raster, avec sa valeur et ses coordonnées
raster X et Y. Les coordonnées du points sont ceux du coin supérieur gauche du pixel.
Synopsis
Description
Retourne un point géométrique pour chaque pixel de la bande raster, avec sa valeur et ses coordonnées raster X et Y. Les
coordonnées du points sont ceux du coin supérieur gauche du pixel.
Format de l’enregistrement de retour : geom geometry, val double precision, x entier, y entier.
Note
Si exclude_nodata_value = TRUE, seuls les pixels qui ne sont pas NODATA sont retournés.
Disponibilité : 2.1.0
Changement : 2.1.1 Changement du comportement de behavior of exclude_nodata_value.
Exemples
x | y | val | st_astext
---+---+-----+------------------------------
1 | 1 | 253 | POINT(3427927.75 5793244)
2 | 1 | 254 | POINT(3427927.8 5793244)
3 | 1 | 253 | POINT(3427927.85 5793244)
4 | 1 | 254 | POINT(3427927.9 5793244)
Manuel PostGIS 3.4.0dev 624 / 870
Voir aussi
10.6.5 ST_PixelAsCentroid
Synopsis
Description
Exemples
st_astext
--------------
POINT(1.5 2)
Voir aussi
10.6.6 ST_PixelAsCentroids
ST_PixelAsCentroids — Retourne le centroïde (point géométrique) pour chaque pixel de la bande raster, avec sa valeur et les
coordonnées raster X et Y. Le point géométrique est le centroïde de la zone représentée par un pixel.
Synopsis
Description
Retourne le centroïde (point géométrique) pour chaque pixel de la bande raster, avec sa valeur et les coordonnées raster X et Y.
Le point géométrique est le centroïde de la zone représentée par un pixel.
Format de l’enregistrement de retour : geom geometry, val double precision, x entier, y entier.
Note
Si exclude_nodata_value = TRUE, seuls les pixels qui ne sont pas NODATA sont retournés.
Exemples
Voir aussi
10.6.7 ST_Value
ST_Value — Retourne la valeur d’une bande raster spécifiée au pixel donné par columnx, rowy, ou à un point géométrique
spécifié. Le numéro de bande démarre à 1, et la bande 1 est utilisée si non spécifié. Si exclude_nodata_value vaut false,
tous les pixels y compris ceux ayant la valeur nodata sont considérés comme intersectés et leur valeur sera retournée. Si
exclude_nodata_value n’est pas spécifié, la valeur est lue depuis les méta-données du raster.
Synopsis
Description
Retourne la valeur d’une bande raster spécifiée au pixel donné par columnx, rowy, ou à un point géométrique spécifié. Le numéro
de bande démarre à 1, et la bande 1 est utilisée si non spécifié.
Si exclude_nodata_value vaut true, seulement les pixels différents de la valeur nodata seront utilisés. Si exclude_nodata_v
vaut false, tous les pixels seront utilisés.
Les valeurs possibles pour le paramètre resample sont : "nearest" (interpolation par plus proche voisin) et "bilinear" (interpo-
lation bilinéaire). Ce paramètre est utilisé pour estimer la valeur entre les centres des pixels.
Amélioration : 3.2.0 ajout du paramètre optionnel resample.
Amélioration : 2.0.0 ajout du paramètre optionnel exclude_nodata_value.
Exemples
--- Get all values in bands 1,2,3 of each pixel same as above but returning the upper left ←-
point point of each pixel --
SELECT ST_AsText(ST_SetSRID(
ST_Point(ST_UpperLeftX(rast) + ST_ScaleX(rast)*x,
ST_UpperLeftY(rast) + ST_ScaleY(rast)*y),
ST_SRID(rast))) As uplpt
, ST_Value(rast, 1, x, y) As b1val,
ST_Value(rast, 2, x, y) As b2val, ST_Value(rast, 3, x, y) As b3val
FROM dummy_rast CROSS JOIN
generate_series(1,1000) As x CROSS JOIN generate_series(1,1000) As y
WHERE rid = 2 AND x <= ST_Width(rast) AND y <= ST_Height(rast);
WHERE
ST_Intersects(
pixpolyg,
ST_GeomFromText('POLYGON((3427928 5793244,3427927.75 5793243.75,3427928 ←-
5793243.75,3427928 5793244))',0)
) AND b2val != 254;
shadow
------------------------------------------------------------------------------------
MULTIPOLYGON(((3427928 5793243.9,3427928 5793243.85,3427927.95 5793243.85,3427927.95 ←-
5793243.9,
3427927.95 5793243.95,3427928 5793243.95,3427928.05 5793243.95,3427928.05 ←-
5793243.9,3427928 5793243.9)),((3427927.95 5793243.9,3427927.95 579324
3.85,3427927.9 5793243.85,3427927.85 5793243.85,3427927.85 5793243.9,3427927.9 ←-
5793243.9,3427927.9 5793243.95,
3427927.95 5793243.95,3427927.95 5793243.9)),((3427927.85 5793243.75,3427927.85 ←-
5793243.7,3427927.8 5793243.7,3427927.8 5793243.75
,3427927.8 5793243.8,3427927.8 5793243.85,3427927.85 5793243.85,3427927.85 ←-
5793243.8,3427927.85 5793243.75)),
((3427928.05 5793243.75,3427928.05 5793243.7,3427928 5793243.7,3427927.95 ←-
5793243.7,3427927.95 5793243.75,3427927.95 5793243.8,3427
927.95 5793243.85,3427928 5793243.85,3427928 5793243.8,3427928.05 5793243.8,
3427928.05 5793243.75)),((3427927.95 5793243.75,3427927.95 5793243.7,3427927.9 ←-
5793243.7,3427927.85 5793243.7,
3427927.85 5793243.75,3427927.85 5793243.8,3427927.85 5793243.85,3427927.9 5793243.85,
3427927.95 5793243.85,3427927.95 5793243.8,3427927.95 5793243.75)))
--- Checking all the pixels of a large raster tile can take a long time.
--- You can dramatically improve speed at some lose of precision by orders of magnitude
-- by sampling pixels using the step optional parameter of generate_series.
-- This next example does the same as previous but by checking 1 for every 4 (2x2) pixels ←-
and putting in the last checked
-- putting in the checked pixel as the value for subsequent 4
shadow
------------------------------------------------------------------------------------
MULTIPOLYGON(((3427927.9 5793243.85,3427927.8 5793243.85,3427927.8 5793243.95,
3427927.9 5793243.95,3427928 5793243.95,3427928.1 5793243.95,3427928.1 5793243.85,3427928 ←-
5793243.85,3427927.9 5793243.85)),
((3427927.9 5793243.65,3427927.8 5793243.65,3427927.8 5793243.75,3427927.8 ←-
5793243.85,3427927.9 5793243.85,
3427928 5793243.85,3427928 5793243.75,3427928.1 5793243.75,3427928.1 5793243.65,3427928 ←-
Manuel PostGIS 3.4.0dev 629 / 870
5793243.65,3427927.9 5793243.65)))
Voir aussi
10.6.8 ST_NearestValue
ST_NearestValue — Retourne la valeur la plus proche différent de NODATA pour une bande raster spécifiée au pixel donné par
columnx et rowy, ou à un point géométrique spécifié dans le même système de référence spatial que le raster.
Synopsis
double precision ST_NearestValue(raster rast, integer bandnum, geometry pt, boolean exclude_nodata_value=true);
double precision ST_NearestValue(raster rast, geometry pt, boolean exclude_nodata_value=true);
double precision ST_NearestValue(raster rast, integer bandnum, integer columnx, integer rowy, boolean exclude_nodata_value=true);
double precision ST_NearestValue(raster rast, integer columnx, integer rowy, boolean exclude_nodata_value=true);
Description
Retourne la valeur la plus proche différent de NODATA pour une bande raster spécifiée au pixel donné par columnx et rowy, ou
à un point géométrique spécifié. Si le pixel donné par columnx, rowy ou par le point géométrique est de valeur NODATA, la
fonction trouve le plus proche pixel dont la valeur est différente de NODATA.
Le numéro de bande démarre à 1, et la bande 1 est utilisée si bandnum non spécifié. Si exclude_nodata_value vaut
false, tous les pixels y compris ceux ayant la valeur nodata sont considérés comme intersectés et leur valeur sera retournée. Si
exclude_nodata_value n’est pas spécifié, la valeur est lue depuis les méta-données du raster.
Disponibilité : 2.1.0
Note
ST_NearestValue remplace directement ST_Value.
Exemples
),
2, 3, 0.
),
3, 5, 0.
),
4, 2, 0.
),
5, 4, 0.
) AS rast
) AS foo
value | nearestvalue
-------+--------------
1 | 1
value | nearestvalue
-------+--------------
| 1
Voir aussi
ST_Neighborhood, ST_Value
10.6.9 ST_SetZ
ST_SetZ — Retourne une géométrie avec les mêmes coordonnées X/Y que la géométrie d’entrée, et avec la coordonnée Z copiée
depuis les valeurs du raster selon l’algorithme d’interpolation en paramètre.
Synopsis
Description
Retourne une géométrie avec les mêmes coordonnées X/Y que la géométrie d’entrée, et avec la coordonnée Z copiée depuis les
valeurs du raster selon l’algorithme d’interpolation en paramètre.
Le paramètre resample peut être "nearest" (plus proche) pour copier les valeurs de chaque pixel auquel le vertex correspond,
ou "bilinear" pour utiliser une interpolation bilinéaire pour calculer une valeur qui prend aussi en compte les pixels voisins.
Disponibilité : 3.2.0
Exemples
--
-- 2x2 test raster with values
--
-- 10 50
-- 40 20
--
WITH test_raster AS (
SELECT
ST_SetValues(
ST_AddBand(
ST_MakeEmptyRaster(width =
> 2, height =
> 2,
upperleftx =
> 0, upperlefty =
> 2,
scalex =
> 1.0, scaley =
> -1.0,
skewx =
> 0, skewy =
> 0, srid =
> 4326),
index =
> 1, pixeltype =
> '16BSI',
initialvalue =
> 0,
nodataval =
> -999),
1,1,1,
newvalueset =
>ARRAY[ARRAY[10.0::float8, 50.0::float8], ARRAY[40.0::float8, 20.0::float8]]) AS rast
)
SELECT
ST_AsText(
ST_SetZ(
rast,
band =
> 1,
geom =
> 'SRID=4326;LINESTRING(1.0 1.9, 1.0 0.2)'::geometry,
resample =
> 'bilinear'
))
FROM test_raster
st_astext
----------------------------------
Manuel PostGIS 3.4.0dev 632 / 870
Voir aussi
ST_Value, ST_SetM
10.6.10 ST_SetM
ST_SetM — Retourne une géométrie avec les mêmes coordonnées X/Y que la géométrie d’entrée, et avec la coordonnée M
copiée depuis les valeurs du raster selon l’algorithme d’interpolation en paramètre.
Synopsis
Description
Retourne une géométrie avec les mêmes coordonnées X/Y que la géométrie d’entrée, et avec la coordonnée M copiée depuis les
valeurs du raster selon l’algorithme d’interpolation en paramètre.
Le paramètre resample peut être "nearest" (plus proche) pour copier les valeurs de chaque pixel auquel le vertex correspond,
ou "bilinear" pour utiliser une interpolation bilinéaire pour calculer une valeur qui prend aussi en compte les pixels voisins.
Disponibilité : 3.2.0
Exemples
--
-- 2x2 test raster with values
--
-- 10 50
-- 40 20
--
WITH test_raster AS (
SELECT
ST_SetValues(
ST_AddBand(
ST_MakeEmptyRaster(width =
> 2, height =
> 2,
upperleftx =
> 0, upperlefty =
> 2,
scalex =
> 1.0, scaley =
> -1.0,
skewx =
> 0, skewy =
> 0, srid =
> 4326),
index =
> 1, pixeltype =
> '16BSI',
initialvalue =
> 0,
nodataval =
Manuel PostGIS 3.4.0dev 633 / 870
> -999),
1,1,1,
newvalueset =
>ARRAY[ARRAY[10.0::float8, 50.0::float8], ARRAY[40.0::float8, 20.0::float8]]) AS rast
)
SELECT
ST_AsText(
ST_SetM(
rast,
band =
> 1,
geom =
> 'SRID=4326;LINESTRING(1.0 1.9, 1.0 0.2)'::geometry,
resample =
> 'bilinear'
))
FROM test_raster
st_astext
----------------------------------
LINESTRING M (1 1.9 38,1 0.2 27)
Voir aussi
ST_Value, ST_SetZ
10.6.11 ST_Neighborhood
ST_Neighborhood — Retourne un tableau 2-D de double avec les valeurs non NODATA autour du pixel de la bande spécifiée,
aux coordonnées spécifiées par columnX & rowY ou par un point géométrique dans le même système de référence spatial que le
raster.
Synopsis
double precision[][] ST_Neighborhood(raster rast, integer bandnum, integer columnX, integer rowY, integer distanceX, integer
distanceY, boolean exclude_nodata_value=true);
double precision[][] ST_Neighborhood(raster rast, integer columnX, integer rowY, integer distanceX, integer distanceY, boolean
exclude_nodata_value=true);
double precision[][] ST_Neighborhood(raster rast, integer bandnum, geometry pt, integer distanceX, integer distanceY, boolean
exclude_nodata_value=true);
double precision[][] ST_Neighborhood(raster rast, geometry pt, integer distanceX, integer distanceY, boolean exclude_nodata_value=tru
Description
Retourne un tableau 2-D de double avec les valeurs non NODATA autour du pixel de la bande spécifiée, aux coordonnées spécifiées
par columnX & rowY ou par un point géométrique dans le même système de référence spatial que le raster. Les paramètres
distanceX et distanceY définissent le nombre de pixels autour du pixel spécifié sur les axes X et Y. Exemple : vous pouvez
récupérer toutes les valeurs autour du pixel souhaité, à une distance de 3 pixels selon l’axe X et à une distance de 2 pixels selon
l’axe Y. La valeur centrale du tableau 2-D sera la valeur du pixel spécifié par columnX et rowY ou par le point géométrique.
Le numéro de bande démarre à 1, et la bande 1 est utilisée si bandnum non spécifié. Si exclude_nodata_value vaut
false, tous les pixels y compris ceux ayant la valeur nodata sont considérés comme intersectés et leur valeur sera retournée. Si
exclude_nodata_value n’est pas spécifié, la valeur est lue depuis les méta-données du raster.
Manuel PostGIS 3.4.0dev 634 / 870
Note
Le nombre d’éléments retournés dans le tableau 2-D sur chaque axe sera 2 * (distanceX|distanceY) + 1. Pour
distanceX et distanceY de 1, le tableau sera de taille 3x3.
Note
Le tableau 2-D en sortie peut être passé à n’importe quelle fonction de traitement raster, comme ST_Min4ma,
ST_Sum4ma, ST_Mean4ma.
Disponibilité : 2.1.0
Exemples
st_neighborhood
---------------------------------
{{NULL,1,1},{1,1,1},{1,NULL,1}}
) AS rast
) AS foo
st_neighborhood
------------------------------
{{1,1,1},{1,NULL,1},{1,1,1}}
st_neighborhood
---------------------------
{{1,1,0},{0,1,1},{1,1,1}}
Voir aussi
10.6.12 ST_SetValue
ST_SetValue — Retourne un nouveau raster en modifiant la valeur du pixel pour la bande spécifiée et aux coordonnées columnx,
rowy, ou pour tous les pixels qui intersectent une géométrie spécifiée. Le numéro de bande démarre à 1, et la bande 1 est utilisée
si non spécifié.
Synopsis
raster ST_SetValue(raster rast, integer bandnum, geometry geom, double precision newvalue);
raster ST_SetValue(raster rast, geometry geom, double precision newvalue);
raster ST_SetValue(raster rast, integer bandnum, integer columnx, integer rowy, double precision newvalue);
raster ST_SetValue(raster rast, integer columnx, integer rowy, double precision newvalue);
Description
Retourne un nouveau raster en modifiant la valeur du pixel pour la bande spécifiée et aux coordonnées columnx, rowy, ou pour
tous les pixels qui intersectent une géométrie spécifiée. Le numéro de bande démarre à 1, et la bande 1 est utilisée si non spécifié.
Amélioration : 2.1.0 La variante de ST_SetValue() avec la géométrie supporte n’importe quelle type de géométrie, pas unique-
ment des points. La variante avec la géométrie est une enveloppe autour de la variante de ST_SetValues() avec geomval[]
Manuel PostGIS 3.4.0dev 636 / 870
Exemples
-- Geometry example
SELECT (foo.geomval).val, ST_AsText(ST_Union((foo.geomval).geom))
FROM (SELECT ST_DumpAsPolygons(
ST_SetValue(rast,1,
ST_Point(3427927.75, 5793243.95),
50)
) As geomval
FROM dummy_rast
where rid = 2) As foo
WHERE (foo.geomval).val < 250
GROUP BY (foo.geomval).val;
val | st_astext
-----+-------------------------------------------------------------------
50 | POLYGON((3427927.75 5793244,3427927.75 5793243.95,3427927.8 579324 ...
249 | POLYGON((3427927.95 5793243.95,3427927.95 5793243.85,3427928 57932 ...
Voir aussi
ST_Value, ST_DumpAsPolygons
10.6.13 ST_SetValues
ST_SetValues — Retourne un nouveau raster en modifiant les valeurs de certains pixels d’une bande spécifiée.
Synopsis
raster ST_SetValues(raster rast, integer nband, integer columnx, integer rowy, double precision[][] newvalueset, boolean[][]
noset=NULL, boolean keepnodata=FALSE);
raster ST_SetValues(raster rast, integer nband, integer columnx, integer rowy, double precision[][] newvalueset, double precision
nosetvalue, boolean keepnodata=FALSE);
raster ST_SetValues(raster rast, integer nband, integer columnx, integer rowy, integer width, integer height, double precision
newvalue, boolean keepnodata=FALSE);
raster ST_SetValues(raster rast, integer columnx, integer rowy, integer width, integer height, double precision newvalue, boolean
keepnodata=FALSE);
raster ST_SetValues(raster rast, integer nband, geomval[] geomvalset, boolean keepnodata=FALSE);
Description
Retourne un nouveau raster en modifiant les valeurs de certains pixels d’une bande spécifiée. Les paramètres columnx et rowy
démarrent à 1.
Si keepnodata est TRUE, les pixels qui sont NODATA ne seront pas mis à jour avec la valeur donnée par newvalueset.
Pour la variante 1, les pixels sont déterminés par les coordonnées du pixel columnx et rowy, ainsi que la dimension du tableau
newvalueset. noset peut être utilisé pour s’assurer qu’aucun pixel présent dans newvalueset et ayant déjà une valeur
soient modifiés (PostgreSQL ne supportant pas les tableaux irréguliers/agglomérés). Voir l’exemple Variante 1.
Manuel PostGIS 3.4.0dev 637 / 870
La variante 2 est similaire à la variante 1, mais avec une valeur unique en double precision nosetvalue au lieu du tableau de
booléens noset. Les éléments dans newvalueset avec la valeur nosetvalue seront ignorés. Voir l’exemple Variante 2.
Pour la variante 3, les pixels à modifier doivent être explicitement spécifiés par les coordonnées columnx, rowy, ainsi que les
tailles width (largeur) et height (hauteur). Voir l’exemple Variante 3.
La variante 4 est identique à la variante 3, en modifiant la bande raster 1 du raster rast.
Pour la variante 5, un tableau de geomval est utilisé pour déterminer les pixels à modifier. Si toutes les géométries du tableau sont
de type POINT ou MULTIPOINT, la fonction utilise un raccourci où la longitude et la latitude du chaque point sont utilisés pour
modifier directement le pixel. Sinon, les géométries sont converties en raster, puis itérés en une passe. Voir l’exemple Variante 5.
Disponibilité : 2.1.0
Exemples : Variante 1
/*
The ST_SetValues() does the following...
+ - + - + - + + - + - + - +
| 1 | 1 | 1 | | 1 | 1 | 1 |
+ - + - + - + + - + - + - +
| 1 | 1 | 1 | =
> | 1 | 9 | 9 |
+ - + - + - + + - + - + - +
| 1 | 1 | 1 | | 1 | 9 | 9 |
+ - + - + - + + - + - + - +
*/
SELECT
(poly).x,
(poly).y,
(poly).val
FROM (
SELECT
ST_PixelAsPolygons(
ST_SetValues(
ST_AddBand(
ST_MakeEmptyRaster(3, 3, 0, 0, 1, -1, 0, 0, 0),
1, '8BUI', 1, 0
),
1, 2, 2, ARRAY[[9, 9], [9, 9]]::double precision[][]
)
) AS poly
) foo
ORDER BY 1, 2;
x | y | val
---+---+-----
1 | 1 | 1
1 | 2 | 1
1 | 3 | 1
2 | 1 | 1
2 | 2 | 9
2 | 3 | 9
3 | 1 | 1
3 | 2 | 9
3 | 3 | 9
/*
The ST_SetValues() does the following...
+ - + - + - + + - + - + - +
Manuel PostGIS 3.4.0dev 638 / 870
| 1 | 1 | 1 | | 9 | 9 | 9 |
+ - + - + - + + - + - + - +
| 1 | 1 | 1 | =
> | 9 | | 9 |
+ - + - + - + + - + - + - +
| 1 | 1 | 1 | | 9 | 9 | 9 |
+ - + - + - + + - + - + - +
* /
SELECT
(poly).x,
(poly).y,
(poly).val
FROM (
SELECT
ST_PixelAsPolygons(
ST_SetValues(
ST_AddBand(
ST_MakeEmptyRaster(3, 3, 0, 0, 1, -1, 0, 0, 0),
1, '8BUI', 1, 0
),
1, 1, 1, ARRAY[[9, 9, 9], [9, NULL, 9], [9, 9, 9]]::double precision[][]
)
) AS poly
) foo
ORDER BY 1, 2;
x | y | val
---+---+-----
1 | 1 | 9
1 | 2 | 9
1 | 3 | 9
2 | 1 | 9
2 | 2 |
2 | 3 | 9
3 | 1 | 9
3 | 2 | 9
3 | 3 | 9
/*
The ST_SetValues() does the following...
+ - + - + - + + - + - + - +
| 1 | 1 | 1 | | 9 | 9 | 9 |
+ - + - + - + + - + - + - +
| 1 | 1 | 1 | =
> | 1 | | 9 |
+ - + - + - + + - + - + - +
| 1 | 1 | 1 | | 9 | 9 | 9 |
+ - + - + - + + - + - + - +
*/
SELECT
(poly).x,
(poly).y,
(poly).val
FROM (
SELECT
ST_PixelAsPolygons(
ST_SetValues(
ST_AddBand(
ST_MakeEmptyRaster(3, 3, 0, 0, 1, -1, 0, 0, 0),
1, '8BUI', 1, 0
),
Manuel PostGIS 3.4.0dev 639 / 870
1, 1, 1,
ARRAY[[9, 9, 9], [9, NULL, 9], [9, 9, 9]]::double precision[][],
ARRAY[[false], [true]]::boolean[][]
)
) AS poly
) foo
ORDER BY 1, 2;
x | y | val
---+---+-----
1 | 1 | 9
1 | 2 | 1
1 | 3 | 9
2 | 1 | 9
2 | 2 |
2 | 3 | 9
3 | 1 | 9
3 | 2 | 9
3 | 3 | 9
/*
The ST_SetValues() does the following...
+ - + - + - + + - + - + - +
| | 1 | 1 | | | 9 | 9 |
+ - + - + - + + - + - + - +
| 1 | 1 | 1 | =
> | 1 | | 9 |
+ - + - + - + + - + - + - +
| 1 | 1 | 1 | | 9 | 9 | 9 |
+ - + - + - + + - + - + - +
*/
SELECT
(poly).x,
(poly).y,
(poly).val
FROM (
SELECT
ST_PixelAsPolygons(
ST_SetValues(
ST_SetValue(
ST_AddBand(
ST_MakeEmptyRaster(3, 3, 0, 0, 1, -1, 0, 0, 0),
1, '8BUI', 1, 0
),
1, 1, 1, NULL
),
1, 1, 1,
ARRAY[[9, 9, 9], [9, NULL, 9], [9, 9, 9]]::double precision[][],
ARRAY[[false], [true]]::boolean[][],
TRUE
)
) AS poly
) foo
ORDER BY 1, 2;
x | y | val
---+---+-----
1 | 1 |
1 | 2 | 1
1 | 3 | 9
2 | 1 | 9
Manuel PostGIS 3.4.0dev 640 / 870
2 | 2 |
2 | 3 | 9
3 | 1 | 9
3 | 2 | 9
3 | 3 | 9
Exemples : Variante 2
/*
The ST_SetValues() does the following...
+ - + - + - + + - + - + - +
| 1 | 1 | 1 | | 1 | 1 | 1 |
+ - + - + - + + - + - + - +
| 1 | 1 | 1 | =
> | 1 | 9 | 9 |
+ - + - + - + + - + - + - +
| 1 | 1 | 1 | | 1 | 9 | 9 |
+ - + - + - + + - + - + - +
*/
SELECT
(poly).x,
(poly).y,
(poly).val
FROM (
SELECT
ST_PixelAsPolygons(
ST_SetValues(
ST_AddBand(
ST_MakeEmptyRaster(3, 3, 0, 0, 1, -1, 0, 0, 0),
1, '8BUI', 1, 0
),
1, 1, 1, ARRAY[[-1, -1, -1], [-1, 9, 9], [-1, 9, 9]]::double precision[][], -1
)
) AS poly
) foo
ORDER BY 1, 2;
x | y | val
---+---+-----
1 | 1 | 1
1 | 2 | 1
1 | 3 | 1
2 | 1 | 1
2 | 2 | 9
2 | 3 | 9
3 | 1 | 1
3 | 2 | 9
3 | 3 | 9
/*
This example is like the previous one. Instead of nosetvalue = -1, nosetvalue = NULL
+ - + - + - + + - + - + - +
| 1 | 1 | 1 | | 1 | 1 | 1 |
+ - + - + - + + - + - + - +
| 1 | 1 | 1 =|
> | 1 | 9 | 9 |
Manuel PostGIS 3.4.0dev 641 / 870
+ - + - + - + + - + - + - +
| 1 | 1 | 1 | | 1 | 9 | 9 |
+ - + - + - + + - + - + - +
* /
SELECT
(poly).x,
(poly).y,
(poly).val
FROM (
SELECT
ST_PixelAsPolygons(
ST_SetValues(
ST_AddBand(
ST_MakeEmptyRaster(3, 3, 0, 0, 1, -1, 0, 0, 0),
1, '8BUI', 1, 0
),
1, 1, 1, ARRAY[[NULL, NULL, NULL], [NULL, 9, 9], [NULL, 9, 9]]::double ←-
precision[][], NULL::double precision
)
) AS poly
) foo
ORDER BY 1, 2;
x | y | val
---+---+-----
1 | 1 | 1
1 | 2 | 1
1 | 3 | 1
2 | 1 | 1
2 | 2 | 9
2 | 3 | 9
3 | 1 | 1
3 | 2 | 9
3 | 3 | 9
Exemples : Variante 3
/*
The ST_SetValues() does the following...
+ - + - + - + + - + - + - +
| 1 | 1 | 1 | | 1 | 1 | 1 |
+ - + - + - + + - + - + - +
| 1 | 1 | 1 | =
> | 1 | 9 | 9 |
+ - + - + - + + - + - + - +
| 1 | 1 | 1 | | 1 | 9 | 9 |
+ - + - + - + + - + - + - +
*/
SELECT
(poly).x,
(poly).y,
(poly).val
FROM (
SELECT
ST_PixelAsPolygons(
ST_SetValues(
ST_AddBand(
ST_MakeEmptyRaster(3, 3, 0, 0, 1, -1, 0, 0, 0),
1, '8BUI', 1, 0
Manuel PostGIS 3.4.0dev 642 / 870
),
1, 2, 2, 2, 2, 9
)
) AS poly
) foo
ORDER BY 1, 2;
x | y | val
---+---+-----
1 | 1 | 1
1 | 2 | 1
1 | 3 | 1
2 | 1 | 1
2 | 2 | 9
2 | 3 | 9
3 | 1 | 1
3 | 2 | 9
3 | 3 | 9
/*
The ST_SetValues() does the following...
+ - + - + - + + - + - + - +
| 1 | 1 | 1 | | 1 | 1 | 1 |
+ - + - + - + + - + - + - +
| 1 | | 1 | =
> | 1 | | 9 |
+ - + - + - + + - + - + - +
| 1 | 1 | 1 | | 1 | 9 | 9 |
+ - + - + - + + - + - + - +
*/
SELECT
(poly).x,
(poly).y,
(poly).val
FROM (
SELECT
ST_PixelAsPolygons(
ST_SetValues(
ST_SetValue(
ST_AddBand(
ST_MakeEmptyRaster(3, 3, 0, 0, 1, -1, 0, 0, 0),
1, '8BUI', 1, 0
),
1, 2, 2, NULL
),
1, 2, 2, 2, 2, 9, TRUE
)
) AS poly
) foo
ORDER BY 1, 2;
x | y | val
---+---+-----
1 | 1 | 1
1 | 2 | 1
1 | 3 | 1
2 | 1 | 1
2 | 2 |
2 | 3 | 9
3 | 1 | 1
3 | 2 | 9
Manuel PostGIS 3.4.0dev 643 / 870
3 | 3 | 9
Exemples : Variante 5
WITH foo AS (
SELECT 1 AS rid, ST_AddBand(ST_MakeEmptyRaster(5, 5, 0, 0, 1, -1, 0, 0, 0), 1, '8BUI', ←-
0, 0) AS rast
), bar AS (
SELECT 1 AS gid, 'SRID=0;POINT(2.5 -2.5)'::geometry geom UNION ALL
SELECT 2 AS gid, 'SRID=0;POLYGON((1 -1, 4 -1, 4 -4, 1 -4, 1 -1))'::geometry geom UNION ←-
ALL
SELECT 3 AS gid, 'SRID=0;POLYGON((0 0, 5 0, 5 -1, 1 -1, 1 -4, 0 -4, 0 0))'::geometry ←-
geom UNION ALL
SELECT 4 AS gid, 'SRID=0;MULTIPOINT(0 0, 4 4, 4 -4)'::geometry
)
SELECT
rid, gid, ST_DumpValues(ST_SetValue(rast, 1, geom, gid))
FROM foo t1
CROSS JOIN bar t2
ORDER BY rid, gid;
1 | 1 | (1,"{{NULL,NULL,NULL,NULL,NULL},{NULL,NULL,NULL,NULL,NULL},{NULL,NULL,1,NULL, ←-
NULL},{NULL,NULL,NULL,NULL,NULL},{NULL,NULL,NULL,NULL,NULL}}")
1 | 2 | (1,"{{NULL,NULL,NULL,NULL,NULL},{NULL,2,2,2,NULL},{NULL,2,2,2,NULL},{NULL ←-
,2,2,2,NULL},{NULL,NULL,NULL,NULL,NULL}}")
1 | 3 | (1,"{{3,3,3,3,3},{3,NULL,NULL,NULL,NULL},{3,NULL,NULL,NULL,NULL},{3,NULL,NULL, ←-
NULL,NULL},{NULL,NULL,NULL,NULL,NULL}}")
1 | 4 | (1,"{{4,NULL,NULL,NULL,NULL},{NULL,NULL,NULL,NULL,NULL},{NULL,NULL,NULL,NULL, ←-
NULL},{NULL,NULL,NULL,NULL,NULL},{NULL,NULL,NULL,NULL,4}}")
(4 rows)
L’exemple suivant montre qu’une géométrie située plus loin dans le tableau peut écraser une valeur issue d’une géométrie précé-
dente
WITH foo AS (
SELECT 1 AS rid, ST_AddBand(ST_MakeEmptyRaster(5, 5, 0, 0, 1, -1, 0, 0, 0), 1, '8BUI', ←-
0, 0) AS rast
), bar AS (
SELECT 1 AS gid, 'SRID=0;POINT(2.5 -2.5)'::geometry geom UNION ALL
SELECT 2 AS gid, 'SRID=0;POLYGON((1 -1, 4 -1, 4 -4, 1 -4, 1 -1))'::geometry geom UNION ←-
ALL
SELECT 3 AS gid, 'SRID=0;POLYGON((0 0, 5 0, 5 -1, 1 -1, 1 -4, 0 -4, 0 0))'::geometry ←-
geom UNION ALL
SELECT 4 AS gid, 'SRID=0;MULTIPOINT(0 0, 4 4, 4 -4)'::geometry
)
SELECT
t1.rid, t2.gid, t3.gid, ST_DumpValues(ST_SetValues(rast, 1, ARRAY[ROW(t2.geom, t2.gid), ←-
ROW(t3.geom, t3.gid)]::geomval[]))
FROM foo t1
CROSS JOIN bar t2
CROSS JOIN bar t3
WHERE t2.gid = 1
AND t3.gid = 2
ORDER BY t1.rid, t2.gid, t3.gid;
-----+-----+-----+-----------------------------------------------------------------------------------
1 | 1 | 2 | (1,"{{NULL,NULL,NULL,NULL,NULL},{NULL,2,2,2,NULL},{NULL,2,2,2,NULL},{ ←-
NULL,2,2,2,NULL},{NULL,NULL,NULL,NULL,NULL}}")
(1 row)
1 | 2 | 1 | (1,"{{NULL,NULL,NULL,NULL,NULL},{NULL,2,2,2,NULL},{NULL,2,1,2,NULL},{ ←-
NULL,2,2,2,NULL},{NULL,NULL,NULL,NULL,NULL}}")
(1 row)
Voir aussi
10.6.14 ST_DumpValues
ST_DumpValues — Retourne les valeurs d’une bande raster spécifiée, sous forme d’un tableau à deux dimensions.
Synopsis
Description
Retour les valeurs d’une bande, sous forme d’un tableau à 2 dimensions (le premier index étant la ligne, le second étant la
colonne). Si nband est NULL ou non spécifié, toutes les bandes raster sont traitées.
Disponibilité : 2.1.0
Manuel PostGIS 3.4.0dev 645 / 870
Exemples
WITH foo AS (
SELECT ST_AddBand(ST_AddBand(ST_AddBand(ST_MakeEmptyRaster(3, 3, 0, 0, 1, -1, 0, 0, 0), ←-
1, '8BUI'::text, 1, 0), 2, '32BF'::text, 3, -9999), 3, '16BSI', 0, 0) AS rast
)
SELECT
(ST_DumpValues(rast)).*
FROM foo;
nband | valarray
-------+------------------------------------------------------
1 | {{1,1,1},{1,1,1},{1,1,1}}
2 | {{3,3,3},{3,3,3},{3,3,3}}
3 | {{NULL,NULL,NULL},{NULL,NULL,NULL},{NULL,NULL,NULL}}
(3 rows)
WITH foo AS (
SELECT ST_AddBand(ST_AddBand(ST_AddBand(ST_MakeEmptyRaster(3, 3, 0, 0, 1, -1, 0, 0, 0), ←-
1, '8BUI'::text, 1, 0), 2, '32BF'::text, 3, -9999), 3, '16BSI', 0, 0) AS rast
)
SELECT
(ST_DumpValues(rast, ARRAY[3, 1])).*
FROM foo;
nband | valarray
-------+------------------------------------------------------
3 | {{NULL,NULL,NULL},{NULL,NULL,NULL},{NULL,NULL,NULL}}
1 | {{1,1,1},{1,1,1},{1,1,1}}
(2 rows)
WITH foo AS (
SELECT ST_SetValue(ST_AddBand(ST_MakeEmptyRaster(3, 3, 0, 0, 1, -1, 0, 0, 0), 1, '8BUI ←-
', 1, 0), 1, 2, 5) AS rast
)
SELECT
(ST_DumpValues(rast, 1))[2][1]
FROM foo;
st_dumpvalues
---------------
5
(1 row)
Voir aussi
10.6.15 ST_PixelOfValue
ST_PixelOfValue — Retourne les coordonnées columnx, rowy du pixel dont la valeur est égale à la valeur recherchée.
Synopsis
setof record ST_PixelOfValue( raster rast , integer nband , double precision[] search , boolean exclude_nodata_value=true );
setof record ST_PixelOfValue( raster rast , double precision[] search , boolean exclude_nodata_value=true );
setof record ST_PixelOfValue( raster rast , integer nband , double precision search , boolean exclude_nodata_value=true );
setof record ST_PixelOfValue( raster rast , double precision search , boolean exclude_nodata_value=true );
Manuel PostGIS 3.4.0dev 646 / 870
Description
Retourne les coordonnées columnx, rowy du pixel dont la valeur est égale à la valeur recherchée. Si aucune bande n’est spécifiée,
la bande 1 est utilisée.
Disponibilité : 2.1.0
Exemples
SELECT
(pixels).*
FROM (
SELECT
ST_PixelOfValue(
ST_SetValue(
ST_SetValue(
ST_SetValue(
ST_SetValue(
ST_SetValue(
ST_AddBand(
ST_MakeEmptyRaster(5, 5, -2, 2, 1, -1, 0, 0, 0),
'8BUI'::text, 1, 0
),
1, 1, 0
),
2, 3, 0
),
3, 5, 0
),
4, 2, 0
),
5, 4, 255
)
, 1, ARRAY[1, 255]) AS pixels
) AS foo
val | x | y
-----+---+---
1 | 1 | 2
1 | 1 | 3
1 | 1 | 4
1 | 1 | 5
1 | 2 | 1
1 | 2 | 2
1 | 2 | 4
1 | 2 | 5
1 | 3 | 1
1 | 3 | 2
1 | 3 | 3
1 | 3 | 4
1 | 4 | 1
1 | 4 | 3
1 | 4 | 4
1 | 4 | 5
1 | 5 | 1
1 | 5 | 2
1 | 5 | 3
255 | 5 | 4
1 | 5 | 5
Manuel PostGIS 3.4.0dev 647 / 870
10.7.1 ST_SetGeoReference
ST_SetGeoReference — Définit les 6 paramètres de géo-référencement en un seul appel. Les nombres doivent être séparés par
un espace. Accepte les formats GDAL (par défaut) ou ESRI.
Synopsis
Description
Définit les 6 paramètres de géo-référencement en un seul appel. Accepte les formats ’GDAL’ (par défaut) ou ’ESRI’. Si les 6
coordonnées ne sont pas spécifiées, retourne null.
La différence entre les représentations de format est la suivante :
GDAL :
scalex skewy skewx scaley upperleftx upperlefty
ESRI :
scalex skewy skewx scaley upperleftx + scalex*0.5 upperlefty + scaley*0.5
Note
Si le raster a des bandes out-db, modifier le géoréférencement peut entraîner un accès incorrect aux données de la
bande out-db.
Exemples
WITH foo AS (
SELECT ST_MakeEmptyRaster(5, 5, 0, 0, 1, -1, 0, 0, 0) AS rast
)
SELECT
0 AS rid, (ST_Metadata(rast)).*
FROM foo
UNION ALL
SELECT
1, (ST_Metadata(ST_SetGeoReference(rast, '10 0 0 -10 0.1 0.1', 'GDAL'))).*
FROM foo
UNION ALL
SELECT
2, (ST_Metadata(ST_SetGeoReference(rast, '10 0 0 -10 5.1 -4.9', 'ESRI'))).*
FROM foo
UNION ALL
SELECT
3, (ST_Metadata(ST_SetGeoReference(rast, 1, 1, 10, -10, 0.001, 0.001))).*
FROM foo
Manuel PostGIS 3.4.0dev 648 / 870
0 | 0 | 0 | 5 | 5 | 1 | -1 | 0 | ←-
0 | 0 | 0
1 | 0.1 | 0.1 | 5 | 5 | 10 | -10 | 0 | ←-
0 | 0 | 0
2 | 0.0999999999999996 | 0.0999999999999996 | 5 | 5 | 10 | -10 | 0 | ←-
0 | 0 | 0
3 | 1 | 1 | 5 | 5 | 10 | -10 | 0.001 | ←-
0.001 | 0 | 0
Voir aussi
10.7.2 ST_SetRotation
Synopsis
Description
Applique une rotation uniforme du raster. L’angle de rotation est en radians. Voir World File pour plus de détails.
Exemples
SELECT
ST_ScaleX(rast1), ST_ScaleY(rast1), ST_SkewX(rast1), ST_SkewY(rast1),
ST_ScaleX(rast2), ST_ScaleY(rast2), ST_SkewX(rast2), ST_SkewY(rast2)
FROM (
SELECT ST_SetRotation(rast, 15) AS rast1, rast as rast2 FROM dummy_rast
) AS foo;
st_scalex | st_scaley | st_skewx | st_skewy | ←-
st_scalex | st_scaley | st_skewx | st_skewy
---------------------+---------------------+--------------------+--------------------+-----------+---
Voir aussi
10.7.3 ST_SetScale
ST_SetScale — Définit la résolution des pixels en X et Y en unité du système de référence spatial : nombre d’unités/pixel en
largeur/hauteur.
Synopsis
Description
Définit la résolution des pixels en X et Y en unité du système de référence spatial : nombre d’unités/pixel en largeur/hauteur. Si
une seule unité est spécifiée, la même résolution est utilisée pour X et pour Y.
Note
ST_SetScale est différent de ST_Rescale : ST_SetScale ne rééchantillonne pas le raster pour correspondre à l’étendue
du raster. La fonction modifie seulement les méta-données (ou la géo-référence) d’un raster pour corriger une échelle
incorrecte. ST_Rescale produit un raster de taille différente pour correspondre à l’étendue spatiale du raster d’entrée.
ST_SetScale ne modifie pas la largeur ou hauteur du raster.
Changement : 2.0.0 Dans les versions WKTRaster, cette fonction était appelée ST_SetPixelSize.
Exemples
UPDATE dummy_rast
SET rast = ST_SetScale(rast, 1.5)
WHERE rid = 2;
UPDATE dummy_rast
SET rast = ST_SetScale(rast, 1.5, 0.55)
WHERE rid = 2;
Voir aussi
10.7.4 ST_SetSkew
ST_SetSkew — Définit l’obliquité X et Y (skew, ou paramètre de rotation). Si une seule valeur est spécifiée, la même valeur est
utilisée pour X et pour Y.
Synopsis
Description
Définit l’obliquité X et Y (skew, ou paramètre de rotation). Si une seule valeur est spécifiée, la même valeur est utilisée pour X
et pour Y. Voir World File pour plus de détails.
Exemples
-- Example 1
UPDATE dummy_rast SET rast = ST_SetSkew(rast,1,2) WHERE rid = 1;
SELECT rid, ST_SkewX(rast) As skewx, ST_SkewY(rast) As skewy,
ST_GeoReference(rast) as georef
FROM dummy_rast WHERE rid = 1;
Voir aussi
10.7.5 ST_SetSRID
ST_SetSRID — Modifie le SRID d’un raster à une valeur définie dans la table spatial_ref_sys.
Manuel PostGIS 3.4.0dev 651 / 870
Synopsis
Description
Note
Cette fonction ne modifie pas le raster en lui-même : elle définit juste la méta-données définissant le système de
référence spatial. Ceci est utile pour ensuite effectuer des transformations.
Voir aussi
10.7.6 ST_SetUpperLeft
ST_SetUpperLeft — Modifie les coordonnées du pixel du coin supérieur gauche du raster, selon les coordonnées X et Y projetées.
Synopsis
Description
Modifie les coordonnées du pixel du coin supérieur gauche du raster aux coordonnées X et Y projetées
Exemples
SELECT ST_SetUpperLeft(rast,-71.01,42.37)
FROM dummy_rast
WHERE rid = 2;
Voir aussi
ST_UpperLeftX, ST_UpperLeftY
10.7.7 ST_Resample
ST_Resample — Rééchantillonne un raster, en utilisant l’algorithme spécifié, les nouvelles dimensions, un coin arbitraire de la
grille et un ensemble de paramètres de géo-référencement définis ou empruntés à un autre raster.
Manuel PostGIS 3.4.0dev 652 / 870
Synopsis
raster ST_Resample(raster rast, integer width, integer height, double precision gridx=NULL, double precision gridy=NULL,
double precision skewx=0, double precision skewy=0, text algorithm=NearestNeighbor, double precision maxerr=0.125);
raster ST_Resample(raster rast, double precision scalex=0, double precision scaley=0, double precision gridx=NULL, double
precision gridy=NULL, double precision skewx=0, double precision skewy=0, text algorithm=NearestNeighbor, double preci-
sion maxerr=0.125);
raster ST_Resample(raster rast, raster ref, text algorithm=NearestNeighbor, double precision maxerr=0.125, boolean usescale=true);
raster ST_Resample(raster rast, raster ref, boolean usescale, text algorithm=NearestNeighbor, double precision maxerr=0.125);
Description
Rééchantillonne un raster, en utilisant l’algorithme spécifié, les nouvelles dimensions (width & height), un coin de la grille (gridx
& gridy) et un ensemble de paramètres de géo-référencement (scalex, scaley, skewx & skewy) définis ou empruntés à un autre
raster. Si un raster de référence est spécifié, les deux rasters doivent avoir le même SRID.
Les nouvelles valeurs des pixels sont calculées par un des algorithmes de rééchantillonnage suivants :
L’algorithme par défaut est NearestNeighbor, qui est le plus rapide mais donne le moins bon résultat.
Une erreur maximale de 0.125 est utilisée si le paramètre maxerr n’est pas spécifié.
Note
Voir GDAL Warp resampling methods pour plus de détails.
Exemples
SELECT
ST_Width(orig) AS orig_width,
ST_Width(reduce_100) AS new_width
FROM (
SELECT
rast AS orig,
ST_Resample(rast,100,100) AS reduce_100
FROM aerials.boston
WHERE ST_Intersects(rast,
ST_Transform(
ST_MakeEnvelope(-71.128, 42.2392,-71.1277, 42.2397, 4326),26986)
)
Manuel PostGIS 3.4.0dev 653 / 870
LIMIT 1
) AS foo;
orig_width | new_width
------------+-------------
200 | 100
Voir aussi
10.7.8 ST_Rescale
ST_Rescale — Rééchantillonne un raster en ajustant juste son échelle (ou la taille des pixels). Les nouvelles valeurs des pixels
sont calculées en utilisant l’algorithme de rééchantillonnage NearestNeighbor (plus proche voisin), Bilinear (Bilinéaire), Cubic
(Cubique), CubicSpline (Cubique Spline), Lanczos, Max ou Min. La valeur par défaut est NearestNeighbor.
Synopsis
raster ST_Rescale(raster rast, double precision scalexy, text algorithm=NearestNeighbor, double precision maxerr=0.125);
raster ST_Rescale(raster rast, double precision scalex, double precision scaley, text algorithm=NearestNeighbor, double preci-
sion maxerr=0.125);
Description
Rééchantillonne un raster en ajustant juste son échelle (ou la taille des pixels). Les nouvelles valeurs des pixels sont calculées en
utilisant un des algorithmes de rééchantillonnage suivants :
• Lanczos
• Max
• Min
L’algorithme par défaut est NearestNeighbor, qui est le plus rapide mais donne le moins bon résultat.
scalex et scaley définissent la nouvelle taille des pixels. scaley est souvent négatif pour obtenir un raster correctement
orienté.
Quand la nouvelle valeur de scalex (respectivement scaley) n’est pas un diviseur de la hauteur (respectivement largeur) du raster,
l’étendue du raster résultant est agrandie pour englober l’étendue du raster d’entrée. Si vous voulez conserver l’étendue exacte
du raster d’entrée, utilisez ST_Resize
maxerr est le seuil pour l’approximation de l’algorithme de rééchantillonnage (en pixels). La valeur de 0.125 est utilisée si le
paramètre maxerr n’est pas spécifié, qui est la même valeur que celle utilisée par l’utilitaire GDAL gdalwarp. Si définie à 0,
aucune approximation n’est effectuée.
Manuel PostGIS 3.4.0dev 654 / 870
Note
Voir GDAL Warp resampling methods pour plus de détails.
Note
ST_Rescale est différent de ST_SetScale : ST_SetScale ne rééchantillonne pas le raster pour correspondre à l’étendue
du raster. ST_SetScale modifie seulement les méta-données (ou lagéo-référence) d’un raster pour corriger une échelle
incorrecte. ST_Rescale produit un raster de taille différente pour correspondre à l’étendue spatiale du raster d’entrée.
ST_SetScale ne modifie pas la largeur ou hauteur du raster.
Exemples
Exemple simple de rééchantillonnage d’un raster d’une taille de pixel de 0.001 degrés vers une taille de pixel de 0.0015 degrés.
-- the original raster pixel size
SELECT ST_PixelWidth(ST_AddBand(ST_MakeEmptyRaster(100, 100, 0, 0, 0.001, -0.001, 0, 0, ←-
4269), '8BUI'::text, 1, 0)) width
width
----------
0.001
width
----------
0.0015
Voir aussi
10.7.9 ST_Reskew
ST_Reskew — Rééchantillonne un raster en ajustant simplement son obliquité (skew, ou paramètre de rotation). Les nouvelles
valeurs des pixels sont calculées en utilisant l’algorithme de rééchantillonnage NearestNeighbor (plus proche voisin), Bilinear
(Bilinéaire), Cubic (Cubique), CubicSpline (Cubique Spline) ou Lanczos. La valeur par défaut est NearestNeighbor.
Synopsis
raster ST_Reskew(raster rast, double precision skewxy, text algorithm=NearestNeighbor, double precision maxerr=0.125);
raster ST_Reskew(raster rast, double precision skewx, double precision skewy, text algorithm=NearestNeighbor, double preci-
sion maxerr=0.125);
Manuel PostGIS 3.4.0dev 655 / 870
Description
Rééchantillonne un raster en ajustant simplement son obliquité (skew, ou paramètre de rotation). Les nouvelles valeurs des pixels
sont calculées en utilisant l’algorithme de rééchantillonnage NearestNeighbor (plus proche voisin), Bilinear (Bilinéaire), Cubic
(Cubique), CubicSpline (Cubique Spline) ou Lanczos. La valeur par défaut est NearestNeighbor, qui est le plus rapide mais
donne le moins bon résultat.
skewx et skewy définissent la nouvelle obliquité.
L’étendue du nouveau raster englobe l’étendu du raster en entrée.
Un pourcentage maximal d’erreur de 0.125 % est utilisé si le paramètre maxerr n’est pas spécifié.
Note
Voir GDAL Warp resampling methods pour plus de détails.
Note
ST_Reskew est différent de ST_SetSkew : ST_SetSkew ne rééchantillonne pas le raster pour correspondre à l’étendue
du raster. ST_SetSkew modifie seulement les méta-données (ou la géo-référence) du raster pour corriger une obliquité
incorrecte. ST_Reskew produit un raster de taille différente pour correspondre à l’étendue spatiale du raster d’entrée.
ST_SetSkew ne modifie pas la largeur ou hauteur du raster.
Exemples
-- result
0
-- result
-0.982793723247329
Voir aussi
10.7.10 ST_SnapToGrid
ST_SnapToGrid — Rééchantillonne un raster en l’accrochant sur une grille. Les nouvelles valeurs des pixels sont calculées
en utilisant l’algorithme de rééchantillonnage NearestNeighbor (plus proche voisin), Bilinear (Bilinéaire), Cubic (Cubique),
CubicSpline (Cubique Spline) ou Lanczos. La valeur par défaut est NearestNeighbor.
Manuel PostGIS 3.4.0dev 656 / 870
Synopsis
raster ST_SnapToGrid(raster rast, double precision gridx, double precision gridy, text algorithm=NearestNeighbor, double pre-
cision maxerr=0.125, double precision scalex=DEFAULT 0, double precision scaley=DEFAULT 0);
raster ST_SnapToGrid(raster rast, double precision gridx, double precision gridy, double precision scalex, double precision
scaley, text algorithm=NearestNeighbor, double precision maxerr=0.125);
raster ST_SnapToGrid(raster rast, double precision gridx, double precision gridy, double precision scalexy, text algorithm=NearestNeigh
double precision maxerr=0.125);
Description
Rééchantillonne un raster en l’accrochant sur une grille définie par un coin arbitraire (gridx & gridy) et une taille de pixel
optionnelle (scalex & scaley). Les nouvelles valeurs des pixels sont calculées en utilisant l’algorithme de rééchantillonnage
NearestNeighbor (plus proche voisin), Bilinear (Bilinéaire), Cubic (Cubique), CubicSpline (Cubique Spline) ou Lanczos. La
valeur par défaut est NearestNeighbor, qui est le plus rapide mais donne le moins bon résultat.
gridx et gridy définissent le pixel d’un coin arbitraire de la nouvelle grille. Ce n’est pas nécessairement le coin supérieur
gauche du nouveau raster, et n’a pas besoin d’être à l’intérieur ou sur les bords de l’emprise du nouveau raster.
Il est possible de définir une taille de pixel pour la nouvelle grille avec les paramètres optionnels scalex et scaley.
L’étendue du nouveau raster englobe l’étendu du raster en entrée.
Un pourcentage maximal d’erreur de 0.125 % est utilisé si le paramètre maxerr n’est pas spécifié.
Note
Voir GDAL Warp resampling methods pour plus de détails.
Note
Voir ST_Resample pour plus de contrôle sur les paramètres de la grille.
Exemples
Exemple simple d’accrochage d’un raster sur une grille légèrement différente.
-- the original raster upper left X
SELECT ST_UpperLeftX(ST_AddBand(ST_MakeEmptyRaster(10, 10, 0, 0, 0.001, -0.001, 0, 0, 4269) ←-
, '8BUI'::text, 1, 0));
-- result
0
--result
-0.0008
Manuel PostGIS 3.4.0dev 657 / 870
Voir aussi
10.7.11 ST_Resize
Synopsis
raster ST_Resize(raster rast, integer width, integer height, text algorithm=NearestNeighbor, double precision maxerr=0.125);
raster ST_Resize(raster rast, double precision percentwidth, double precision percentheight, text algorithm=NearestNeighbor,
double precision maxerr=0.125);
raster ST_Resize(raster rast, text width, text height, text algorithm=NearestNeighbor, double precision maxerr=0.125);
Description
Redimensionne un raster à une nouvelle largeur/hauteur. La nouvelle largeur/hauteur peut être spécifiée comme un nombre exact
de pixels ou un pourcentage de la taille du raster. L’étendue du nouveau raster est la même que le raster d’entrée.
Les nouvelles valeurs des pixels sont calculées en utilisant l’algorithme de rééchantillonnage NearestNeighbor (plus proche
voisin), Bilinear (Bilinéaire), Cubic (Cubique), CubicSpline (Cubique Spline) ou Lanczos. La valeur par défaut est Nearest-
Neighbor, qui est le plus rapide mais donne le moins bon résultat.
La variante 1 attend la largeur/hauteur réelle du raster de sortie.
La variante 2 attend des valeurs décimales entre zéro (0) et un (1) indiquant le pourcentage de la largeur/hauteur du raster d’entrée.
La variante 3 prend en compte soit la largeur/hauteur réelle du raster de sortie ou un pourcentage sous forme de texte ("20%")
indiquant le pourcentage de la largeur/hauteur du raster d’entrée.
Disponibilité : 2.1.0 Nécessite GDAL 1.6.1+
Exemples
rid | upperleftx | upperlefty | width | height | scalex | scaley | skewx | skewy | srid | ←-
numbands
-----+------------+------------+-------+--------+--------+--------+-------+-------+------+----------
1 | 0 | 0 | 500 | 500 | 1 | -1 | 0 | 0 | 0 | ←-
1
2 | 0 | 0 | 500 | 100 | 1 | -1 | 0 | 0 | 0 | ←-
1
3 | 0 | 0 | 250 | 900 | 1 | -1 | 0 | 0 | 0 | ←-
1
(3 rows)
Voir aussi
10.7.12 ST_Transform
ST_Transform — Reprojette un raster depuis un système de référence spatial vers un autre, en utilisant l’algorithme de rééchan-
tillonnage spécifié. Les algorithmes possibles sont NearestNeighbor (plus proche voisin), Bilinear (Bilinéaire), Cubic (Cubique),
CubicSpline (Cubique Spline) ou Lanczos. La valeur par défaut est NearestNeighbor.
Synopsis
raster ST_Transform(raster rast, integer srid, text algorithm=NearestNeighbor, double precision maxerr=0.125, double precision
scalex, double precision scaley);
raster ST_Transform(raster rast, integer srid, double precision scalex, double precision scaley, text algorithm=NearestNeighbor,
double precision maxerr=0.125);
raster ST_Transform(raster rast, raster alignto, text algorithm=NearestNeighbor, double precision maxerr=0.125);
Description
Reprojette un raster depuis un système de référence spatial vers un autre, en utilisant l’algorithme de rééchantillonnage spécifié.
L’algorithme utilisé par défaut est NearestNeighbor si aucun n’est spécifié. Le pourcentage d’erreur maximal est 0.125 si maxerr
n’est pas spécifié.
Les algorithmes disponibles sont : ’NearestNeighbor’ (plus proche voisin), ’Bilinear’ (Bilinéaire), ’Cubic’ (Cubique), ’Cubic-
Spline’ (Cubique Spline) et ’Lanczos’. Voir GDAL Warp resampling methods pour plus de détails.
ST_Transform est souvent confondu avec ST_SetSRID(). ST_Transform modifie réellement les coordonnées du raster (et
rééchantillonne les valeurs des pixels) d’un système de référence spatial vers un autre, alors que ST_SetSRID() change unique-
ment l’identifiant SRID du raster.
Contrairement aux autres variantes, la variante 3 nécessite un raster de référence alignto. Le raster de sortie sera transformé
dans le système de référence spatial (SRID) du raster de référence et sera aligné (ST_SameAlignment = TRUE) avec le raster de
référence.
Manuel PostGIS 3.4.0dev 659 / 870
Note
Si vous constatez que la transformation ne fonctionne pas correctement, il se peut que vous deviez définir la variable
d’environnement PROJSO pour la faire pointer vers le .so ou la .dll de la bibliothèque de projection utilisée par PostGIS.
La variable doit simplement contenir le nom du fichier. Par exemple, sur Windows, aller dans Panneau de configuration
> Système -> Variables d’environnement et ajouter une variable PROJSO avec comme valeur libproj.dll (si vous
utilisez proj 4.6.1). Vous devrez redémarrer le service/daemon PostgreSQL après ce changement.
Warning
Lors de la transformation d’une couverture tuilée, vous voudrez en général utiliser un raster de référence pour garantir
le même alignement et sans lacunes dans les tuiles, comme le montre l’exemple Variante 3.
Exemples
Exemples : Variante 3
WITH foo AS (
SELECT 0 AS rid, ST_AddBand(ST_MakeEmptyRaster(2, 2, -500000, 600000, 100, -100, 0, 0, ←-
2163), 1, '16BUI', 1, 0) AS rast UNION ALL
SELECT 1, ST_AddBand(ST_MakeEmptyRaster(2, 2, -499800, 600000, 100, -100, 0, 0, 2163), ←-
1, '16BUI', 2, 0) AS rast UNION ALL
SELECT 2, ST_AddBand(ST_MakeEmptyRaster(2, 2, -499600, 600000, 100, -100, 0, 0, 2163), ←-
1, '16BUI', 3, 0) AS rast UNION ALL
Aligné (aligned)
Non aligné (not_aligned)
Voir aussi
ST_Transform, ST_SetSRID
10.8.1 ST_SetBandNoDataValue
ST_SetBandNoDataValue — Définit la valeur pour l’absence de données (nodata) pour la bande spécifiée. Si aucune bande n’est
spécifiée, la bande 1 est utilisée. Pour indiquer qu’une bande n’a pas de valeur nodata, définir la valeur nodata = NULL.
Synopsis
Description
Définit la valeur pour l’absence de données (nodata) pour la bande spécifiée. Si aucune bande n’est spécifiée, la bande 1 est
utilisée. Cette valeur affecte les résultats de ST_Polygon, ST_DumpAsPolygons, ainsi que les fonctions ST_PixelAs...().
Exemples
ST_SetBandNoDataValue(
rast,1, 254)
,2,99),
3,108)
WHERE rid = 2;
-- wipe out the nodata value this will ensure all pixels are considered for all processing ←-
functions
UPDATE dummy_rast
SET rast = ST_SetBandNoDataValue(rast,1, NULL)
WHERE rid = 2;
Voir aussi
ST_BandNoDataValue, ST_NumBands
10.8.2 ST_SetBandIsNoData
Synopsis
Description
Définit la valeur du flag isnodata de la bande à TRUE. Si aucune bande n’est spécifiée, la bande 1 est utilisée. Cette fonction ne
devrait être appelée que si le flag est considéré comme obsolète, i.e. si le résultat de ST_BandIsNoData est différent selon qu’on
utilise TRUE comme dernier argument ou non
Disponibilité : 2.0.0
Exemples
-- Add raster with two bands, one pixel/band. In the first band, nodatavalue = pixel value ←-
= 3.
-- In the second band, nodatavalue = 13, pixel value = 4
insert into dummy_rast values(1,
(
'01' -- little endian (uint8 ndr)
||
'0000' -- version (uint16 0)
||
'0200' -- nBands (uint16 0)
||
'17263529ED684A3F' -- scaleX (float64 0.000805965234044584)
||
'F9253529ED684ABF' -- scaleY (float64 -0.00080596523404458)
||
'1C9F33CE69E352C0' -- ipX (float64 -75.5533328537098)
||
'718F0E9A27A44840' -- ipY (float64 49.2824585505576)
||
Manuel PostGIS 3.4.0dev 663 / 870
Voir aussi
10.8.3 ST_SetBandPath
ST_SetBandPath — Met à jour le chemin externe et le numéro de bande d’une bande out-db
Synopsis
raster ST_SetBandPath(raster rast, integer band, text outdbpath, integer outdbindex, boolean force=false);
Description
Met à jour le chemin externe et le numéro de bande d’une bande externe out-db.
Manuel PostGIS 3.4.0dev 664 / 870
Note
Si force est true, aucun test n’est effectué pour garantir la compatibilité (e.g. alignement, support des pixels) entre
le fichier raster externe et le raster PostGIS. Ce mode est prévu pour les changements sur le système de fichiers où
réside le raster externe.
Note
En interne, cette méthode remplacement la bande du raster PostGIS à l’index band avec la nouvelle bande, au lieu de
mettre à jour les informations de chemin existantes.
Disponibilité : 2.5.0
Exemples
WITH foo AS (
SELECT
ST_AddBand(NULL::raster, '/home/pele/devel/geo/postgis-git/raster/test/regress/ ←-
loader/Projected.tif', NULL::int[]) AS rast
)
SELECT
1 AS query,
*
FROM ST_BandMetadata(
(SELECT rast FROM foo),
ARRAY[1,3,2]::int[]
)
UNION ALL
SELECT
2,
*
FROM ST_BandMetadata(
(
SELECT
ST_SetBandPath(
rast,
2,
'/home/pele/devel/geo/postgis-git/raster/test/regress/loader/Projected2.tif ←-
',
1
) AS rast
FROM foo
),
ARRAY[1,3,2]::int[]
)
ORDER BY 1, 2;
1 | 1 | 8BUI | | t | /home/pele/devel/geo/postgis-git/ ←-
raster/test/regress/loader/Projected.tif | 1
1 | 2 | 8BUI | | t | /home/pele/devel/geo/postgis-git/ ←-
raster/test/regress/loader/Projected.tif | 2
1 | 3 | 8BUI | | t | /home/pele/devel/geo/postgis-git/ ←-
raster/test/regress/loader/Projected.tif | 3
Manuel PostGIS 3.4.0dev 665 / 870
2 | 1 | 8BUI | | t | /home/pele/devel/geo/postgis-git/ ←-
raster/test/regress/loader/Projected.tif | 1
2 | 2 | 8BUI | | t | /home/pele/devel/geo/postgis-git/ ←-
raster/test/regress/loader/Projected2.tif | 1
2 | 3 | 8BUI | | t | /home/pele/devel/geo/postgis-git/ ←-
raster/test/regress/loader/Projected.tif | 3
Voir aussi
ST_BandMetaData, ST_SetBandIndex
10.8.4 ST_SetBandIndex
Synopsis
Description
Met à jour le numéro de bande externe d’une bande out-db. Cette opération n’affecte pas le fichier raster externe associé à la
bande out-db
Note
Si force est true, aucun test n’est effectué pour assurer la compatibilité (e.g., l’alignement, le support des pixels)
entre le fichier raster externe et le raster PostGIS. Ce mode est destiné aux cas où les bandes sont déplacées dans le
fichier raster externe.
Note
En interne, cette méthode remplacement la bande du raster PostGIS à l’index band avec la nouvelle bande, au lieu de
mettre à jour les informations de chemin existantes.
Disponibilité : 2.5.0
Exemples
WITH foo AS (
SELECT
ST_AddBand(NULL::raster, '/home/pele/devel/geo/postgis-git/raster/test/regress/ ←-
loader/Projected.tif', NULL::int[]) AS rast
)
SELECT
1 AS query,
*
FROM ST_BandMetadata(
(SELECT rast FROM foo),
ARRAY[1,3,2]::int[]
)
UNION ALL
SELECT
Manuel PostGIS 3.4.0dev 666 / 870
2,
*
FROM ST_BandMetadata(
(
SELECT
ST_SetBandIndex(
rast,
2,
1
) AS rast
FROM foo
),
ARRAY[1,3,2]::int[]
)
ORDER BY 1, 2;
1 | 1 | 8BUI | | t | /home/pele/devel/geo/postgis-git/ ←-
raster/test/regress/loader/Projected.tif | 1
1 | 2 | 8BUI | | t | /home/pele/devel/geo/postgis-git/ ←-
raster/test/regress/loader/Projected.tif | 2
1 | 3 | 8BUI | | t | /home/pele/devel/geo/postgis-git/ ←-
raster/test/regress/loader/Projected.tif | 3
2 | 1 | 8BUI | | t | /home/pele/devel/geo/postgis-git/ ←-
raster/test/regress/loader/Projected.tif | 1
2 | 2 | 8BUI | | t | /home/pele/devel/geo/postgis-git/ ←-
raster/test/regress/loader/Projected.tif | 1
2 | 3 | 8BUI | | t | /home/pele/devel/geo/postgis-git/ ←-
raster/test/regress/loader/Projected.tif | 3
Voir aussi
ST_BandMetaData, ST_SetBandPath
10.9.1 ST_Count
ST_Count — Renvoie le nombre de pixels dans une bande donnée d’un raster ou d’une couverture raster. Si aucune bande n’est
spécifiée, la valeur par défaut est la bande 1. Si exclude_nodata_value est true, seuls les pixels dont la valeur est différente de la
valeur nodata seront comptés.
Synopsis
Description
Renvoie le nombre de pixels dans une bande donnée d’un raster ou d’une couverture raster. Si aucune bande nband n’est
spécifiée, la valeur par défaut est 1.
Manuel PostGIS 3.4.0dev 667 / 870
Note
Si exclude_nodata_value est true, seuls les pixels dont la valeur est différente de la valeur nodata du raster
seront comptés. Définir exclude_nodata_value à false pour compter tous les pixels
Changement : 3.1.0 - Suppression des variantes ST_Count(rastertable, rastercolumn, ...). Utiliser ST_CountAgg à la place.
Disponibilité : 2.0.0
Exemples
--example will count all pixels not 249 and one will count all pixels. --
SELECT rid, ST_Count(ST_SetBandNoDataValue(rast,249)) As exclude_nodata,
ST_Count(ST_SetBandNoDataValue(rast,249),false) As include_nodata
FROM dummy_rast WHERE rid=2;
Voir aussi
10.9.2 ST_CountAgg
ST_CountAgg — Agrégat. Renvoie le nombre de pixels dans une bande donnée d’un ensemble de rasters. Si aucune bande n’est
spécifiée, la valeur par défaut est la bande 1. Si exclude_nodata_value est true, seuls les pixels différents de la valeur NODATA
seront comptés.
Synopsis
bigint ST_CountAgg(raster rast, integer nband, boolean exclude_nodata_value, double precision sample_percent);
bigint ST_CountAgg(raster rast, integer nband, boolean exclude_nodata_value);
bigint ST_CountAgg(raster rast, boolean exclude_nodata_value);
Description
Renvoie le nombre de pixels dans une bande donnée d’un ensemble de rasters. Si aucune bande nband n’est spécifiée, la valeur
par défaut est 1.
Si exclude_nodata_value est true, seuls les pixels dont la valeur est différente de la valeur nodata du raster seront
comptés. Définir exclude_nodata_value à false pour compter tous les pixels
Par défaut, tous les pixels sont échantillonnés. Pour obtenir une réponse plus rapide, définir sample_percent à une valeur
comprise entre zéro (0) et un (1)
Disponibilité : 2.2.0
Manuel PostGIS 3.4.0dev 668 / 870
Exemples
WITH foo AS (
SELECT
rast.rast
FROM (
SELECT ST_SetValue(
ST_SetValue(
ST_SetValue(
ST_AddBand(
ST_MakeEmptyRaster(10, 10, 10, 10, 2, 2, 0, 0,0)
, 1, '64BF', 0, 0
)
, 1, 1, 1, -10
)
, 1, 5, 4, 0
)
, 1, 5, 5, 3.14159
) AS rast
) AS rast
FULL JOIN (
SELECT generate_series(1, 10) AS id
) AS id
ON 1 = 1
)
SELECT
ST_CountAgg(rast, 1, TRUE)
FROM foo;
st_countagg
-------------
20
(1 row)
Voir aussi
10.9.3 ST_Histogram
ST_Histogram — Retourne un ensemble d’enregistrements résumant une distribution de données raster ou de couverture raster,
dans des classes distinctes. Le nombre de classes est calculé automatiquement s’il n’est pas spécifié.
Synopsis
SETOF record ST_Histogram(raster rast, integer nband=1, boolean exclude_nodata_value=true, integer bins=autocomputed,
double precision[] width=NULL, boolean right=false);
SETOF record ST_Histogram(raster rast, integer nband, integer bins, double precision[] width=NULL, boolean right=false);
SETOF record ST_Histogram(raster rast, integer nband, boolean exclude_nodata_value, integer bins, boolean right);
SETOF record ST_Histogram(raster rast, integer nband, integer bins, boolean right);
Description
Retourne un ensemble d’enregistrements composés de min, max, count, percent pour une bande raster donnée pour chaque classe.
Si aucune bande nband n’est spécifiée, la bande 1 est utilisée.
Manuel PostGIS 3.4.0dev 669 / 870
Note
Par défaut, seules les valeurs de pixels différentes de la valeur nodata sont prises en compte. Définir
exclude_nodata_value à false pour obtenir le comptage de tous les pixels.
width double precision[] width : un tableau indiquant la largeur de chaque classe. Si le nombre de classes est supérieur au
nombre de largeurs, les largeurs sont répétées.
Exemple : 9 classes, les largeurs étant [a, b, c], le résultat sera [a, b, c, a, b, c, a, b, c]
bins integer Nombre de classes -- c’est le nombre d’enregistrements retournés par la fonction si spécifié. Si non spécifié, le
nombre de classes est calculé automatiquement.
right boolean calcule l’histogramme à partir de la droite plutôt que de la gauche (par défaut). Cela modifie les critères
d’évaluation d’une valeur x de [a, b) à (a, b]
Exemple : Une seule tuile raster - calcul des histogrames pour les bandes 1, 2, 3 avec calcul automatique des classes
SELECT (stats).*
FROM (SELECT rid, ST_Histogram(rast, 2,6) As stats
FROM dummy_rast
WHERE rid=2) As foo;
-- Same as previous but we explicitly control the pixel value range of each bin.
SELECT (stats).*
FROM (SELECT rid, ST_Histogram(rast, 2,6,ARRAY[0.5,1,4,100,5]) As stats
FROM dummy_rast
WHERE rid=2) As foo;
Voir aussi
10.9.4 ST_Quantile
ST_Quantile — Calcule les quantiles d’un raster ou d’une couverture raster, dans le contexte de l’échantillon ou de la population.
Ainsi, une valeur peut être examinée pour se situer au percentile de 25%, 50% ou 75% du raster.
Synopsis
SETOF record ST_Quantile(raster rast, integer nband=1, boolean exclude_nodata_value=true, double precision[] quantiles=NULL);
SETOF record ST_Quantile(raster rast, double precision[] quantiles);
SETOF record ST_Quantile(raster rast, integer nband, double precision[] quantiles);
double precision ST_Quantile(raster rast, double precision quantile);
double precision ST_Quantile(raster rast, boolean exclude_nodata_value, double precision quantile=NULL);
double precision ST_Quantile(raster rast, integer nband, double precision quantile);
double precision ST_Quantile(raster rast, integer nband, boolean exclude_nodata_value, double precision quantile);
double precision ST_Quantile(raster rast, integer nband, double precision quantile);
Description
Calcule les quantiles d’un raster ou d’une couverture raster, dans le contexte de l’échantillon ou de la population. Ainsi, une
valeur peut être examinée pour se situer au percentile de 25%, 50% ou 75% du raster.
Note
Si exclude_nodata_value est false, les pixels de valeur nodata seront également pris en compte.
Exemples
SELECT (pvq).*
FROM (SELECT ST_Quantile(rast, ARRAY[0.25,0.75]) As pvq
FROM dummy_rast WHERE rid=2) As foo
ORDER BY (pvq).quantile;
quantile | value
----------+-------
0.25 | 253
0.75 | 254
value
------
254
Voir aussi
10.9.5 ST_SummaryStats
ST_SummaryStats — Retourne des résumés statistiques (count, sum, mean, stddev, min, max) pour une bande raster ou une
couverture raster spécifiée. Si aucune bande n’est spécifiée, la bande 1 est utilisée.
Synopsis
Description
Retourne un résumé statistique summarystats composé de count, sum, mean, stddev, min, max pour une bande raster ou une
couverture raster spécifiée. Si aucune bande nband n’est spécifiée, la bande 1 est utilisée.
Note
Par défaut, seules les valeurs de pixels différentes de la valeur nodata sont prises en compte. Définir
exclude_nodata_value à false pour obtenir le comptage de tous les pixels.
Note
Par défaut, tous les pixels sont échantillonnés. Pour obtenir une réponse plus rapide, définir sample_percent à
une valeur inférieure à 1
Changement : 3.1.0 Suppression des variantes ST_SummaryStats(rastertable, rastercolumn, ...). Utiliser ST_SummaryStatsAgg
à la place.
Disponibilité : 2.0.0
Cet exemple a pris 574 ms sur PostGIS Windows 64-bit avec tous les bâtiments de Boston et les tuiles aériennes (tuiles de
150x150 pixels chacune ~ 134 000 tuiles), ~102 000 enregistrements de bâtiments
WITH
-- our features of interest
feat AS (SELECT gid As building_id, geom_26986 As geom FROM buildings AS b
WHERE gid IN(100, 103,150)
),
Manuel PostGIS 3.4.0dev 673 / 870
-- For a table -- will get better speed if set sampling to less than 100%
-- Here we set to 25% and get a much faster answer
SELECT band, (stats).*
FROM (SELECT band, ST_SummaryStats('o_4_boston','rast', band,true,0.25) As stats
FROM generate_series(1,3) As band) As foo;
Voir aussi
10.9.6 ST_SummaryStatsAgg
ST_SummaryStatsAgg — Agrégat. Retourne des résumés statistiques (count, sum, mean, stddev, min, max) pour une bande
raster spécifiée pour une ensemble de rasters. Si aucune bande n’est spécifiée, la bande 1 est utilisée.
Synopsis
summarystats ST_SummaryStatsAgg(raster rast, integer nband, boolean exclude_nodata_value, double precision sample_percent);
summarystats ST_SummaryStatsAgg(raster rast, boolean exclude_nodata_value, double precision sample_percent);
summarystats ST_SummaryStatsAgg(raster rast, integer nband, boolean exclude_nodata_value);
Description
Retourne un résumé statistique summarystats composé de count, sum, mean, stddev, min, max pour une bande raster ou une
couverture raster spécifiée. Si aucune bande nband n’est spécifiée, la bande 1 est utilisée.
Note
Par défaut, seules les valeurs de pixels différentes de la valeur NODATA sont prises en compte. Définir
exclude_nodata_value à false pour obtenir le comptage de tous les pixels.
Note
Par défaut, tous les pixels sont échantillonnés. Pour obtenir une réponse plus rapide, définir sample_percent à
une valeur comprise entre zéro (0) et un (1)
Disponibilité : 2.2.0
Exemples
WITH foo AS (
SELECT
rast.rast
FROM (
SELECT ST_SetValue(
ST_SetValue(
ST_SetValue(
ST_AddBand(
ST_MakeEmptyRaster(10, 10, 10, 10, 2, 2, 0, 0,0)
, 1, '64BF', 0, 0
)
, 1, 1, 1, -10
)
, 1, 5, 4, 0
)
, 1, 5, 5, 3.14159
) AS rast
) AS rast
FULL JOIN (
SELECT generate_series(1, 10) AS id
) AS id
ON 1 = 1
)
SELECT
Manuel PostGIS 3.4.0dev 675 / 870
(stats).count,
round((stats).sum::numeric, 3),
round((stats).mean::numeric, 3),
round((stats).stddev::numeric, 3),
round((stats).min::numeric, 3),
round((stats).max::numeric, 3)
FROM (
SELECT
ST_SummaryStatsAgg(rast, 1, TRUE, 1) AS stats
FROM foo
) bar;
Voir aussi
10.9.7 ST_ValueCount
ST_ValueCount — Retourne un ensemble d’enregistrements contenant une valeur de pixels et le nombre de pixels ayant cette
valeur dans la bande du raster spécifié (ou de la couverture raster). Si aucune bande n’est spécifiée, la bande 1 est utilisée. Par
défaut, les pixels de valeur nodata ne sont pas comptés, et toutes les autres valeurs sont retournées, avec leur valeur arrondies à
l’entier le plus proche.
Synopsis
SETOF record ST_ValueCount(raster rast, integer nband=1, boolean exclude_nodata_value=true, double precision[] searchval-
ues=NULL, double precision roundto=0, double precision OUT value, integer OUT count);
SETOF record ST_ValueCount(raster rast, integer nband, double precision[] searchvalues, double precision roundto=0, double
precision OUT value, integer OUT count);
SETOF record ST_ValueCount(raster rast, double precision[] searchvalues, double precision roundto=0, double precision OUT
value, integer OUT count);
bigint ST_ValueCount(raster rast, double precision searchvalue, double precision roundto=0);
bigint ST_ValueCount(raster rast, integer nband, boolean exclude_nodata_value, double precision searchvalue, double precision
roundto=0);
bigint ST_ValueCount(raster rast, integer nband, double precision searchvalue, double precision roundto=0);
SETOF record ST_ValueCount(text rastertable, text rastercolumn, integer nband=1, boolean exclude_nodata_value=true, dou-
ble precision[] searchvalues=NULL, double precision roundto=0, double precision OUT value, integer OUT count);
SETOF record ST_ValueCount(text rastertable, text rastercolumn, double precision[] searchvalues, double precision roundto=0,
double precision OUT value, integer OUT count);
SETOF record ST_ValueCount(text rastertable, text rastercolumn, integer nband, double precision[] searchvalues, double pre-
cision roundto=0, double precision OUT value, integer OUT count);
bigintST_ValueCount(text rastertable, text rastercolumn, integer nband, boolean exclude_nodata_value, double precision search-
value, double precision roundto=0);
bigint ST_ValueCount(text rastertable, text rastercolumn, double precision searchvalue, double precision roundto=0);
bigint ST_ValueCount(text rastertable, text rastercolumn, integer nband, double precision searchvalue, double precision roundto=0);
Description
Retourne un ensemble d’enregistrements contenant les colonnes value count, correspondant à la valeur de pixel dans la bande
et le nombre de pixels ayant cette valeur dans la bande du raster spécifié (ou de la couverture raster).
Manuel PostGIS 3.4.0dev 676 / 870
Si aucune bande nband n’est spécifiée, la bande 1 est utilisée. Si aucune valeur searchvalues n’est spécifiée, retourne
toutes les valeurs de pixel trouvées dans le raster ou dans la couverture raster. Si une valeur searchvalue est spécifiée, retourne
un entier au lieu d’enregistrements, correspondant au nombre de pixels ayant la valeur recherchée
Note
Si exclude_nodata_value est false, les pixels de valeur nodata seront également pris en compte.
Disponibilité : 2.0.0
Exemples
SELECT (pvc).*
FROM (SELECT ST_ValueCount(rast) As pvc
FROM dummy_rast WHERE rid=2) As foo
ORDER BY (pvc).value;
value | count
-------+-------
250 | 2
251 | 1
252 | 2
253 | 6
254 | 12
value | count
-------+-------
249 | 2
250 | 2
251 | 1
252 | 2
253 | 6
254 | 12
112 | 2
:
--real live example. Count all the pixels in an aerial raster tile band 2 intersecting a ←-
geometry
-- and return only the pixel band values that have a count
> 500
SELECT (pvc).value, SUM((pvc).count) As total
FROM (SELECT ST_ValueCount(rast,2) As pvc
FROM o_4_boston
WHERE ST_Intersects(rast,
ST_GeomFromText('POLYGON((224486 892151,224486 892200,224706 892200,224706 ←-
892151,224486 892151))',26986)
)
) As foo
GROUP BY (pvc).value
HAVING SUM((pvc).count)
> 500
ORDER BY (pvc).value;
value | total
-------+-----
51 | 502
54 | 521
-- Just return count of pixels in each raster tile that have value of 100 of tiles that ←-
intersect a specific geometry --
SELECT rid, ST_ValueCount(rast,2,100) As count
FROM o_4_boston
WHERE ST_Intersects(rast,
ST_GeomFromText('POLYGON((224486 892151,224486 892200,224706 892200,224706 ←-
892151,224486 892151))',26986)
) ;
rid | count
-----+-------
1 | 56
2 | 95
14 | 37
15 | 64
Voir aussi
ST_Count, ST_SetBandNoDataValue
10.10.1 ST_RastFromWKB
Synopsis
Description
Construit un raster PostGIS à partir d’une représentation raster Well-Known Binary (WKB).
Disponibilité : 2.5.0
Exemples
SELECT (ST_Metadata(
ST_RastFromWKB(
'\001\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\010@ ←-
\000\000\000\000\000\000\340?\000\000\000\000\000\000\340?\000\000\000\000\000\000\000\00
bytea
)
)).* AS metadata;
0.5 | 0.5 | 10 | 20 | 2 | 3 | 0 | 0 | 10 | ←-
0
Voir aussi
10.10.2 ST_RastFromHexWKB
ST_RastFromHexWKB — Retourne un raster à partir d’un raster Well-Known Binary (WKB) en hexadécimal.
Synopsis
Description
Construit un raster PostGIS à partir d’une représentation hexadécimale raster Well-Known Binary (WKB).
Disponibilité : 2.5.0
Exemples
SELECT (ST_Metadata(
ST_RastFromHexWKB(
'010000000000000000000000400000000000000840000000000000 ←-
E03F000000000000E03F000000000000000000000000000000000A0000000A001400'
)
)).* AS metadata;
0.5 | 0.5 | 10 | 20 | 2 | 3 | 0 | 0 | 10 | ←-
0
Manuel PostGIS 3.4.0dev 679 / 870
Voir aussi
10.11.1 ST_AsBinary/ST_AsWKB
Synopsis
Description
Retourne la représentation binaire du raster. Si outasin est TRUE, les bandes out-db sont traitées comme in-db. Voir
raster/doc/RFC2-WellKnownBinaryFormat situé dans le dossier source de PostGIS pour plus de détails sur la représentation.
Cette fonction est utile dans les curseurs binaires pour extraire des données de la base de données sans les convertir en une
représentation sous forme de chaîne de caractères.
Note
Par défaut, la sortie WKB contient le chemin d’accès au fichier externe pour les bandes out-db. Si le client n’a pas
accès au fichier raster sous-jacent d’une bande out-db, définir outasin à TRUE.
Exemples
rastbin
---------------------------------------------------------------------------------
\001\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\010@ ←-
\000\000\000\000\000\000\340?\000\000\000\000\000\000\340?\000\000\000\000\000\000\000\000\000\00
Voir aussi
ST_RastFromWKB, ST_AsHexWKB
10.11.2 ST_AsHexWKB
Synopsis
Description
Retourne la représentation binaire en hexadécimal du raster. Si outasin est TRUE, les bandes out-db sont traitées comme in-db.
Voir raster/doc/RFC2-WellKnownBinaryFormat situé dans le dossier source de PostGIS pour les détails de la représentation.
Note
Par défaut, la sortie Hex WKB contient le chemin d’accès au fichier externe pour les bandes out-db. Si le client n’a pas
accès au fichier raster sous-jacent de la bande out-db, définir outasin à TRUE.
Disponibilité : 2.5.0
Exemples
st_ashexwkb
-----------------------------------------------------------------------------------------------------
010000000000000000000000400000000000000840000000000000 ←-
E03F000000000000E03F000000000000000000000000000000000A0000000A001400
Voir aussi
ST_RastFromHexWKB, ST_AsBinary/ST_AsWKB
10.11.3 ST_AsGDALRaster
ST_AsGDALRaster — Retourne la tuile raster dans le format GDAL raster spécifié. Les formats raster disponibles sont ceux
supportés par votre bibliothèque compilée. Utilisez ST_GDALDrivers() pour obtenir la liste des formats supportés par votre
bibliothèque.
Synopsis
Description
Retourne la tuile raster dans le format spécifié. Les paramètres sont détaillés ci-dessous :
• format format de sortie. Cela dépend des drivers compilés dans votre bibliothèque libgdal. Les formats généralement
disponibles sont ’JPEG’, ’GTIff’, ’PNG’. Utilisez ST_GDALDrivers pour obtenir une liste des formats pris en charge par
votre bibliothèque.
• options tableau textuel d’options GDAL. Les options valides dépendent du format. Pour plus de détails, voir GDAL Raster
format options.
• srs La chaîne proj4text ou srtext (issue de spatial_ref_sys) à incorporer dans l’image
Utilisation de PostgreSQL Large Object Support pour exporter des données raster
Une façon d’exporter des données raster vers un autre format est d’utiliser les fonctions d’exportation de grands objets de
PostgreSQL. Nous allons reprendre l’exemple précédent en ajoutant l’export. Notez que vous devrez avoir un accès super
utilisateur à la base de données car elle utilise les fonctions lo côté serveur. L’exportation se fera également vers un chemin
d’accès sur le réseau du serveur. Si vous avez besoin d’exporter localement, utilisez les fonctions lo_ équivalentes de psql qui
exportent vers le système de fichiers local au lieu du système de fichiers du serveur.
DROP TABLE IF EXISTS tmp_out ;
SELECT lo_unlink(loid)
FROM tmp_out;
Voir aussi
10.11.4 ST_AsJPEG
ST_AsJPEG — Retourne les bandes sélectionnées du raster sous la forme d’une image JPEG (sous forme de tableau d’octets).
Si aucune bande n’est spécifiée, et que le raster a 1 ou plus de 3 bandes, seule la première bande est utilisée. Si le raster a
exactement 3 bandes, les 3 bandes sont utilisées et mappées en RGB.
Manuel PostGIS 3.4.0dev 682 / 870
Synopsis
Description
Retourne les bandes sélectionnées du raster sous la forme d’une seule image JPEG (Joint Photographic Exports Group Image).
Utilisez ST_AsGDALRaster si vous avez besoin d’exporter vers des types de raster moins courants. Si aucune bande n’est
spécifiée, et que le raster a 1 ou plus de 3 bandes, seule la première bande est utilisée. Si le raster a exactement 3 bandes, les
3 bandes sont utilisées. Il existe de nombreuses variantes de la fonction avec de nombreuses options. Celles-ci sont détaillées
ci-dessous :
Exemples : Export
-- output first 3 bands (but make band 2 Red, band 1 green, and band 3 blue, progressive ←-
and 90% quality
SELECT ST_AsJPEG(rast,ARRAY[2,1,3],ARRAY['QUALITY=90','PROGRESSIVE=ON']) As rastjpg
FROM dummy_rast WHERE rid=2;
Voir aussi
10.11.5 ST_AsPNG
ST_AsPNG — Retourne les bandes sélectionnées du raster sous la forme d’une image PNG (sous forme de tableau d’octets). Si
aucune bande n’est spécifiée et que le raster a 1, 3 ou 4 bandes, toutes les bandes sont utilisées. Si aucune bande n’est spécifiée
et que le raster a 2 ou plus de 4 bandes, seule la bande 1 est utilisée. Les bandes sont mappées en RGB ou RGBA.
Manuel PostGIS 3.4.0dev 683 / 870
Synopsis
Description
Retourne les bandes sélectionnées du raster sous la forme d’une seule PNG (image graphique portable). Utilisez ST_AsGDALRaster
si vous avez besoin d’exporter vers des types de raster moins courants. Si aucune bande n’est spécifiée, les 3 premières bandes
sont exportées. Il existe de nombreuses variantes de cette fonction avec de nombreuses options. Si aucun srid n’est spécifié,
c’est le srid du raster qui est utilisé. Ces options sont détaillées ci-dessous :
Exemples
-- export the first 3 bands and map band 3 to Red, band 1 to Green, band 2 to blue
SELECT ST_AsPNG(rast, ARRAY[3,1,2]) As rastpng
FROM dummy_rast WHERE rid=2;
Voir aussi
10.11.6 ST_AsTIFF
ST_AsTIFF — Retourne les bandes sélectionnées du raster sous la forme d’une seule image TIFF (sous forme de tableau
d’octets). Si aucune bande n’est spécifiée ou si l’une des bandes spécifiées n’existe pas dans le raster, toutes les bandes sont
utilisées.
Synopsis
Description
Retourne les bandes sélectionnées du raster sous la forme d’un fichier TIFF (Tagged Image File Format). Si aucune bande
n’est spécifiée, toutes les bandes seront utilisées. Cette fonction est une enveloppe autour de ST_AsGDALRaster. Utilisez
ST_AsGDALRaster si vous avez besoin d’exporter vers des types de raster moins courants. Il existe de nombreuses variantes de
la fonction avec de nombreuses options. Si aucun texte SRS de référence spatiale n’est présent, la référence spatiale du raster est
utilisée. Ces options sont détaillées ci-dessous :
• nbands spécifie un tableau des bandes à exporter (à noter que PNG ne supporte que 3 bandes aux maximum). L’ordre des
bandes est RGB. Par exemple, ARRAY[3,2,1] signifie que la bande 3 est la rouge, la bande 2 est la verte et la bande 1 est la
bleue
• compression Expression de compression -- JPEG90 (ou un autre pourcentage), LZW, JPEG, DEFLATE9.
• options tableau textuel d’options GDAL, parmi les options définies pour GTiff (voir create_options pour GTiff de ST_GDALDrivers
Voir GDAL Raster format options pour plus de détails.
• srid srid du système de référence spatial du raster. Il est utilisé pour remplir les informations de géo-référence
Voir aussi
10.12.1 ST_Clip
ST_Clip — Retourne le raster coupé par la géométrie d’entrée. Si le numéro de bande n’est pas spécifié, toutes les bandes sont
traitées. Si crop n’est pas spécifié ou est TRUE, le raster de sortie est recadré.
Synopsis
raster ST_Clip(raster rast, integer[] nband, geometry geom, double precision[] nodataval=NULL, boolean crop=TRUE);
raster ST_Clip(raster rast, integer nband, geometry geom, double precision nodataval, boolean crop=TRUE);
raster ST_Clip(raster rast, integer nband, geometry geom, boolean crop);
raster ST_Clip(raster rast, geometry geom, double precision[] nodataval=NULL, boolean crop=TRUE);
raster ST_Clip(raster rast, geometry geom, double precision nodataval, boolean crop=TRUE);
raster ST_Clip(raster rast, geometry geom, boolean crop);
Description
Retourne un raster coupé par la géométrie d’entrée geom. Si l’index des bandes n’est pas spécifié, toutes les bandes sont traitées.
Les rasters résultant de ST_Clip doivent avoir une valeur de nodata assignée pour les zones découpées, une pour chaque bande.
Si aucune valeur n’est fournie et que le raster d’entrée n’a pas de valeur de nodata définie, les valeurs de nodata du raster résultant
sont fixées à ST_MinPossibleValue(ST_BandPixelType(rast, band)). Lorsque la taille du tableau nodata inférieure au nombre de
Manuel PostGIS 3.4.0dev 685 / 870
bandes, la dernière valeur du tableau est utilisée pour les bandes restantes. Si la taille du tableau nodata est supérieure au nombre
de bandes, les valeurs de nodata supplémentaires sont ignorées. Toutes les variantes acceptant un tableau de valeurs de nodata
acceptent également une valeur unique qui sera assignée à chaque bande.
Si crop n’est pas spécifié, true est utilisé par défaut, signifiant que le raster de sortie est recadré à l’intersection des étendues de
geomet rast. Si crop est défini à false, le nouveau raster a la même étendue que rast.
Disponibilité : 2.0.0
Amélioration : 2.1.0 Réécrit en C
Les exemples présentés ici utilisent les données aériennes du Massachusetts disponibles sur le site MassGIS MassGIS Aerial
Orthos. Les coordonnées sont exprimées en mètres (Massachusetts State Plane Meters).
Exemples : Coupe d’une bande sans recadrage et ajout d’autres bandes inchangées
-- Same example as before, but we need to set crop to false to be able to use ST_AddBand
-- because ST_AddBand requires all bands be the same Width and height
SELECT ST_AddBand(ST_Clip(rast, 1,
ST_Buffer(ST_Centroid(ST_Envelope(rast)),20),false
), ARRAY[ST_Band(rast,2),ST_Band(rast,3)] ) from aerials.boston
WHERE rid = 6;
Voir aussi
10.12.2 ST_ColorMap
ST_ColorMap — Crée un nouveau raster comprenant jusqu’à quatre bandes 8BUI (niveaux de gris, RGB, RGBA) à partir du
raster source et d’une bande spécifiée. Si aucune bande n’est spécifiée, la bande 1 est utilisée.
Synopsis
Description
Appliquer une palette de couleurs colormap à la bande nband du raster rast, pour obtenir un nouveau raster comprenant
jusqu’à quatre bandes 8BUI. Le nombre de bandes 8BUI dans le nouveau raster est déterminé par le nombre de composantes de
couleur définies dans colormap.
Si nband n’est pas spécifié, la bande 1 est utilisée.
colormap peut être un mot-clé d’une palette de couleurs prédéfinie, ou un ensemble de lignes définissant la valeur et les
composants de couleur.
Valeurs prédéfinies disponibles pour colormap :
Vous pouvez passer un ensemble d’entrées (une par ligne) à colormap pour spécifier des palettes de couleurs personnalisées.
Chaque entrée se compose généralement de cinq valeurs : la valeur du pixel et les composantes rouge, verte, bleue et alpha
correspondantes (composantes de couleur comprises entre 0 et 255). Des valeurs en pourcentage peuvent être utilisées à la place
des valeurs en pixels, où 0% et 100% sont les valeurs minimales et maximales trouvées dans la bande raster. Les valeurs peuvent
être séparées par des virgules (’,’), des tabulations, des deux-points (’:’) et/ou des espaces. La valeur du pixel peut être fixée à
nv, null ou nodata pour la valeur NODATA. Un exemple est fourni ci-dessous.
5 0 0 0 255
4 100:50 55 255
1 150,100 150 255
0% 255 255 255 255
nv 0 0 0 0
La syntaxe de colormap est similaire à celle du mode couleur du relief de GDAL gdaldem.
Valeurs disponibles pour method :
• INTERPOLATE pour utiliser l’interpolation linéaire afin de mélanger les couleurs entre les valeurs de pixels données
• EXACT pour correspondre strictement aux valeurs des pixels trouvés dans la palette de couleurs. Les pixels dont la valeur ne
correspond pas à une entrée de la palette de couleurs seront mis à 0 0 0 0 (RGBA)
• NEAREST pour utiliser l’entrée de la palette de couleurs dont la valeur est la plus proche de la valeur du pixel
Note
Une excellente référence pour les palette de couleurs est ColorBrewer.
Warning
Les bandes résultantes du nouveau raster n’auront pas de valeur NODATA définie. Utilisez ST_SetBandNoDataValue
pour définir une valeur NODATA si nécessaire.
Disponibilité : 2.1.0
Exemples
),
pi() * i * 0.125, ST_Point(50,50)
),
ref.rast, '8BUI'::text, i * 5
) AS rast
FROM ref
CROSS JOIN generate_series(1, 10, 3) AS i
) AS shapes;
SELECT
ST_NumBands(rast) As n_orig,
ST_NumBands(ST_ColorMap(rast,1, 'greyscale')) As ngrey,
ST_NumBands(ST_ColorMap(rast,1, 'pseudocolor')) As npseudo,
ST_NumBands(ST_ColorMap(rast,1, 'fire')) As nfire,
ST_NumBands(ST_ColorMap(rast,1, 'bluered')) As nbluered,
ST_NumBands(ST_ColorMap(rast,1, '
100% 255 0 0
80% 160 0 0
50% 130 0 0
30% 30 0 0
20% 60 0 0
0% 0 0 0
nv 255 255 255
')) As nred
FROM funky_shapes;
SELECT
ST_AsPNG(rast) As orig_png,
ST_AsPNG(ST_ColorMap(rast,1,'greyscale')) As grey_png,
ST_AsPNG(ST_ColorMap(rast,1, 'pseudocolor')) As pseudo_png,
ST_AsPNG(ST_ColorMap(rast,1, 'nfire')) As fire_png,
ST_AsPNG(ST_ColorMap(rast,1, 'bluered')) As bluered_png,
ST_AsPNG(ST_ColorMap(rast,1, '
100% 255 0 0
80% 160 0 0
50% 130 0 0
30% 30 0 0
20% 60 0 0
0% 0 0 0
nv 255 255 255
')) As red_png
FROM funky_shapes;
Manuel PostGIS 3.4.0dev 690 / 870
Voir aussi
ST_AsPNG, ST_AsRaster ST_MapAlgebra (callback function version), ST_Grayscale ST_NumBands, ST_Reclass, ST_SetBandNoDat
ST_Union
10.12.3 ST_Grayscale
ST_Grayscale — Crée un nouveau raster à 1 bande 8BUI à partir du raster source et des bandes spécifiées représentant les
composantes rouge, vert et bleu
Manuel PostGIS 3.4.0dev 691 / 870
Synopsis
(1) raster ST_Grayscale(raster rast, integer redband=1, integer greenband=2, integer blueband=3, text extenttype=INTERSECTION);
(2) raster ST_Grayscale(rastbandarg[] rastbandargset, text extenttype=INTERSECTION);
Description
Crée un raster à 1 bande 8BUI à partir de trois bandes d’entrée (provenant d’un ou plusieurs rasters). Toute bande d’entrée dont
le type de pixel n’est pas 8BUI sera reclassée avec ST_Reclass.
Note
Cette fonction est différente de ST_ColorMap avec le mot-clé grayscale, car ST_ColorMap n’opère que sur une
seule bande alors que cette fonction s’attend à trois bandes pour RGB. Cette fonction applique l’équation suivante pour
convertir les composantes RGB en niveaux de gris : 0,2989 * ROUGE + 0,5870 * VERT + 0,1140 * BLEU
Disponibilité : 2.5.0
Exemples : Variante 1
WITH apple AS (
SELECT ST_AddBand(
ST_MakeEmptyRaster(350, 246, 0, 0, 1, -1, 0, 0, 0),
'/tmp/apple.png'::text,
NULL::int[]
) AS rast
)
SELECT
ST_AsPNG(rast) AS original_png,
ST_AsPNG(ST_Grayscale(rast)) AS grayscale_png
FROM apple;
original_png grayscale_png
Manuel PostGIS 3.4.0dev 692 / 870
Exemples : Variante 2
WITH apple AS (
SELECT ST_AddBand(
ST_MakeEmptyRaster(350, 246, 0, 0, 1, -1, 0, 0, 0),
'/tmp/apple.png'::text,
NULL::int[]
) AS rast
)
SELECT
ST_AsPNG(rast) AS original_png,
ST_AsPNG(ST_Grayscale(
ARRAY[
ROW(rast, 1)::rastbandarg, -- red
ROW(rast, 2)::rastbandarg, -- green
ROW(rast, 3)::rastbandarg, -- blue
]::rastbandarg[]
)) AS grayscale_png
FROM apple;
Voir aussi
10.12.4 ST_Intersection
ST_Intersection — Retourne un raster ou un ensemble de paires (géométrie, valeur de pixel) représentant la partie partagée de
deux rasters ou l’intersection géométrique d’une vectorisation du raster et d’une géométrie.
Synopsis
Description
Retourne un raster ou un ensemble de paires (géométrie, valeur de pixel) représentant la partie partagée de deux rasters ou
l’intersection géométrique d’une vectorisation du raster et d’une géométrie.
Les trois premières variantes, qui retournent un ensemble de géométries, fonctionnent dans l’espace vectoriel. Le raster est
d’abord vectorisé (via ST_DumpAsPolygons) en un ensemble de lignes geomval, et ces lignes sont ensuite intersectées avec la
géométrie via la fonction PostGIS ST_Intersection (geometry, geometry). Les géométries intersectant uniquement une zone de
valeur nodata d’un raster renvoient une géométrie vide. Elles sont normalement exclues des résultats par l’utilisation correcte de
ST_Intersects dans la clause WHERE.
Vous pouvez accéder aux parties géométrie et valeur de l’ensemble résultant de geomval en les entourant de parenthèses et en
ajoutant ’.geom’ ou ’.val’ à la fin de l’expression. par exemple (ST_Intersection(rast, geom)).geom
Manuel PostGIS 3.4.0dev 693 / 870
Les autres variantes, qui retournent un raster, fonctionnent dans l’espace raster. Elles utilisent la variante de ST_MapAlgebraExpr
utilisant deux rasters pour réaliser l’intersection.
L’étendue du raster résultant correspond à l’intersection géométrique des deux étendues des rasters. Le raster résultant inclut les
bandes ’BAND1’, ’BAND2’ ou ’BOTH’, en fonction du paramètre returnband. Les zones de valeurs nodata présentes dans
n’importe quelle bande se traduisent par des zones de valeurs nodata dans toutes les bandes du résultat. En d’autres termes, tout
pixel croisant un pixel à valeur nodata devient un pixel à valeur nodata dans le résultat.
Les rasters résultant de ST_Intersection doivent avoir une valeur nodata assignée pour les zones non intersectées. Vous pouvez
définir ou remplacer la valeur nodata pour toute bande résultante en fournissant un tableau nodataval[] d’une ou deux
valeurs nodata selon que vous demandez les bandes ’BAND1’, ’BAND2’ ou ’BOTH’. La première valeur du tableau remplace
la valeur nodata dans la première bande et la deuxième valeur remplace la valeur nodata dans la deuxième bande. Si une bande
d’entrée n’a pas de valeur nodata définie et qu’aucune n’est fournie sous forme de tableau, une valeur est choisie via la fonction
ST_MinPossibleValue. Toutes les variantes acceptant un tableau de valeurs nodata peuvent également accepter une valeur unique
qui sera assignée à chaque bande demandée.
Dans toutes les variantes, si aucune bande n’est spécifiée, la bande 1 est utilisée. Si vous avez besoin d’une intersection entre un
raster et une géométrie qui retourne un raster, utilisez ST_Clip.
Note
Pour mieux contrôler l’étendue résultante, ou ce qu’il faut retourner lorsqu’une valeur nodata est rencontrée, utilisez la
variante à deux rasters de ST_MapAlgebraExpr.
Note
Pour calculer l’intersection d’une bande raster avec une géométrie dans l’espace raster, utilisez ST_Clip. ST_Clip
travaille sur des bandes rasters multiples et ne retourne pas de bande correspondant à la géométrie rasterisée.
Note
ST_Intersection devrait être utilisée conjointement avec ST_Intersects et un index sur la colonne raster et/ou la colonne
géométrique.
Amélioration : 2.0.0 - Ajout de l’intersection dans l’espace raster. Dans les versions antérieures à la version 2.0.0, seules les
intersections réalisées dans l’espace vectoriel étaient prises en charge.
SELECT
foo.rid,
foo.gid,
ST_AsText((foo.geomval).geom) As geomwkt,
(foo.geomval).val
FROM (
SELECT
A.rid,
g.gid,
ST_Intersection(A.rast, g.geom) As geomval
FROM dummy_rast AS A
CROSS JOIN (
VALUES
(1, ST_Point(3427928, 5793243.85) ),
(2, ST_GeomFromText('LINESTRING(3427927.85 5793243.75,3427927.8 ←-
5793243.75,3427927.8 5793243.8)')),
(3, ST_GeomFromText('LINESTRING(1 2, 3 4)'))
Manuel PostGIS 3.4.0dev 694 / 870
) As g(gid,geom)
WHERE A.rid = 2
) As foo;
Voir aussi
ST_MapAlgebra (callback function version) — Version avec fonction de rappel - Retourne un raster à une bande à partir d’un ou
plusieurs rasters d’entrée, d’index de bandes et d’une fonction de rappel spécifiée par l’utilisateur.
Synopsis
Description
Retourne un raster à une bande à partir d’un ou plusieurs rasters d’entrée, d’index de bandes et d’une fonction de rappel spécifiée
par l’utilisateur.
rast,rast1,rast2, rastbandargset Rasters sur lesquels le traitement d’algèbre cartographique est évalué.
rastbandargset permet d’utiliser une opération d’algèbre cartographique sur plusieurs rasters et/ou plusieurs bandes.
Voir l’exemple Variante 1.
nband, nband1, nband2 Numéros de bande du raster à évaluer. nband peut être un entier ou un tableau d’entiers désignant les
bandes. nband1 est la bande sur rast1 et nband2 est la bande sur rast2 pour le cas de 2 rasters/2 bandes.
callbackfunc The callbackfunc parameter must be the name and signature of an SQL or PL/pgSQL function, cast to a
regprocedure. An example PL/pgSQL function example is:
Manuel PostGIS 3.4.0dev 695 / 870
The callbackfunc must have three arguments: a 3-dimension double precision array, a 2-dimension integer array and a
variadic 1-dimension text array. The first argument value is the set of values (as double precision) from all input rasters.
The three dimensions (where indexes are 1-based) are: raster #, row y, column x. The second argument position is
the set of pixel positions from the output raster and input rasters. The outer dimension (where indexes are 0-based) is the
raster #. The position at outer dimension index 0 is the output raster’s pixel position. For each outer dimension, there are
two elements in the inner dimension for X and Y. The third argument userargs is for passing through any user-specified
arguments.
Passing a regprocedure argument to a SQL function requires the full function signature to be passed, then cast to a regpro-
cedure type. To pass the above example PL/pgSQL function as an argument, the SQL for the argument is:
'sample_callbackfunc(double precision[], integer[], text[])'::regprocedure
Note that the argument contains the name of the function, the types of the function arguments, quotes around the name and
argument types, and a cast to a regprocedure.
mask Un tableau à n dimensions (matrice) de nombres utilisés pour filtrer les cellules transmises à la fonction de rappel de
l’algèbre cartographique. 0 signifie que la valeur d’une cellule voisine doit être traitée comme une absence de données et
1 signifie que la valeur doit être traitée comme une donnée. Si weight est définit à true, les valeurs sont utilisées comme
multiplicateurs pour multiplier la valeur du pixel par cette valeur dans la position de voisinage.
weighted booléen (true/false) indiquant si la valeur d’un masque doit être pondérée (multipliée par la valeur originale) ou non
(ne s’applique qu’aux variantes qui prennent un masque).
pixeltype Si pixeltype est spécifié, l’unique bande du nouveau raster sera de ce type de pixel. Si pixeltype est NULL ou
omis, la nouvelle bande du raster aura le même pixeltype que la bande spécifiée du premier raster (pour les types d’étendue
: INTERSECTION, UNION, FIRST, CUSTOM) ou que la bande spécifiée du raster approprié (pour les types d’étendue :
SECOND, LAST). En cas de doute, spécifiez toujours pixeltype.
Le type de pixel résultant du raster de sortie doit correspondre à l’un des types énumérés dans ST_BandPixelType, ou être
omis ou défini à NULL.
extenttype Les valeurs possibles sont INTERSECTION (par défaut), UNION, FIRST (premier, par défaut pour les variantes à
un seul raster), SECOND, LAST (dernier), CUSTOM (personnalisé).
customextent Si extentype est CUSTOM, un raster doit être spécifié par le paramètre customextent. Voir l’exemple 4
de la variante 1.
distancex La distance en pixels de la cellule de référence dans la direction x. La largeur de la matrice résultante sera donc
2*distancex + 1. Si elle n’est pas spécifiée, seule la cellule de référence est prise en compte (voisinage de 0).
distancey La distance en pixels de la cellule de référence dans la direction y. La hauteur de la matrice résultante sera 2*distancey
+ 1 Si elle n’est pas spécifiée, seule la cellule de référence est prise en compte (voisinage de 0).
userargs Le troisième paramètre de la fonction callbackfunc est un tableau variadic text . Tous les arguments textuels
supplémentaires sont transmis à callbackfunc, et sont contenus dans l’argument userargs.
Note
Pour plus d’informations sur le mot-clé VARIADIC, veuillez vous référer à la documentation PostgreSQL et à la section
"SQL Functions with Variable Numbers of Arguments" de Query Language (SQL) Functions.
Manuel PostGIS 3.4.0dev 696 / 870
Note
Le paramètre text[] de la fonction callbackfunc est obligatoire, que vous choisissiez ou non de transmettre des
arguments à la fonction de rappel.
La variante 1 accepte un tableau de rastbandarg permettant l’utilisation d’une opération d’algèbre cartographique sur de
nombreux masters et/ou de nombreuses bandes. Voir l’exemple de la variante 1.
Les variantes 2 et 3 agissent sur une ou plusieurs bandes d’un même raster. Voir l’exemple des variantes 2 et 3.
La variante 4 utilise deux rasters avec une bande par raster. Voir l’exemple de la variante 4.
Disponibilité : 2.2.0 : Possibilité d’ajouter un masque
Disponibilité : 2.1.0
Exemples : Variante 1
Exemple complet avec les tuiles d’une couverture avec voisinage. Cette requête ne fonctionne qu’avec PostgreSQL 9.1 ou plus.
WITH foo AS (
SELECT 0 AS rid, ST_AddBand(ST_MakeEmptyRaster(2, 2, 0, 0, 1, -1, 0, 0, 0), 1, '16BUI', ←-
1, 0) AS rast UNION ALL
SELECT 1, ST_AddBand(ST_MakeEmptyRaster(2, 2, 2, 0, 1, -1, 0, 0, 0), 1, '16BUI', 2, 0) ←-
AS rast UNION ALL
SELECT 2, ST_AddBand(ST_MakeEmptyRaster(2, 2, 4, 0, 1, -1, 0, 0, 0), 1, '16BUI', 3, 0) ←-
AS rast UNION ALL
Exemple identique au précédent pour les tuiles d’une couverture avec voisinage, mais fonctionne avec PostgreSQL 9.0.
WITH src AS (
SELECT 0 AS rid, ST_AddBand(ST_MakeEmptyRaster(2, 2, 0, 0, 1, -1, 0, 0, 0), 1, '16BUI', ←-
1, 0) AS rast UNION ALL
SELECT 1, ST_AddBand(ST_MakeEmptyRaster(2, 2, 2, 0, 1, -1, 0, 0, 0), 1, '16BUI', 2, 0) ←-
AS rast UNION ALL
SELECT 2, ST_AddBand(ST_MakeEmptyRaster(2, 2, 4, 0, 1, -1, 0, 0, 0), 1, '16BUI', 3, 0) ←-
AS rast UNION ALL
)
WITH foo AS (
SELECT
t1.rid,
ST_Union(t2.rast) AS rast
FROM src t1
JOIN src t2
ON ST_Intersects(t1.rast, t2.rast)
AND t2.rid BETWEEN 0 AND 8
WHERE t1.rid = 4
GROUP BY t1.rid
), bar AS (
SELECT
t1.rid,
ST_MapAlgebra(
ARRAY[ROW(t2.rast, 1)]::rastbandarg[],
'raster_nmapalgebra_test(double precision[], int[], text[])'::regprocedure,
'32BUI',
'CUSTOM', t1.rast,
1, 1
) AS rast
FROM src t1
JOIN foo t2
ON t1.rid = t2.rid
)
SELECT
rid,
(ST_Metadata(rast)),
(ST_BandMetadata(rast, 1)),
ST_Value(rast, 1, 1, 1)
FROM bar;
Exemples : Variantes 2 et 3
Exemples : Variante 4
UNION ALL
SELECT 'mask weighted only consider neighbors, exclude center multi otehr pixel values by ←-
2' AS title, ST_MapAlgebra(rast,1,'ST_mean4ma(double precision[], int[], text[])':: ←-
regprocedure,
'{{2,2,2}, {2,0,2}, {2,2,2}}'::double precision[], true) As rast
FROM foo;
Manuel PostGIS 3.4.0dev 700 / 870
Voir aussi
ST_MapAlgebra (expression version) — Version avec expression - Retourne un raster à une bande à partir d’un ou deux rasters
d’entrée, d’index de bandes et d’une ou plusieurs expressions SQL spécifiées par l’utilisateur.
Manuel PostGIS 3.4.0dev 701 / 870
Synopsis
raster ST_MapAlgebra(raster rast, integer nband, text pixeltype, text expression, double precision nodataval=NULL);
raster ST_MapAlgebra(raster rast, text pixeltype, text expression, double precision nodataval=NULL);
raster ST_MapAlgebra(raster rast1, integer nband1, raster rast2, integer nband2, text expression, text pixeltype=NULL, text
extenttype=INTERSECTION, text nodata1expr=NULL, text nodata2expr=NULL, double precision nodatanodataval=NULL);
raster ST_MapAlgebra(raster rast1, raster rast2, text expression, text pixeltype=NULL, text extenttype=INTERSECTION, text
nodata1expr=NULL, text nodata2expr=NULL, double precision nodatanodataval=NULL);
Description
Version avec expression - Retourne un raster à une bande à partir d’un ou deux rasters d’entrée, d’index de bandes et d’une ou
plusieurs expressions SQL spécifiées par l’utilisateur.
Disponibilité : 2.1.0
Crée un nouveau raster à une bande formé en appliquant une opération algébrique PostgreSQL valide définie par expression
sur le raster d’entrée (rast). Si nband n’est pas fourni, la bande 1 est utilisée. Le nouveau raster aura la même géoréférence,
la même largeur et la même hauteur que le raster original mais n’aura qu’une seule bande.
Si pixeltype est fourni, le nouveau raster aura une bande de ce type de pixel. Si pixeltype est NULL, la nouvelle bande raster
aura le même type de pixel que la bande d’entrée de rast.
Crée un nouveau raster à une bande formé en appliquant une opération algébrique PostgreSQL valide aux deux bandes définies
par expression sur les deux bandes d’entrée rast1 (et optionnellement rast2). Si aucune bande band1, band2 n’est
spécifiée, la bande 1 est utilisée. Le raster résultant sera aligné (échelle, obliquité et coins) sur la grille définie par le premier
raster. Le raster résultant aura l’étendue définie par le paramètre extenttype.
expression Une expression algébrique PostgreSQL impliquant les deux rasters et les fonctions/opérateurs définis par Post-
greSQL qui définiront la valeur du pixel lorsque les pixels intersectent, par exemple (([rast1] + [rast2])/2.0)::integer
pixeltype Le type de pixel résultant du raster de sortie. Doit être l’un de ceux listés dans ST_BandPixelType, omis ou NULL.
S’il n’est pas fourni ou NULL, le type de pixel du premier raster sera utilisé par défaut.
extenttype Contrôle l’étendue du raster de sortie
1. INTERSECTION - L’étendue du nouveau raster est l’intersection des deux rasters. Il s’agit de la valeur par défaut.
2. UNION - L’étendue du nouveau raster est l’union des deux rasters.
3. FIRST - L’étendue du nouveau raster est la même que celle du premier raster.
4. SECOND - L’étendue du nouveau raster est la même que celle du second raster.
nodata1expr Une expression algébrique impliquant uniquement rast2, ou une constante qui définit la valeur à retourner
lorsque les pixels de rast1 sont des valeurs nodata et que les pixels correspondants dans rast2 ont des valeurs.
Manuel PostGIS 3.4.0dev 702 / 870
nodata2expr Une expression algébrique impliquant uniquement rast1, ou une constante qui définit la valeur à retourner
lorsque les pixels de rast2 sont des valeurs nodata et que les pixels correspondants dans rast1 ont des valeurs.
nodatanodataval Constante numérique à retourner lorsque les pixels de rast1 et de rast2 sont tous deux des valeurs nodata.
Exemples : Variantes 1 et 2
WITH foo AS (
SELECT ST_AddBand(ST_MakeEmptyRaster(10, 10, 0, 0, 1, 1, 0, 0, 0), '32BF'::text, 1, -1) ←-
AS rast
)
SELECT
ST_MapAlgebra(rast, 1, NULL, 'ceil([rast]*[rast.x]/[rast.y]+[rast.val])')
FROM foo;
Exemples : Variantes 3 et 4
WITH foo AS (
SELECT 1 AS rid, ST_AddBand(ST_AddBand(ST_AddBand(ST_MakeEmptyRaster(2, 2, 0, 0, 1, -1, ←-
0, 0, 0), 1, '16BUI', 1, 0), 2, '8BUI', 10, 0), 3, '32BUI'::text, 100, 0) AS rast ←-
UNION ALL
SELECT 2 AS rid, ST_AddBand(ST_AddBand(ST_AddBand(ST_MakeEmptyRaster(2, 2, 0, 1, 1, -1, ←-
0, 0, 0), 1, '16BUI', 2, 0), 2, '8BUI', 20, 0), 3, '32BUI'::text, 300, 0) AS rast
)
SELECT
ST_MapAlgebra(
t1.rast, 2,
t2.rast, 1,
'([rast2] + [rast1.val]) / 2'
) AS rast
FROM foo t1
CROSS JOIN foo t2
WHERE t1.rid = 1
AND t2.rid = 2;
Voir aussi
10.12.7 ST_MapAlgebraExpr
ST_MapAlgebraExpr — Version avec raster à 1 bande : Crée un nouveau raster à une bande formé par l’application d’une
opération algébrique PostgreSQL valide sur la bande d’entrée du raster et du type de pixel fourni. Si aucune bande n’est spécifiée,
la bande 1 est utilisée.
Manuel PostGIS 3.4.0dev 703 / 870
Synopsis
raster ST_MapAlgebraExpr(raster rast, integer band, text pixeltype, text expression, double precision nodataval=NULL);
raster ST_MapAlgebraExpr(raster rast, text pixeltype, text expression, double precision nodataval=NULL);
Description
Warning
ST_MapAlgebraExpr est obsolète depuis 2.1.0. Utilisez plutôt ST_MapAlgebra (expression version).
Crée un nouveau raster à une bande formé par l’application d’une opération algébrique PostgreSQL valide définie par expression
sur le raster d’entrée (rast). Si aucune band n’est spécifiée, la bande 1 est utilisée. Le nouveau raster aura la même
géoréférence, la même largeur et la même hauteur que le raster original mais n’aura qu’une seule bande.
Si pixeltype est fourni, le nouveau raster aura une bande de ce type de pixel. Si pixeltype est NULL, la nouvelle bande raster
aura le même type de pixel que la bande d’entrée de rast.
Dans l’expression, vous pouvez utiliser le mot clé [rast] pour faire référence à la valeur en pixels de la bande originale,
[rast.x] pour faire référence à l’indice de colonne de pixels (basé sur 1), [rast.y] pour faire référence à l’indice de ligne
de pixels (basé sur 1).
Disponibilité : 2.0.0
Exemples
Crée une nouveau raster à 1 bande qui est une fonction modulo 2 de la bande du raster original.
ALTER TABLE dummy_rast ADD COLUMN map_rast raster;
UPDATE dummy_rast SET map_rast = ST_MapAlgebraExpr(rast,NULL,'mod([rast]::numeric,2)') ←-
WHERE rid = 2;
SELECT
ST_Value(rast,1,i,j) As origval,
ST_Value(map_rast, 1, i, j) As mapval
FROM dummy_rast
CROSS JOIN generate_series(1, 3) AS i
CROSS JOIN generate_series(1,3) AS j
WHERE rid = 2;
origval | mapval
---------+--------
253 | 1
254 | 0
253 | 1
253 | 1
254 | 0
254 | 0
250 | 0
254 | 0
254 | 0
Crée un nouveau raster à 1 bande de type de pixel 2BUI à partir d’un raster original reclassifié et avec la valeur nodata à 0.
ALTER TABLE dummy_rast ADD COLUMN map_rast2 raster;
UPDATE dummy_rast SET
Manuel PostGIS 3.4.0dev 704 / 870
SELECT DISTINCT
ST_Value(rast,1,i,j) As origval,
ST_Value(map_rast2, 1, i, j) As mapval
FROM dummy_rast
CROSS JOIN generate_series(1, 5) AS i
CROSS JOIN generate_series(1,5) AS j
WHERE rid = 2;
origval | mapval
---------+--------
249 | 1
250 | 1
251 |
252 | 2
253 | 3
254 | 3
SELECT
ST_BandPixelType(map_rast2) As b1pixtyp
FROM dummy_rast
WHERE rid = 2;
b1pixtyp
----------
2BUI
Crée un nouveau raster à 3 bandes de même type de pixel que le raster original à 3 bandes, la première bande étant modifiée par
l’algèbre cartographique et les 2 bandes restantes n’étant pas modifiées.
SELECT
ST_AddBand(
ST_AddBand(
Manuel PostGIS 3.4.0dev 705 / 870
ST_AddBand(
ST_MakeEmptyRaster(rast_view),
ST_MapAlgebraExpr(rast_view,1,NULL,'tan([rast])*[rast]')
),
ST_Band(rast_view,2)
),
ST_Band(rast_view, 3)
) As rast_view_ma
FROM wind
WHERE rid=167;
Voir aussi
10.12.8 ST_MapAlgebraExpr
ST_MapAlgebraExpr — Version avec 2 bandes : Crée un nouveau raster à une bande formé en appliquant une opération al-
gébrique PostgreSQL valide sur les deux bandes du raster d’entrée et du type de pixel fourni. La bande 1 de chaque raster
est utilisée si aucun numéro de bande n’est spécifié. Le raster résultant sera aligné (échelle, obliquité et coins) sur la grille
définie par le premier raster et aura son étendue définie par le paramètre "extenttype". Les valeurs de "extenttype" peuvent être :
INTERSECTION, UNION, FIRST, SECOND.
Synopsis
raster ST_MapAlgebraExpr(raster rast1, raster rast2, text expression, text pixeltype=same_as_rast1_band, text extenttype=INTERSECT
text nodata1expr=NULL, text nodata2expr=NULL, double precision nodatanodataval=NULL);
raster ST_MapAlgebraExpr(raster rast1, integer band1, raster rast2, integer band2, text expression, text pixeltype=same_as_rast1_band,
text extenttype=INTERSECTION, text nodata1expr=NULL, text nodata2expr=NULL, double precision nodatanodataval=NULL);
Description
Warning
ST_MapAlgebraExpr est obsolète depuis 2.1.0. Utilisez plutôt ST_MapAlgebra (expression version).
Crée un nouveau raster à une bande formé en appliquant une opération algébrique PostgreSQL valide aux deux bandes définies
par expression sur les deux bandes d’entrée rast1 (et optionnellement rast2). Si aucune bande band1, band2 n’est
spécifiée, la bande 1 est utilisée. Le raster résultant sera aligné (échelle, obliquité et coins) sur la grille définie par le premier
raster. Le raster résultant aura l’étendue définie par le paramètre extenttype.
expression Une expression algébrique PostgreSQL impliquant les deux rasters et les fonctions/opérateurs définis par Post-
greSQL qui définiront la valeur du pixel lorsque les pixels intersectent, par exemple (([rast1] + [rast2])/2.0)::integer
pixeltype Le type de pixel résultant du raster de sortie. Doit être l’un de ceux listés dans ST_BandPixelType, omis ou NULL.
S’il n’est pas fourni ou NULL, le type de pixel du premier raster sera utilisé par défaut.
extenttype Contrôle l’étendue du raster de sortie
1. INTERSECTION - L’étendue du nouveau raster est l’intersection des deux rasters. Il s’agit de la valeur par défaut.
2. UNION - L’étendue du nouveau raster est l’union des deux rasters.
3. FIRST - L’étendue du nouveau raster est la même que celle du premier raster.
Manuel PostGIS 3.4.0dev 706 / 870
4. SECOND - L’étendue du nouveau raster est la même que celle du second raster.
nodata1expr Une expression algébrique impliquant uniquement rast2, ou une constante qui définit la valeur à retourner
lorsque les pixels de rast1 sont des valeurs nodata et que les pixels correspondants dans rast2 ont des valeurs.
nodata2expr Une expression algébrique impliquant uniquement rast1, ou une constante qui définit la valeur à retourner
lorsque les pixels de rast2 sont des valeurs nodata et que les pixels correspondants dans rast1 ont des valeurs.
nodatanodataval Constante numérique à retourner lorsque les pixels de rast1 et de rast2 sont tous deux des valeurs nodata.
Si le pixeltype est fourni, le nouveau raster aura une bande de ce type de pixel. Si le type de pixel est NULL ou si aucun type
de pixel n’est spécifié, la nouvelle bande raster aura le même type de pixel que la bande d’entrée de rast1.
Utilisez le mot clé [rast1.val] [rast2.val] pour désigner la valeur en pixels des bandes raster d’origine et [rast1.x],
[rast1.y] etc. pour désigner la position des pixels dans les colonnes et les lignes.
Disponibilité : 2.0.0
Crée une nouveau raster à 1 bande qui est une fonction modulo 2 de la bande du raster original.
--Create a cool set of rasters --
DROP TABLE IF EXISTS fun_shapes;
CREATE TABLE fun_shapes(rid serial PRIMARY KEY, fun_name text, rast raster);
-- Insert some cool shapes around Boston in Massachusetts state plane meters --
INSERT INTO fun_shapes(fun_name, rast)
VALUES ('ref', ST_AsRaster(ST_MakeEnvelope(235229, 899970, 237229, 901930,26986),200,200,'8 ←-
BUI',0,0));
--map them -
SELECT ST_MapAlgebraExpr(
area.rast, bub.rast, '[rast2.val]', '8BUI', 'INTERSECTION', '[rast2.val]', '[rast1. ←-
val]') As interrast,
ST_MapAlgebraExpr(
area.rast, bub.rast, '[rast2.val]', '8BUI', 'UNION', '[rast2.val]', '[rast1.val ←-
]') As unionrast
FROM
(SELECT rast FROM fun_shapes WHERE
fun_name = 'area') As area
CROSS JOIN (SELECT rast
FROM fun_shapes WHERE
fun_name = 'rand bubbles') As bub
Manuel PostGIS 3.4.0dev 707 / 870
intersection
union
-- we use ST_AsPNG to render the image so all single band ones look grey --
WITH mygeoms
AS ( SELECT 2 As bnum, ST_Buffer(ST_Point(1,5),10) As geom
UNION ALL
SELECT 3 AS bnum,
ST_Buffer(ST_GeomFromText('LINESTRING(50 50,150 150,150 50)'), 10,'join= ←-
bevel') As geom
UNION ALL
SELECT 1 As bnum,
ST_Buffer(ST_GeomFromText('LINESTRING(60 50,150 150,150 50)'), 5,'join= ←-
bevel') As geom
),
-- define our canvas to be 1 to 1 pixel to geometry
canvas
AS (SELECT ST_AddBand(ST_MakeEmptyRaster(200,
200,
ST_XMin(e)::integer, ST_YMax(e)::integer, 1, -1, 0, 0) , '8BUI'::text,0) As rast
FROM (SELECT ST_Extent(geom) As e,
Max(ST_SRID(geom)) As srid
from mygeoms
) As foo
),
rbands AS (SELECT ARRAY(SELECT ST_MapAlgebraExpr(canvas.rast, ST_AsRaster(m.geom, canvas ←-
.rast, '8BUI', 100),
'[rast2.val]', '8BUI', 'FIRST', '[rast2.val]', '[rast1.val]') As rast
FROM mygeoms AS m CROSS JOIN canvas
ORDER BY m.bnum) As rasts
)
SELECT rasts[1] As rast1 , rasts[2] As rast2, rasts[3] As rast3, ST_AddBand(
ST_AddBand(rasts[1],rasts[2]), rasts[3]) As final_rast
FROM rbands;
Manuel PostGIS 3.4.0dev 708 / 870
rast1 rast2
rast3 final_rast
Exemple : Superposition d’une délimitation de 2 mètres de certaines parcelles sur une image aérienne
-- Create new 3 band raster composed of first 2 clipped bands, and overlay of 3rd band with ←-
our geometry
-- This query took 3.6 seconds on PostGIS windows 64-bit install
WITH pr AS
-- Note the order of operation: we clip all the rasters to dimensions of our region
(SELECT ST_Clip(rast,ST_Expand(geom,50) ) As rast, g.geom
FROM aerials.o_2_boston AS r INNER JOIN
-- union our parcels of interest so they form a single geometry we can later intersect with
(SELECT ST_Union(ST_Transform(geom,26986)) AS geom
FROM landparcels WHERE pid IN('0303890000', '0303900000')) As g
ON ST_Intersects(rast::geometry, ST_Expand(g.geom,50))
),
-- we then union the raster shards together
Manuel PostGIS 3.4.0dev 709 / 870
-- ST_Union on raster is kinda of slow but much faster the smaller you can get the rasters
-- therefore we want to clip first and then union
prunion AS
(SELECT ST_AddBand(NULL, ARRAY[ST_Union(rast,1),ST_Union(rast,2),ST_Union(rast,3)] ) As ←-
clipped,geom
FROM pr
GROUP BY geom)
-- return our final raster which is the unioned shard with
-- with the overlay of our parcel boundaries
-- add first 2 bands, then mapalgebra of 3rd band + geometry
SELECT ST_AddBand(ST_Band(clipped,ARRAY[1,2])
, ST_MapAlgebraExpr(ST_Band(clipped,3), ST_AsRaster(ST_Buffer(ST_Boundary(geom),2), ←-
clipped, '8BUI',250),
'[rast2.val]', '8BUI', 'FIRST', '[rast2.val]', '[rast1.val]') ) As rast
FROM prunion;
Voir aussi
10.12.9 ST_MapAlgebraFct
ST_MapAlgebraFct — Version à 1 bande - Crée un nouveau raster à une bande formé par l’application d’une fonction Post-
greSQL valide sur la bande d’entrée du raster et sur le type de pixel fourni. La bande 1 est utilisée si aucune bande n’est
spécifiée.
Manuel PostGIS 3.4.0dev 710 / 870
Synopsis
Description
Warning
ST_MapAlgebraFct est obsolète depuis 2.1.0. Utilisez plutôt ST_MapAlgebra (callback function version).
Crée un nouveau raster à une bande formé en appliquant une fonction PostgreSQL valide spécifiée par onerasteruserfunc
sur le raster d’entrée (rast). Si aucune bande band n’est spécifiée, la bande 1 est utilisée. Le nouveau raster aura la même
géoréférence, la même largeur et la même hauteur que le raster original mais n’aura qu’une seule bande.
Si pixeltype est fourni, le nouveau raster aura une bande de ce type de pixel. Si pixeltype est NULL, la nouvelle bande raster
aura le même type de pixel que la bande d’entrée de rast.
The onerasteruserfunc parameter must be the name and signature of a SQL or PL/pgSQL function, cast to a regprocedure.
A very simple and quite useless PL/pgSQL function example is:
CREATE OR REPLACE FUNCTION simple_function(pixel FLOAT, pos INTEGER[], VARIADIC args TEXT ←-
[])
RETURNS FLOAT
AS $$ BEGIN
RETURN 0.0;
END; $$
LANGUAGE 'plpgsql' IMMUTABLE;
The userfunction may accept two or three arguments: a float value, an optional integer array, and a variadic text array. The
first argument is the value of an individual raster cell (regardless of the raster datatype). The second argument is the position of
the current processing cell in the form ’{x,y}’. The third argument indicates that all remaining parameters to ST_MapAlgebraFct
shall be passed through to the userfunction.
Passing a regprodedure argument to a SQL function requires the full function signature to be passed, then cast to a regprocedure
type. To pass the above example PL/pgSQL function as an argument, the SQL for the argument is:
'simple_function(float,integer[],text[])'::regprocedure
Note that the argument contains the name of the function, the types of the function arguments, quotes around the name and
argument types, and a cast to a regprocedure.
Le troisième paramètre de la fonction userfunction est un tableau variadic text . Tous les arguments textuels supplémentaires
de l’appel à ST_MapAlgebraFct sont transmis à userfunction, et sont contenus dans l’argument args.
Note
Pour plus d’informations sur le mot-clé VARIADIC, veuillez vous référer à la documentation PostgreSQL et à la section
"SQL Functions with Variable Numbers of Arguments" de Query Language (SQL) Functions.
Manuel PostGIS 3.4.0dev 711 / 870
Note
Le paramètre text[] de la fonction userfunction est obligatoire, que vous choisissiez ou non de transmettre des
arguments à la fonction de rappel.
Disponibilité : 2.0.0
Exemples
Crée une nouveau raster à 1 bande qui est une fonction modulo 2 de la bande du raster original.
ALTER TABLE dummy_rast ADD COLUMN map_rast raster;
CREATE FUNCTION mod_fct(pixel float, pos integer[], variadic args text[])
RETURNS float
AS $$
BEGIN
RETURN pixel::integer % 2;
END;
$$
LANGUAGE 'plpgsql' IMMUTABLE;
origval | mapval
---------+--------
253 | 1
254 | 0
253 | 1
253 | 1
254 | 0
254 | 0
250 | 0
254 | 0
254 | 0
Crée un nouveau raster à 1 bande de type de pixel 2BUI à partir d’un raster reclassifié avec la valeur nodata fixée via un paramètre
passé à la fonction utilisateur (0).
ALTER TABLE dummy_rast ADD COLUMN map_rast2 raster;
CREATE FUNCTION classify_fct(pixel float, pos integer[], variadic args text[])
RETURNS float
AS
$$
DECLARE
nodata float := 0;
BEGIN
IF NOT args[1] IS NULL THEN
nodata := args[1];
END IF;
IF pixel < 251 THEN
RETURN 1;
ELSIF pixel = 252 THEN
RETURN 2;
ELSIF pixel > 252 THEN
RETURN 3;
Manuel PostGIS 3.4.0dev 712 / 870
ELSE
RETURN nodata;
END IF;
END;
$$
LANGUAGE 'plpgsql';
UPDATE dummy_rast SET map_rast2 = ST_MapAlgebraFct(rast,'2BUI','classify_fct(float,integer ←-
[],text[])'::regprocedure, '0') WHERE rid = 2;
origval | mapval
---------+--------
249 | 1
250 | 1
251 |
252 | 2
253 | 3
254 | 3
b1pixtyp
----------
2BUI
Crée un nouveau raster à 3 bandes de même type de pixel que le raster original à 3 bandes, la première bande étant modifiée par
l’algèbre cartographique et les 2 bandes restantes n’étant pas modifiées.
CREATE FUNCTION rast_plus_tan(pixel float, pos integer[], variadic args text[])
RETURNS float
AS
$$
BEGIN
Manuel PostGIS 3.4.0dev 713 / 870
SELECT ST_AddBand(
ST_AddBand(
ST_AddBand(
ST_MakeEmptyRaster(rast_view),
ST_MapAlgebraFct(rast_view,1,NULL,'rast_plus_tan(float,integer[],text[])':: ←-
regprocedure)
),
ST_Band(rast_view,2)
),
ST_Band(rast_view, 3) As rast_view_ma
)
FROM wind
WHERE rid=167;
Voir aussi
10.12.10 ST_MapAlgebraFct
ST_MapAlgebraFct — Version à 2 bandes - Crée un nouveau raster à une bande formé par l’application d’une fonction Post-
greSQL valide sur les 2 bandes d’entrée du raster et sur le type de pixel fourni. La bande 1 est utilisée si aucune bande n’est
spécifiée. Le type d’étendue INTERSECTION est utilisé si non spécifié.
Synopsis
raster ST_MapAlgebraFct(raster rast1, raster rast2, regprocedure tworastuserfunc, text pixeltype=same_as_rast1, text extent-
type=INTERSECTION, text[] VARIADIC userargs);
raster ST_MapAlgebraFct(raster rast1, integer band1, raster rast2, integer band2, regprocedure tworastuserfunc, text pixel-
type=same_as_rast1, text extenttype=INTERSECTION, text[] VARIADIC userargs);
Description
Warning
ST_MapAlgebraFct est obsolète depuis 2.1.0. Utilisez plutôt ST_MapAlgebra (callback function version).
Crée un nouveau raster à une bande formé par l’application d’une fonction PostgreSQL valide spécifiée par tworastuserfunc
sur les rasters d’entrée rast1, rast2. Si aucune bande band1 ou band2 n’est spécifiée, la bande 1 est utilisée. Le nouveau
raster aura la même géoréférence, la même largeur et la même hauteur que les rasters originaux, mais il n’aura qu’une seule
bande.
Si pixeltype est fourni, le nouveau raster aura une bande de ce type de pixel. Si pixeltype est NULL ou omis, la nouvelle
bande raster aura le même type de pixel que la bande d’entrée de rast1.
The tworastuserfunc parameter must be the name and signature of an SQL or PL/pgSQL function, cast to a regprocedure.
An example PL/pgSQL function example is:
Manuel PostGIS 3.4.0dev 714 / 870
The tworastuserfunc may accept three or four arguments: a double precision value, a double precision value, an optional
integer array, and a variadic text array. The first argument is the value of an individual raster cell in rast1 (regardless of the
raster datatype). The second argument is an individual raster cell value in rast2. The third argument is the position of the
current processing cell in the form ’{x,y}’. The fourth argument indicates that all remaining parameters to ST_MapAlgebraFct
shall be passed through to the tworastuserfunc.
Passing a regprodedure argument to a SQL function requires the full function signature to be passed, then cast to a regprocedure
type. To pass the above example PL/pgSQL function as an argument, the SQL for the argument is:
'simple_function(double precision, double precision, integer[], text[])'::regprocedure
Note that the argument contains the name of the function, the types of the function arguments, quotes around the name and
argument types, and a cast to a regprocedure.
Le quatrième paramètre de la fonction tworastuserfunc est un tableau variadic text . Tous les arguments textuels supplé-
mentaires de l’appel à ST_MapAlgebraFct sont transmis à tworastuserfunc, et sont contenus dans l’argument userargs.
Note
Pour plus d’informations sur le mot-clé VARIADIC, veuillez vous référer à la documentation PostgreSQL et à la section
"SQL Functions with Variable Numbers of Arguments" de Query Language (SQL) Functions.
Note
Le paramètre text[] de la fonction tworastuserfunc est obligatoire, que vous choisissiez ou non de transmettre
des arguments à la fonction de rappel.
Disponibilité : 2.0.0
RETURN rast2;
ELSE
RETURN rast1;
END CASE;
RETURN NULL;
END;
$$ LANGUAGE 'plpgsql' IMMUTABLE COST 1000;
-- Map algebra on single band rasters and then collect with ST_AddBand
INSERT INTO map_shapes(rast,bnum,descrip)
SELECT ST_AddBand(ST_AddBand(rasts[1], rasts[2]),rasts[3]), 4, 'map bands overlay fct union ←-
(canvas)'
FROM (SELECT ARRAY(SELECT ST_MapAlgebraFct(m1.rast, m2.rast,
'raster_mapalgebra_union(double precision, double precision, integer[], text[]) ←-
'::regprocedure, '8BUI', 'FIRST')
FROM map_shapes As m1 CROSS JOIN map_shapes As m2
WHERE m1.descrip = 'canvas' AND m2.descrip <> 'canvas' ORDER BY m2.bnum) As rasts) As ←-
foo;
Manuel PostGIS 3.4.0dev 716 / 870
superposition des bandes de la carte (canevas) (R : small road, G : circle, B : big road)
RETURN NULL;
END;
$$ LANGUAGE 'plpgsql' VOLATILE COST 1000;
Fonction définie par l’utilisateur avec arguments supplémentaires et plusieurs bandes issus du même raster
Voir aussi
10.12.11 ST_MapAlgebraFctNgb
ST_MapAlgebraFctNgb — Version à 1 bande : Algèbre cartographique Plus proche voisin en utilisant une fonction PostgreSQL
définie par l’utilisateur. Retourne un raster dont les valeurs sont le résultat d’une fonction utilisateur PLPGSQL prenant un
voisinage des valeurs de la bande raster d’entrée.
Synopsis
raster ST_MapAlgebraFctNgb(raster rast, integer band, text pixeltype, integer ngbwidth, integer ngbheight, regprocedure on-
erastngbuserfunc, text nodatamode, text[] VARIADIC args);
Description
Warning
ST_MapAlgebraFctNgb est obsolète depuis 2.1.0. Utilisez plutôt ST_MapAlgebra (callback function version).
(version à un raster) Retourne un raster dont les valeurs sont le résultat d’une fonction utilisateur PLPGSQL prenant un voisinage
de valeurs de la bande du raster d’entrée. La fonction utilisateur prend le voisinage des valeurs des pixels sous la forme d’un
tableau de nombres. Pour chaque pixel, elle renvoie le résultat de la fonction utilisateur, en remplaçant la valeur du pixel
actuellement traité par le résultat de la fonction utilisateur.
Manuel PostGIS 3.4.0dev 718 / 870
onerastngbuserfunc Fonction utilisateur PLPGSQL/psql à appliquer aux pixels du voisinage de la bande du raster. Le premier
élément est un tableau bidimensionnel de nombres, représentant le voisinage rectangulaire du pixel
nodatamode Définit la valeur à transmettre à la fonction pour un pixel de voisinage qui est nodata ou NULL
’ignore’ : toutes les valeurs NODATA rencontrées dans le voisinage sont ignorées par le calcul -- ce drapeau doit être
envoyé à la fonction de rappel de l’utilisateur, et c’est la fonction de l’utilisateur qui décide comment l’ignorer.
’NULL’ : toute valeur NODATA rencontrée dans le voisinage aura pour conséquence que le pixel résultant sera NULL --
la fonction de rappel de l’utilisateur est ignorée dans ce cas.
’value’ : toutes les valeurs NODATA rencontrées dans le voisinage sont remplacées par le pixel de référence (celui qui se
trouve au centre du voisinage). Notez que si cette valeur est NODATA, le comportement est le même que ’NULL’ (pour le
voisinage concerné)
Disponibilité : 2.0.0
Exemples
Les exemples utilisent le raster katrina chargé comme une seule tuile, tel que décrit dans http://trac.osgeo.org/gdal/wiki/frmts_wtkraster.h
et ensuite traitée dans les exemples ST_Rescale
--
-- A simple 'callback' user function that averages up all the values in a neighborhood.
--
CREATE OR REPLACE FUNCTION rast_avg(matrix float[][], nodatamode text, variadic args text ←-
[])
RETURNS float AS
$$
DECLARE
_matrix float[][];
x1 integer;
x2 integer;
y1 integer;
y2 integer;
sum float;
BEGIN
_matrix := matrix;
sum := 0;
FOR x in array_lower(matrix, 1)..array_upper(matrix, 1) LOOP
FOR y in array_lower(matrix, 2)..array_upper(matrix, 2) LOOP
sum := sum + _matrix[x][y];
END LOOP;
END LOOP;
RETURN (sum*1.0/(array_upper(matrix,1)*array_upper(matrix,2) ))::integer ;
END;
$$
LANGUAGE 'plpgsql' IMMUTABLE COST 1000;
Manuel PostGIS 3.4.0dev 719 / 870
-- now we apply to our raster averaging pixels within 2 pixels of each other in X and Y ←-
direction --
SELECT ST_MapAlgebraFctNgb(rast, 1, '8BUI', 4,4,
'rast_avg(float[][], text, text[])'::regprocedure, 'NULL', NULL) As nn_with_border
FROM katrinas_rescaled
limit 1;
Voir aussi
10.12.12 ST_Reclass
ST_Reclass — Crée un nouveau raster composé de types de bandes reclassifiés par rapport à l’original. La bande n est la bande à
modifier. Si nband n’est pas spécifié, la bande 1 est utilisée. Toutes les autres bandes sont retournées inchangées. Cas d’utilisation
: convertir une bande 16BUI en 8BUI et ainsi de suite pour un rendu plus simple en tant que formats visualisables.
Synopsis
raster ST_Reclass(raster rast, integer nband, text reclassexpr, text pixeltype, double precision nodataval=NULL);
raster ST_Reclass(raster rast, reclassarg[] VARIADIC reclassargset);
raster ST_Reclass(raster rast, text reclassexpr, text pixeltype);
Description
Crée un nouveau raster formé par l’application d’une opération algébrique PostgreSQL valide définie par reclassexpr sur
le raster d’entrée (rast). Si aucune bande band n’est spécifiée, la bande 1 est utilisée. Le nouveau raster aura la même
géoréférence, la même largeur et la même hauteur que le raster original. Les bandes non désignées seront retournées inchangées.
Voir reclassarg pour la description des expressions de reclassification valides.
Les bandes du nouveau raster auront le type de pixel pixeltype. Si reclassargset est spécifié, chaque reclassarg définit
le comportement de chaque bande générée.
Disponibilité : 2.0.0
Manuel PostGIS 3.4.0dev 720 / 870
Exemples de base
Crée un nouveau raster à partir de l’original où la bande 2 est convertie de 8BUI à 4BUI et où toutes les valeurs entre 101 et 254
sont fixées à nodata.
ALTER TABLE dummy_rast ADD COLUMN reclass_rast raster;
UPDATE dummy_rast SET reclass_rast = ST_Reclass(rast,2,'0-87:1-10, 88-100:11-15, ←-
101-254:0-0', '4BUI',0) WHERE rid = 2;
Crée un nouveau raster à partir de l’original où les bandes 1, 2, 3 sont respectivement converties en 1BB, 4BUI, 4BUI et
reclassifiées. Cette opération utilise l’argument variadique reclassarg qui peut prendre en entrée un nombre variable de
reclassargs (théoriquement autant de bandes que vous avez)
UPDATE dummy_rast SET reclass_rast =
ST_Reclass(rast,
ROW(2,'0-87]:1-10, (87-100]:11-15, (101-254]:0-0', '4BUI',NULL)::reclassarg,
ROW(1,'0-253]:1, 254:0', '1BB', NULL)::reclassarg,
ROW(3,'0-70]:1, (70-86:2, [86-150):3, [150-255:4', '4BUI', NULL)::reclassarg
) WHERE rid = 2;
Exemple avancé : Mapping d’un raster 32BF à bande unique en plusieurs bandes visualisables
Crée un nouveau raster à 3 bandes (8BUI, 8BUI, 8BUI visualisable) à partir d’un raster qui n’a qu’une seule bande de 32bf
ALTER TABLE wind ADD COLUMN rast_view raster;
UPDATE wind
set rast_view = ST_AddBand( NULL,
ARRAY[
ST_Reclass(rast, 1,'0.1-10]:1-10,9-10]:11,(11-33:0'::text, '8BUI'::text,0),
ST_Reclass(rast,1, '11-33):0-255,[0-32:0,(34-1000:0'::text, '8BUI'::text,0),
ST_Reclass(rast,1,'0-32]:0,(32-100:100-255'::text, '8BUI'::text,0)
]
);
Voir aussi
10.12.13 ST_Union
ST_Union — Retourne l’union d’un ensemble de tuiles raster, en un seul raster composé de 1 ou plusieurs bandes.
Synopsis
Description
Retourne l’union d’un ensemble de tuiles raster en un seul raster, composé d’au moins une bande. L’étendue du raster résultant
est l’étendue de l’ensemble. Dans le cas d’une intersection, la valeur résultante est définie par uniontype parmi : LAST (par
défaut), FIRST, MIN, MAX, COUNT, SUM, MEAN, RANGE.
Note
Pour pouvoir calculer l’union de raster, tous les rasters doivent avoir le même alignement. Voir ST_SameAlignment et
ST_NotSameAlignmentReason pour plus de détails. Une façon de résoudre les problèmes d’alignement est d’utiliser
ST_Resample et d’utiliser le même raster de référence pour l’alignement.
Disponibilité : 2.0.0
Amélioration : 2.1.0 Vitesse améliorée (entièrement en C).
Disponibilité : 2.1.0 Ajout de la variante ST_Union(rast, unionarg).
Amélioration : 2.1.0 ST_Union(rast) (variante 1) permet l’union sur toutes les bandes de tous les rasters d’entrée. Les versions
précédentes de PostGIS ne prenaient en compte que la première bande.
Amélioration : 2.1.0 ST_Union(rast, uniontype) (variante 4) permet l’union de toutes les bandes de tous les rasters d’entrée.
Manuel PostGIS 3.4.0dev 722 / 870
Exemples : Reconstituer une tuile raster à partir d’une tuile raster fragmentée d’une seule bande
Exemples : Retourne un raster multi-bandes qui est l’union de tuiles intersectant une géométrie
-- this creates a multi band raster collecting all the tiles that intersect a line
-- Note: In 2.0, this would have just returned a single band raster
-- , new union works on all bands by default
-- this is equivalent to unionarg: ARRAY[ROW(1, 'LAST'), ROW(2, 'LAST'), ROW(3, 'LAST')]:: ←-
unionarg[]
SELECT ST_Union(rast)
FROM aerials.boston
WHERE ST_Intersects(rast, ST_GeomFromText('LINESTRING(230486 887771, 230500 88772)',26986) ←-
);
Exemples : Retourne un raster multi-bandes qui est l’union de tuiles intersectant une géométrie
Nous utilisons ici la syntaxe plus longue si nous ne voulons qu’un sous-ensemble de bandes ou si nous voulons changer l’ordre
des bandes
-- this creates a multi band raster collecting all the tiles that intersect a line
SELECT ST_Union(rast,ARRAY[ROW(2, 'LAST'), ROW(1, 'LAST'), ROW(3, 'LAST')]::unionarg[])
FROM aerials.boston
WHERE ST_Intersects(rast, ST_GeomFromText('LINESTRING(230486 887771, 230500 88772)',26986) ←-
);
Voir aussi
10.13.1 ST_Distinct4ma
ST_Distinct4ma — Fonction de traitement des données raster qui calcule le nombre de valeurs de pixels uniques dans un voisi-
nage.
Synopsis
Description
Note
La variante 1 est une fonction de rappel spécialisée à utiliser comme paramètre de rappel pour
ST_MapAlgebraFctNgb.
Note
La variante 2 est une fonction de rappel spécialisée à utiliser comme paramètre de rappel pour ST_MapAlgebra (call-
back function version).
Warning
L’utilisation de la variante 1 est non recommandée, ST_MapAlgebraFctNgb étant dépréciée depuis 2.1.0.
Disponibilité : 2.0.0
Amélioration : 2.1.0 Ajout de la variante 2
Exemples
SELECT
rid,
st_value(
st_mapalgebrafctngb(rast, 1, NULL, 1, 1, 'st_distinct4ma(float[][],text,text[])':: ←-
regprocedure, 'ignore', NULL), 2, 2
)
FROM dummy_rast
WHERE rid = 2;
rid | st_value
-----+----------
2 | 3
(1 row)
Voir aussi
10.13.2 ST_InvDistWeight4ma
ST_InvDistWeight4ma — Fonction de traitement des données raster qui interpole la valeur d’un pixel à partir de son voisinage.
Synopsis
double precision ST_InvDistWeight4ma(double precision[][][] value, integer[][] pos, text[] VARIADIC userargs);
Manuel PostGIS 3.4.0dev 724 / 870
Description
Calcule une valeur interpolée pour un pixel en utilisant la méthode de la distance inverse pondérée.
Deux paramètres facultatifs peuvent être fournis par l’intermédiaire de userargs. Le premier paramètre est le facteur de
puissance (variable k dans l’équation ci-dessous) entre 0 et 1, utilisé dans l’équation de la pondération de la distance inverse. S’il
n’est pas spécifié, la valeur par défaut est 1. Le second paramètre est le pourcentage de pondération, appliqué uniquement lorsque
la valeur du pixel d’intérêt est incluse dans la valeur interpolée du voisinage. S’il n’est pas spécifié et que le pixel d’intérêt a une
valeur, cette valeur est retournée.
L’équation de base de la distance inverse pondérée est :
Note
Cette fonction est une fonction de rappel spécialisée à utiliser comme paramètre de rappel pour ST_MapAlgebra
(callback function version).
Disponibilité : 2.1.0
Exemples
-- NEEDS EXAMPLE
Voir aussi
10.13.3 ST_Max4ma
ST_Max4ma — Fonction de traitement des données raster qui calcule la valeur maximale d’un pixel dans un voisinage.
Synopsis
Description
Note
La variante 1 est une fonction de rappel spécialisée à utiliser comme paramètre de rappel pour
ST_MapAlgebraFctNgb.
Manuel PostGIS 3.4.0dev 725 / 870
Note
La variante 2 est une fonction de rappel spécialisée à utiliser comme paramètre de rappel pour ST_MapAlgebra (call-
back function version).
Warning
L’utilisation de la variante 1 est non recommandée, ST_MapAlgebraFctNgb étant dépréciée depuis 2.1.0.
Disponibilité : 2.0.0
Amélioration : 2.1.0 Ajout de la variante 2
Exemples
SELECT
rid,
st_value(
st_mapalgebrafctngb(rast, 1, NULL, 1, 1, 'st_max4ma(float[][],text,text[])':: ←-
regprocedure, 'ignore', NULL), 2, 2
)
FROM dummy_rast
WHERE rid = 2;
rid | st_value
-----+----------
2 | 254
(1 row)
Voir aussi
10.13.4 ST_Mean4ma
ST_Mean4ma — Fonction de traitement des données raster qui calcule la valeur moyenne d’un pixel dans un voisinage.
Synopsis
Description
Note
La variante 1 est une fonction de rappel spécialisée à utiliser comme paramètre de rappel pour
ST_MapAlgebraFctNgb.
Manuel PostGIS 3.4.0dev 726 / 870
Note
La variante 2 est une fonction de rappel spécialisée à utiliser comme paramètre de rappel pour ST_MapAlgebra (call-
back function version).
Warning
L’utilisation de la variante 1 est non recommandée, ST_MapAlgebraFctNgb étant dépréciée depuis 2.1.0.
Disponibilité : 2.0.0
Amélioration : 2.1.0 Ajout de la variante 2
Exemples : Variante 1
SELECT
rid,
st_value(
st_mapalgebrafctngb(rast, 1, '32BF', 1, 1, 'st_mean4ma(float[][],text,text[])':: ←-
regprocedure, 'ignore', NULL), 2, 2
)
FROM dummy_rast
WHERE rid = 2;
rid | st_value
-----+------------------
2 | 253.222229003906
(1 row)
Exemples : Variante 2
SELECT
rid,
st_value(
ST_MapAlgebra(rast, 1, 'st_mean4ma(double precision[][][], integer[][], text ←-
[])'::regprocedure,'32BF', 'FIRST', NULL, 1, 1)
, 2, 2)
FROM dummy_rast
WHERE rid = 2;
rid | st_value
-----+------------------
2 | 253.222229003906
(1 row)
Voir aussi
10.13.5 ST_Min4ma
ST_Min4ma — Fonction de traitement des données raster qui calcule la valeur minimale d’un pixel dans un voisinage.
Manuel PostGIS 3.4.0dev 727 / 870
Synopsis
Description
Note
La variante 1 est une fonction de rappel spécialisée à utiliser comme paramètre de rappel pour
ST_MapAlgebraFctNgb.
Note
La variante 2 est une fonction de rappel spécialisée à utiliser comme paramètre de rappel pour ST_MapAlgebra (call-
back function version).
Warning
L’utilisation de la variante 1 est non recommandée, ST_MapAlgebraFctNgb étant dépréciée depuis 2.1.0.
Disponibilité : 2.0.0
Amélioration : 2.1.0 Ajout de la variante 2
Exemples
SELECT
rid,
st_value(
st_mapalgebrafctngb(rast, 1, NULL, 1, 1, 'st_min4ma(float[][],text,text[])':: ←-
regprocedure, 'ignore', NULL), 2, 2
)
FROM dummy_rast
WHERE rid = 2;
rid | st_value
-----+----------
2 | 250
(1 row)
Voir aussi
10.13.6 ST_MinDist4ma
ST_MinDist4ma — Fonction de traitement des données raster qui renvoie la distance minimale (en nombre de pixels) entre le
pixel d’intérêt et un pixel voisin ayant une valeur.
Manuel PostGIS 3.4.0dev 728 / 870
Synopsis
double precision ST_MinDist4ma(double precision[][][] value, integer[][] pos, text[] VARIADIC userargs);
Description
Retourne la plus petite distance (en nombre de pixels) entre le pixel d’intérêt et le pixel le plus proche ayant une valeur dans le
voisinage.
Note
Le but de cette fonction est de fournir un point de données informatif qui aide à déduire l’utilité de la valeur interpolée
du pixel d’intérêt à partir de ST_InvDistWeight4ma. Cette fonction est particulièrement utile lorsque le voisinage est
peu peuplé.
Note
Cette fonction est une fonction de rappel spécialisée à utiliser comme paramètre de rappel pour ST_MapAlgebra
(callback function version).
Disponibilité : 2.1.0
Exemples
-- NEEDS EXAMPLE
Voir aussi
10.13.7 ST_Range4ma
ST_Range4ma — Fonction de traitement des données raster qui calcule la plage de valeurs des pixels dans un voisinage.
Synopsis
Description
Note
La variante 1 est une fonction de rappel spécialisée à utiliser comme paramètre de rappel pour
ST_MapAlgebraFctNgb.
Manuel PostGIS 3.4.0dev 729 / 870
Note
La variante 2 est une fonction de rappel spécialisée à utiliser comme paramètre de rappel pour ST_MapAlgebra (call-
back function version).
Warning
L’utilisation de la variante 1 est non recommandée, ST_MapAlgebraFctNgb étant dépréciée depuis 2.1.0.
Disponibilité : 2.0.0
Amélioration : 2.1.0 Ajout de la variante 2
Exemples
SELECT
rid,
st_value(
st_mapalgebrafctngb(rast, 1, NULL, 1, 1, 'st_range4ma(float[][],text,text[])':: ←-
regprocedure, 'ignore', NULL), 2, 2
)
FROM dummy_rast
WHERE rid = 2;
rid | st_value
-----+----------
2 | 4
(1 row)
Voir aussi
10.13.8 ST_StdDev4ma
ST_StdDev4ma — Fonction de traitement des données raster qui calcule l’écart type des valeurs des pixels dans un voisinage.
Synopsis
Description
Calcule l’écart type des valeurs des pixels dans un voisinage de pixels.
Note
La variante 1 est une fonction de rappel spécialisée à utiliser comme paramètre de rappel pour
ST_MapAlgebraFctNgb.
Manuel PostGIS 3.4.0dev 730 / 870
Note
La variante 2 est une fonction de rappel spécialisée à utiliser comme paramètre de rappel pour ST_MapAlgebra (call-
back function version).
Warning
L’utilisation de la variante 1 est non recommandée, ST_MapAlgebraFctNgb étant dépréciée depuis 2.1.0.
Disponibilité : 2.0.0
Amélioration : 2.1.0 Ajout de la variante 2
Exemples
SELECT
rid,
st_value(
st_mapalgebrafctngb(rast, 1, '32BF', 1, 1, 'st_stddev4ma(float[][],text,text[])':: ←-
regprocedure, 'ignore', NULL), 2, 2
)
FROM dummy_rast
WHERE rid = 2;
rid | st_value
-----+------------------
2 | 1.30170822143555
(1 row)
Voir aussi
10.13.9 ST_Sum4ma
ST_Sum4ma — Fonction de traitement des données raster qui calcule la somme de toutes les valeurs de pixels dans un voisinage.
Synopsis
Description
Calcule la somme de toutes les valeurs des pixels dans un voisinage de pixels.
Pour la variante 2, une valeur de substitution pour les pixels NODATA peut être spécifiée en passant cette valeur à userargs.
Note
La variante 1 est une fonction de rappel spécialisée à utiliser comme paramètre de rappel pour
ST_MapAlgebraFctNgb.
Manuel PostGIS 3.4.0dev 731 / 870
Note
La variante 2 est une fonction de rappel spécialisée à utiliser comme paramètre de rappel pour ST_MapAlgebra (call-
back function version).
Warning
L’utilisation de la variante 1 est non recommandée, ST_MapAlgebraFctNgb étant dépréciée depuis 2.1.0.
Disponibilité : 2.0.0
Amélioration : 2.1.0 Ajout de la variante 2
Exemples
SELECT
rid,
st_value(
st_mapalgebrafctngb(rast, 1, '32BF', 1, 1, 'st_sum4ma(float[][],text,text[])':: ←-
regprocedure, 'ignore', NULL), 2, 2
)
FROM dummy_rast
WHERE rid = 2;
rid | st_value
-----+----------
2 | 2279
(1 row)
Voir aussi
10.14.1 ST_Aspect
ST_Aspect — Retourne l’exposition (par défaut, en degrés) d’une bande raster d’élévation. Utile pour l’analyse de terrain.
Synopsis
raster ST_Aspect(raster rast, integer band=1, text pixeltype=32BF, text units=DEGREES, boolean interpolate_nodata=FALSE);
raster ST_Aspect(raster rast, integer band, raster customextent, text pixeltype=32BF, text units=DEGREES, boolean interpo-
late_nodata=FALSE);
Manuel PostGIS 3.4.0dev 732 / 870
Description
Retourne l’exposition (par défaut, en degrés) d’une bande raster d’élévation. Utilise l’algèbre cartographique et applique
l’équation d’exposition aux pixels voisins.
units indique l’unité de l’exposition. Les valeurs possibles sont : RADIANS, DEGREES (par défaut).
Lorsque units = RADIANS, les valeurs sont comprises entre 0 et 2 * pi radians, mesurés dans le sens des aiguilles d’une
montre à partir du nord.
Lorsque units = DEGREES, les valeurs sont comprises entre 0 et 360 degrés, mesurés dans le sens des aiguilles d’une montre
à partir du nord.
Si la pente du pixel est nulle, l’exposition du pixel est -1.
Note
Pour plus d’informations sur la pente, l’exposition et l’ombrage, veuillez consulter ESRI - How hillshade works et ERDAS
Field Guide - Aspect Images.
Disponibilité : 2.0.0
Amélioration : 2.1.0 Utilise ST_MapAlgebra() et ajout du paramètre optionnel interpolate_nodata
Changement : 2.1.0 Dans les versions précédentes, les valeurs retournées étaient en radians. Désormais, les valeurs retournées
sont par défaut en degrés
Exemples : Variante 1
WITH foo AS (
SELECT ST_SetValues(
ST_AddBand(ST_MakeEmptyRaster(5, 5, 0, 0, 1, -1, 0, 0, 0), 1, '32BF', 0, -9999),
1, 1, 1, ARRAY[
[1, 1, 1, 1, 1],
[1, 2, 2, 2, 1],
[1, 2, 3, 2, 1],
[1, 2, 2, 2, 1],
[1, 1, 1, 1, 1]
]::double precision[][]
) AS rast
)
SELECT
ST_DumpValues(ST_Aspect(rast, 1, '32BF'))
FROM foo
-----------------------------------------------------------------------------------------------------
----------------------------------
(1,"{{315,341.565063476562,0,18.4349479675293,45},{288.434936523438,315,0,45,71.5650482177734},{270,
2227,180,161.565048217773,135}}")
(1 row)
Exemples : Variante 2
Exemple complet avec les tuiles d’une couverture. Cette requête ne fonctionne qu’avec PostgreSQL 9.1 ou plus.
Manuel PostGIS 3.4.0dev 733 / 870
WITH foo AS (
SELECT ST_Tile(
ST_SetValues(
ST_AddBand(
ST_MakeEmptyRaster(6, 6, 0, 0, 1, -1, 0, 0, 0),
1, '32BF', 0, -9999
),
1, 1, 1, ARRAY[
[1, 1, 1, 1, 1, 1],
[1, 1, 1, 1, 2, 1],
[1, 2, 2, 3, 3, 1],
[1, 1, 3, 2, 1, 1],
[1, 2, 2, 1, 2, 1],
[1, 1, 1, 1, 1, 1]
]::double precision[]
),
2, 2
) AS rast
)
SELECT
t1.rast,
ST_Aspect(ST_Union(t2.rast), 1, t1.rast)
FROM foo t1
CROSS JOIN foo t2
WHERE ST_Intersects(t1.rast, t2.rast)
GROUP BY t1.rast;
Voir aussi
10.14.2 ST_HillShade
ST_HillShade — Retourne l’hypothétique éclairage d’une bande raster d’élévation en utilisant les valeurs d’azimut, d’altitude,
de luminosité et d’échelle fournies.
Synopsis
raster ST_HillShade(raster rast, integer band=1, text pixeltype=32BF, double precision azimuth=315, double precision alti-
tude=45, double precision max_bright=255, double precision scale=1.0, boolean interpolate_nodata=FALSE);
raster ST_HillShade(raster rast, integer band, raster customextent, text pixeltype=32BF, double precision azimuth=315, double
precision altitude=45, double precision max_bright=255, double precision scale=1.0, boolean interpolate_nodata=FALSE);
Description
Retourne l’hypothétique éclairage d’une bande raster d’élévation en utilisant les données d’entrée d’azimut, d’altitude, de lumi-
nosité et d’échelle. Utilise l’algèbre cartographique et applique l’équation d’ombrage aux pixels voisins. Les valeurs des pixels
retournées sont comprises entre 0 et 255.
azimuth est une valeur comprise entre 0 et 360 degrés, mesurée dans le sens des aiguilles d’une montre à partir du nord.
altitude est une valeur comprise entre 0 et 90 degrés, où 0 degré correspond à l’horizon et 90 degrés à la verticale.
max_bright est une valeur comprise entre 0 et 255, 0 correspondant à une absence de luminosité et 255 à une luminosité
maximale.
Manuel PostGIS 3.4.0dev 734 / 870
scale est le rapport entre les unités verticales et les unités horizontales. Pour Feet:LatLon, utiliser scale=370400, pour Me-
ters:LatLon utiliser scale=111120.
Si interpolate_nodata est TRUE, les valeurs des pixels NODATA du raster d’entrée seront interpolées à l’aide de
ST_InvDistWeight4ma avant de calculer l’éclairage.
Note
Pour plus d’informations sur l’ombrage, veuillez consulter How hillshade works.
Disponibilité : 2.0.0
Amélioration : 2.1.0 Utilise ST_MapAlgebra() et ajout du paramètre optionnel interpolate_nodata
Changement : 2.1.0 Dans les versions précédentes, l’azimut et l’altitude étaient exprimés en radians. Désormais, l’azimut et
l’altitude sont exprimés en degrés
Exemples : Variante 1
WITH foo AS (
SELECT ST_SetValues(
ST_AddBand(ST_MakeEmptyRaster(5, 5, 0, 0, 1, -1, 0, 0, 0), 1, '32BF', 0, -9999),
1, 1, 1, ARRAY[
[1, 1, 1, 1, 1],
[1, 2, 2, 2, 1],
[1, 2, 3, 2, 1],
[1, 2, 2, 2, 1],
[1, 1, 1, 1, 1]
]::double precision[][]
) AS rast
)
SELECT
ST_DumpValues(ST_Hillshade(rast, 1, '32BF'))
FROM foo
-----------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------
(1,"{{NULL,NULL,NULL,NULL,NULL},{NULL,251.32763671875,220.749786376953,147.224319458008, ←-
NULL},{NULL,220.749786376953,180.312225341797,67.7497863769531,NULL},{NULL ←-
,147.224319458008
,67.7497863769531,43.1210060119629,NULL},{NULL,NULL,NULL,NULL,NULL}}")
(1 row)
Exemples : Variante 2
Exemple complet avec les tuiles d’une couverture. Cette requête ne fonctionne qu’avec PostgreSQL 9.1 ou plus.
WITH foo AS (
SELECT ST_Tile(
ST_SetValues(
ST_AddBand(
ST_MakeEmptyRaster(6, 6, 0, 0, 1, -1, 0, 0, 0),
1, '32BF', 0, -9999
),
Manuel PostGIS 3.4.0dev 735 / 870
1, 1, 1, ARRAY[
[1, 1, 1, 1, 1, 1],
[1, 1, 1, 1, 2, 1],
[1, 2, 2, 3, 3, 1],
[1, 1, 3, 2, 1, 1],
[1, 2, 2, 1, 2, 1],
[1, 1, 1, 1, 1, 1]
]::double precision[]
),
2, 2
) AS rast
)
SELECT
t1.rast,
ST_Hillshade(ST_Union(t2.rast), 1, t1.rast)
FROM foo t1
CROSS JOIN foo t2
WHERE ST_Intersects(t1.rast, t2.rast)
GROUP BY t1.rast;
Voir aussi
10.14.3 ST_Roughness
Synopsis
raster ST_Roughness(raster rast, integer nband, raster customextent, text pixeltype="32BF" , boolean interpolate_nodata=FALSE
);
Description
Calcule la rugosité d’un MNT en soustrayant le maximum du minimum pour une zone donnée.
Disponibilité : 2.1.0
Exemples
-- needs examples
Voir aussi
10.14.4 ST_Slope
ST_Slope — Retourne la pente (par défaut, en degrés) d’une bande raster d’élévation. Utile pour l’analyse de terrain.
Manuel PostGIS 3.4.0dev 736 / 870
Synopsis
raster ST_Slope(raster rast, integer nband=1, text pixeltype=32BF, text units=DEGREES, double precision scale=1.0, boolean
interpolate_nodata=FALSE);
raster ST_Slope(raster rast, integer nband, raster customextent, text pixeltype=32BF, text units=DEGREES, double precision
scale=1.0, boolean interpolate_nodata=FALSE);
Description
Retourne la pente (par défaut, en degrés) d’une bande raster d’élévation. Utilise l’algèbre cartographique et applique l’équation
de pente aux pixels voisins.
units indique l’unité de la pente. Les valeurs possibles sont : RADIANS, DEGREES (par défaut), PERCENT.
scale est le rapport entre les unités verticales et les unités horizontales. Pour Feet:LatLon, utiliser scale=370400, pour Me-
ters:LatLon utiliser scale=111120.
Si interpolate_nodata est TRUE, les valeurs des pixels NODATA du raster d’entrée seront interpolées à l’aide de
ST_InvDistWeight4ma avant de calculer la pente de la surface.
Note
Pour plus d’informations sur la pente, l’exposition et l’ombrage, veuillez consulter ESRI - How hillshade works et ERDAS
Field Guide - Slope Images.
Disponibilité : 2.0.0
Amélioration : 2.1.0 Utilise ST_MapAlgebra() et ajout des paramètres optionnels units, scale, interpolate_nodata
Changement : 2.1.0 Dans les versions précédentes, les valeurs retournées étaient en radians. Désormais, les valeurs retournées
sont par défaut en degrés
Exemples : Variante 1
WITH foo AS (
SELECT ST_SetValues(
ST_AddBand(ST_MakeEmptyRaster(5, 5, 0, 0, 1, -1, 0, 0, 0), 1, '32BF', 0, -9999),
1, 1, 1, ARRAY[
[1, 1, 1, 1, 1],
[1, 2, 2, 2, 1],
[1, 2, 3, 2, 1],
[1, 2, 2, 2, 1],
[1, 1, 1, 1, 1]
]::double precision[][]
) AS rast
)
SELECT
ST_DumpValues(ST_Slope(rast, 1, '32BF'))
FROM foo
st_dumpvalues
-----------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------
---------------------------------------------------------------------
(1,"{{10.0249881744385,21.5681285858154,26.5650520324707,21.5681285858154,10.0249881744385},{21.5681
Manuel PostGIS 3.4.0dev 737 / 870
{26.5650520324707,36.8698959350586,0,36.8698959350586,26.5650520324707},{21.5681285858154,35.26438903
5681285858154,26.5650520324707,21.5681285858154,10.0249881744385}}")
(1 row)
Exemples : Variante 2
Exemple complet avec les tuiles d’une couverture. Cette requête ne fonctionne qu’avec PostgreSQL 9.1 ou plus.
WITH foo AS (
SELECT ST_Tile(
ST_SetValues(
ST_AddBand(
ST_MakeEmptyRaster(6, 6, 0, 0, 1, -1, 0, 0, 0),
1, '32BF', 0, -9999
),
1, 1, 1, ARRAY[
[1, 1, 1, 1, 1, 1],
[1, 1, 1, 1, 2, 1],
[1, 2, 2, 3, 3, 1],
[1, 1, 3, 2, 1, 1],
[1, 2, 2, 1, 2, 1],
[1, 1, 1, 1, 1, 1]
]::double precision[]
),
2, 2
) AS rast
)
SELECT
t1.rast,
ST_Slope(ST_Union(t2.rast), 1, t1.rast)
FROM foo t1
CROSS JOIN foo t2
WHERE ST_Intersects(t1.rast, t2.rast)
GROUP BY t1.rast;
Voir aussi
10.14.5 ST_TPI
Synopsis
raster ST_TPI(raster rast, integer nband, raster customextent, text pixeltype="32BF" , boolean interpolate_nodata=FALSE );
Description
Calcule l’index de position topographique (TPI), qui est défini comme la moyenne focale avec un rayon de un moins la cellule
centrale.
Manuel PostGIS 3.4.0dev 738 / 870
Note
Cette fonction ne prend en charge qu’un rayon focal de un.
Disponibilité : 2.1.0
Exemples
-- needs examples
Voir aussi
10.14.6 ST_TRI
Synopsis
raster ST_TRI(raster rast, integer nband, raster customextent, text pixeltype="32BF" , boolean interpolate_nodata=FALSE );
Description
L’indice de rugosité du terrain est calculé en comparant le pixel central à ses voisins, en prenant les valeurs absolues des dif-
férences et en faisant la moyenne du résultat.
Note
Cette fonction ne prend en charge qu’un rayon focal de un.
Disponibilité : 2.1.0
Exemples
-- needs examples
Voir aussi
10.15.1 Box3D
Synopsis
Description
Exemples
SELECT
rid,
Box3D(rast) AS rastbox
FROM dummy_rast;
rid | rastbox
----+-------------------------------------------------
1 | BOX3D(0.5 0.5 0,20.5 60.5 0)
2 | BOX3D(3427927.75 5793243.5 0,3427928 5793244 0)
Voir aussi
ST_Envelope
10.15.2 ST_ConvexHull
ST_ConvexHull — Retourne l’enveloppe convexe du raster, en incluant les valeurs de pixels égales à BandNoDataValue. Pour
les données raster de forme régulière et sans obliquité, cette fonction donne le même résultat que ST_Envelope ; elle n’est donc
utile que pour les données raster de forme irrégulière ou inclinée.
Synopsis
Description
Retourne l’enveloppe convexe du raster, en incluant les valeurs de pixels égales à BandNoDataValue. Pour les données raster de
forme régulière et sans obliquité, cette fonction donne plus ou moins le même résultat que ST_Envelope ; elle n’est donc utile
que pour les données raster de forme irrégulière ou inclinée.
Note
ST_Envelope arrondit les coordonnées à l’inférieur, et ajoute donc un petit tampon autour du raster. La réponse est
donc subtilement différente de ST_ConvexHull qui n’arrondit pas les coordonnées.
Manuel PostGIS 3.4.0dev 740 / 870
Exemples
convhull | env
--------------------------------------------------------+------------------------------------ ←-
POLYGON((0.5 0.5,20.5 0.5,20.5 60.5,0.5 60.5,0.5 0.5)) | POLYGON((0 0,20 0,20 60,0 60,0 0) ←-
)
convhull | env
--------------------------------------------------------+------------------------------------ ←-
POLYGON((0.5 0.5,20.5 1.5,22.5 61.5,2.5 60.5,0.5 0.5)) | POLYGON((0 0,22 0,22 61,0 61,0 0) ←-
)
Voir aussi
10.15.3 ST_DumpAsPolygons
ST_DumpAsPolygons — Retourne un ensemble d’enregistrements de type geomval (geom, val), à partir d’une bande raster
donnée. Si aucune bande bandnum n’est spécifiée, la bande 1 est utilisée.
Synopsis
Description
Il s’agit d’une fonction de retour d’ensemble (SRF). Elle retourne un ensemble d’enregistrements geomval, composés par une
géométrie (geom) et une valeur de bande de pixels (val). Chaque polygone est l’union de tous les pixels de cette bande qui ont la
même valeur de pixel, indiquée par val.
ST_DumpAsPolygon est utile pour polygoniser les données raster. C’est l’inverse d’un GROUP BY, en ce sens qu’elle crée de
nouvelles lignes. Par exemple, cette fonction peut être utilisée pour décomposer un seul raster en plusieurs POLYGONS/MUL-
TIPOLYGONS.
Changement 3.3.0, la validation et la correction sont désactivées pour améliorer les performances. Peut donc retourner des
géométries non valides.
Disponibilité : Nécessite GDAL 1.7 ou plus.
Manuel PostGIS 3.4.0dev 741 / 870
Note
Si une valeur nodata est définie pour une bande, les pixels ayant cette valeur ne seront pas retournés, sauf si ex-
clude_nodata_value=false.
Note
Si vous ne voulez que le nombre de pixels ayant une valeur donnée dans un raster, il est plus rapide d’utiliser
ST_ValueCount.
Note
Cette fonction est différente de ST_PixelAsPolygons, où une géométrie est retournée pour chaque pixel, quelle que
soit la valeur du pixel.
Exemples
val | geomwkt
-----+--------------------------------------------------------------------------
249 | POLYGON((3427927.95 5793243.95,3427927.95 5793243.85,3427928 5793243.85,
3427928 5793243.95,3427927.95 5793243.95))
250 | POLYGON((3427927.75 5793243.9,3427927.75 5793243.85,3427927.8 5793243.85,
3427927.8 5793243.9,3427927.75 5793243.9))
250 | POLYGON((3427927.8 5793243.8,3427927.8 5793243.75,3427927.85 5793243.75,
3427927.85 5793243.8, 3427927.8 5793243.8))
251 | POLYGON((3427927.75 5793243.85,3427927.75 5793243.8,3427927.8 5793243.8,
3427927.8 5793243.85,3427927.75 5793243.85))
Voir aussi
10.15.4 ST_Envelope
Synopsis
Description
Retourne la représentation polygonale de l’étendue du raster, dans les unités du système de référence spatial défini par srid. Il
s’agit d’une boîte de délimitation minimale float8 représentée sous la forme d’un polygone.
Le polygone est défini par les points des coins de la boîte englobante ((MINX, MINY), (MINX, MAXY), (MAXX, MAXY), (MAXX,
MINY), (MINX, MINY))
Exemples
rid | envgeomwkt
-----+--------------------------------------------------------------------
1 | POLYGON((0 0,20 0,20 60,0 60,0 0))
2 | POLYGON((3427927 5793243,3427928 5793243,
3427928 5793244,3427927 5793244, 3427927 5793243))
Voir aussi
10.15.5 ST_MinConvexHull
ST_MinConvexHull — Retourne la géométrie de l’enveloppe convexe du raster en excluant les pixels NODATA.
Synopsis
Description
Retourne la géométrie de l’enveloppe convexe du raster en excluant les pixels NODATA. Si nband est NULL, toutes les bandes
du raster sont prises en compte.
Disponibilité : 2.1.0
Exemples
WITH foo AS (
SELECT
ST_SetValues(
ST_SetValues(
ST_AddBand(ST_AddBand(ST_MakeEmptyRaster(9, 9, 0, 0, 1, -1, 0, 0, 0), 1, '8 ←-
BUI', 0, 0), 2, '8BUI', 1, 0),
1, 1, 1,
ARRAY[
[0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 1, 0, 0, 0, 0, 1],
[0, 0, 0, 1, 1, 0, 0, 0, 0],
[0, 0, 0, 1, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0],
Manuel PostGIS 3.4.0dev 743 / 870
[0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0]
]::double precision[][]
),
2, 1, 1,
ARRAY[
[0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0],
[1, 0, 0, 0, 0, 1, 0, 0, 0],
[0, 0, 0, 0, 1, 1, 0, 0, 0],
[0, 0, 0, 0, 0, 1, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 1, 0, 0, 0, 0, 0, 0]
]::double precision[][]
) AS rast
)
SELECT
ST_AsText(ST_ConvexHull(rast)) AS hull,
ST_AsText(ST_MinConvexHull(rast)) AS mhull,
ST_AsText(ST_MinConvexHull(rast, 1)) AS mhull_1,
ST_AsText(ST_MinConvexHull(rast, 2)) AS mhull_2
FROM foo
hull | mhull | ←-
mhull_1 | mhull_2
----------------------------------+-------------------------------------+----------------------------
POLYGON((0 0,9 0,9 -9,0 -9,0 0)) | POLYGON((0 -3,9 -3,9 -9,0 -9,0 -3)) | POLYGON((3 -3,9 ←-
-3,9 -6,3 -6,3 -3)) | POLYGON((0 -3,6 -3,6 -9,0 -9,0 -3))
Voir aussi
10.15.6 ST_Polygon
ST_Polygon — Retourne une géométrie multipolygonale formée par l’union des pixels dont la valeur est différente de nodata.
Si aucune bande bandnum n’est spécifiée, la bande 1 est utilisée.
Synopsis
Description
Changement 3.3.0, la validation et la correction sont désactivées pour améliorer les performances. Peut donc retourner des
géométries non valides.
Disponibilité : 0.1.6 Nécessite GDAL 1.7 ou plus.
Amélioration : 2.1.0 Vitesse améliorée (entièrement en C) et le multipolygone retourné est garanti d’être valide.
Changement : 2.1.0 Dans les versions précédentes, retournait parfois un polygone, retourne désormais toujours un multipolygon.
Manuel PostGIS 3.4.0dev 744 / 870
Exemples
-- by default no data band value is 0 or not set, so polygon will return a square polygon
SELECT ST_AsText(ST_Polygon(rast)) As geomwkt
FROM dummy_rast
WHERE rid = 2;
geomwkt
--------------------------------------------
MULTIPOLYGON(((3427927.75 5793244,3427928 5793244,3427928 5793243.75,3427927.75 ←-
5793243.75,3427927.75 5793244)))
geomwkt
---------------------------------------------------------
MULTIPOLYGON(((3427927.9 5793243.95,3427927.85 5793243.95,3427927.85 5793244,3427927.9 ←-
5793244,3427927.9 5793243.95)),((3427928 5793243.85,3427928 5793243.8,3427927.95 ←-
5793243.8,3427927.95 5793243.85,3427927.9 5793243.85,3427927.9 5793243.9,3427927.9 ←-
5793243.95,3427927.95 5793243.95,3427928 5793243.95,3427928 5793243.85)),((3427927.8 ←-
5793243.75,3427927.75 5793243.75,3427927.75 5793243.8,3427927.75 5793243.85,3427927.75 ←-
5793243.9,3427927.75 5793244,3427927.8 5793244,3427927.8 5793243.9,3427927.8 ←-
5793243.85,3427927.85 5793243.85,3427927.85 5793243.8,3427927.85 5793243.75,3427927.8 ←-
5793243.75)))
-- Or if you want the no data value different for just one time
SELECT ST_AsText(
ST_Polygon(
ST_SetBandNoDataValue(rast,1,252)
)
) As geomwkt
FROM dummy_rast
WHERE rid =2;
geomwkt
---------------------------------
MULTIPOLYGON(((3427928 5793243.85,3427928 5793243.8,3427928 5793243.75,3427927.85 ←-
5793243.75,3427927.8 5793243.75,3427927.8 5793243.8,3427927.75 5793243.8,3427927.75 ←-
5793243.85,3427927.75 5793243.9,3427927.75 5793244,3427927.8 5793244,3427927.85 ←-
5793244,3427927.9 5793244,3427928 5793244,3427928 5793243.95,3427928 5793243.85) ←-
,(3427927.9 5793243.9,3427927.9 5793243.85,3427927.95 5793243.85,3427927.95 ←-
5793243.9,3427927.9 5793243.9)))
Voir aussi
ST_Value, ST_DumpAsPolygons
Manuel PostGIS 3.4.0dev 745 / 870
10.16.1 &&
Synopsis
Description
L’opérateur && retourne TRUE si la boîte englobante du raster/géométrie A intersecte la boîte englobante du raster/géométrie B.
Note
Cet opérande utilisera tous les index qui peuvent être disponibles sur les données raster.
Disponibilité : 2.0.0
Exemples
10.16.2 &<
Synopsis
Description
L’opérateur &< retourne TRUE si la boîte englobante du raster A chevauche ou est à gauche de la boîte englobante de B ou, plus
précisément, si elle chevauche ou n’est PAS à droite de la boîte englobante de B.
Note
Cet opérande utilisera tous les index qui peuvent être disponibles sur les données raster.
Manuel PostGIS 3.4.0dev 746 / 870
Exemples
10.16.3 &>
Synopsis
Description
L’opérateur &> retourne TRUE si la boîte englobante du raster A chevauche ou est à droite de la boîte englobante du raster B ou,
plus précisément, si elle chevauche ou n’est PAS à gauche de la boîte englobante du raster B.
Note
Cette opérande utilisera tous les index qui peuvent être disponibles sur les géométries.
Exemples
10.16.4 =
= — Retourne TRUE si la boîte englobante de A est la même que celle de B. Utilise des boîtes englobantes en double précision.
Synopsis
Description
L’opérateur = retourne TRUE si la boîte englobante du raster A est la même que celle du raster B. PostgreSQL utilise les
opérateurs =, <, et > définis pour les rasters pour effectuer des tris et comparaisons internes sur les rasters (par exemple, dans une
clause GROUP BY ou ORDER BY).
Caution
Cet opérande n’utilisera PAS les index éventuellement disponibles sur les données raster. Utilisez plutôt ~=. Cet
opérateur existe principalement pour permettre le regroupement par colonne raster.
Disponibilité : 2.1.0
Voir aussi
~=
10.16.5 @
@ — Retourne TRUE si la boîte englobante de A est contenue dans celle de B. Utilise des boîtes englobantes en double précision.
Synopsis
Description
L’opérateur @ retourne TRUE si la boîte englobante du raster/géométrie A est contenue dans la boîte englobante du raster/géométrie
B.
Note
Cet opérande utilisera des index spatiaux sur les données raster.
Voir aussi
~
Manuel PostGIS 3.4.0dev 748 / 870
10.16.6 ~=
Synopsis
Description
L’opérateur ~= retourne TRUE si la boîte englobante du raster A est la même que la boîte englobante du raster B.
Note
Cet opérande utilisera tous les index qui peuvent être disponibles sur les données raster.
Disponibilité : 2.0.0
Exemples
Un cas d’utilisation très utile est celui où l’on prend deux ensembles de rasters à bande unique qui sont du même morceau mais
représentent des thèmes différents, et où l’on crée un raster multi-bandes
SELECT ST_AddBand(prec.rast, alt.rast) As new_rast
FROM prec INNER JOIN alt ON (prec.rast ~= alt.rast);
Voir aussi
ST_AddBand, =
10.16.7 ~
~ — Retourne TRUE si la boîte englobante de A contient celle de B. Utilise des boîtes englobantes en double précision.
Synopsis
Description
L’opérateur ~ retourne TRUE si la boîte englobante du raster/géométrie A contient la boîte englobante du raster/géométrie B.
Note
Cet opérande utilisera des index spatiaux sur les données raster.
Disponibilité : 2.0.0
Manuel PostGIS 3.4.0dev 749 / 870
Voir aussi
10.17.1 ST_Contains
ST_Contains — Retourne true si aucun point du raster rastB ne se trouve à l’extérieur du raster rastA et si au moins un point de
l’intérieur du raster rastB se trouve à l’intérieur du raster rastA.
Synopsis
boolean ST_Contains( raster rastA , integer nbandA , raster rastB , integer nbandB );
boolean ST_Contains( raster rastA , raster rastB );
Description
Le raster rastA contient rastB si et seulement si aucun point de rastB ne se trouve à l’extérieur de rastA et si au moins un point
de l’intérieur de rastB se trouve à l’intérieur de rastA. Si le numéro de bande n’est pas spécifié (ou si NULL), seule l’enveloppe
convexe du raster est prise en compte dans le test. Si un numéro de bande est spécifié, seuls les pixels ayant une valeur (différente
de NODATA) sont pris en compte dans le test.
Note
Cette fonction utilisera tous les index qui peuvent être disponibles sur les données raster.
Note
Pour tester la relation spatiale entre un raster et une géométrie, utilisez ST_Polygon sur le raster, par exemple
ST_Contains(ST_Polygon(raster), geometry) ou ST_Contains(geometry, ST_Polygon(raster)).
Note
ST_Contains() est l’inverse de ST_Within(). Ainsi, ST_Contains(rastA, rastB) implique ST_Within(rastB, rastA).
Disponibilité : 2.1.0
Exemples
Voir aussi
ST_Intersects, ST_Within
10.17.2 ST_ContainsProperly
ST_ContainsProperly — Retourne true si rastB intersecte l’intérieur de rastA, mais pas la frontière ou l’extérieur de rastA.
Synopsis
boolean ST_ContainsProperly( raster rastA , integer nbandA , raster rastB , integer nbandB );
boolean ST_ContainsProperly( raster rastA , raster rastB );
Description
Le raster rastA contient proprement rastB si rastB intersecte l’intérieur de rastA mais pas la limite ou l’extérieur de rastA. Si le
numéro de bande n’est pas spécifié (ou si NULL), seule l’enveloppe convexe du raster est prise en compte dans le test. Si le
numéro de bande est spécifié, seuls les pixels ayant une valeur (différente de NODATA) sont pris en compte dans le test.
Le raster rastA ne contient pas proprement lui-même, mais il se contient lui-même.
Note
Cette fonction utilisera tous les index qui peuvent être disponibles sur les données raster.
Note
Pour tester la relation spatiale entre un raster et une géométrie, utilisez ST_Polygon sur le raster, par exemple
ST_ContainsProperly(ST_Polygon(raster), geometry) ou ST_ContainsProperly(geometry, ST_Polygon(raster)).
Disponibilité : 2.1.0
Exemples
Voir aussi
ST_Intersects, ST_Contains
10.17.3 ST_Covers
ST_Covers — Retourne true si aucun point du raster rastB ne se trouve à l’extérieur du raster rastA.
Synopsis
boolean ST_Covers( raster rastA , integer nbandA , raster rastB , integer nbandB );
boolean ST_Covers( raster rastA , raster rastB );
Description
Le raster rastA recouvre le raster rastB si et seulement si aucun point du raster rastB ne se trouve à l’extérieur du raster rastA. Si
le numéro de bande n’est pas spécifié (ou si NULL), seule l’enveloppe convexe du raster est prise en compte dans le test. Si le
numéro de bande est spécifié, seuls les pixels ayant une valeur (différente de NODATA) sont pris en compte dans le test.
Note
Cette fonction utilisera tous les index qui peuvent être disponibles sur les données raster.
Note
Pour tester la relation spatiale entre un raster et une géométrie, utilisez ST_Polygon sur le raster, par exemple
ST_Covers(ST_Polygon(raster), geometry) ou ST_Covers(geometry, ST_Polygon(raster)).
Disponibilité : 2.1.0
Exemples
Voir aussi
ST_Intersects, ST_CoveredBy
10.17.4 ST_CoveredBy
ST_CoveredBy — Retourne true si aucun point du raster rastA ne se trouve à l’extérieur du raster rastB.
Manuel PostGIS 3.4.0dev 752 / 870
Synopsis
boolean ST_CoveredBy( raster rastA , integer nbandA , raster rastB , integer nbandB );
boolean ST_CoveredBy( raster rastA , raster rastB );
Description
Le raster rastA est couvert par rastB si et seulement si aucun point de rastA ne se trouve à l’extérieur de rastB. Si le numéro de
bande n’est pas spécifié (ou si NULL), seule l’enveloppe convexe du raster est prise en compte dans le test. Si le numéro de
bande est spécifié, seuls les pixels ayant une valeur (différente de NODATA) sont pris en compte dans le test.
Note
Cette fonction utilisera tous les index qui peuvent être disponibles sur les données raster.
Note
Pour tester la relation spatiale entre un raster et une géométrie, utilisez ST_Polygon sur le raster, par exemple
ST_CoveredBy(ST_Polygon(raster), geometry) ou ST_CoveredBy(geometry, ST_Polygon(raster)).
Disponibilité : 2.1.0
Exemples
Voir aussi
ST_Intersects, ST_Covers
10.17.5 ST_Disjoint
Synopsis
boolean ST_Disjoint( raster rastA , integer nbandA , raster rastB , integer nbandB );
boolean ST_Disjoint( raster rastA , raster rastB );
Manuel PostGIS 3.4.0dev 753 / 870
Description
Les rasters rastA et rastB sont disjoints s’ils ne partagent aucun espace. Si le numéro de bande n’est pas spécifié (ou si NULL),
seule l’enveloppe convexe du raster est prise en compte dans le test. Si le numéro de bande est spécifié, seuls les pixels ayant une
valeur (différente de NODATA) sont pris en compte dans le test.
Note
Cette fonction n’utilise PAS d’index.
Note
Pour tester la relation spatiale entre un raster et une géométrie, utilisez ST_Polygon sur le raster, par exemple
ST_Disjoint(ST_Polygon(raster), geometry).
Disponibilité : 2.1.0
Exemples
-- rid = 1 has no bands, hence the NOTICE and the NULL value for st_disjoint
SELECT r1.rid, r2.rid, ST_Disjoint(r1.rast, 1, r2.rast, 1) FROM dummy_rast r1 CROSS JOIN ←-
dummy_rast r2 WHERE r1.rid = 2;
Voir aussi
ST_Intersects
10.17.6 ST_Intersects
Synopsis
boolean ST_Intersects( raster rastA , integer nbandA , raster rastB , integer nbandB );
boolean ST_Intersects( raster rastA , raster rastB );
boolean ST_Intersects( raster rast , integer nband , geometry geommin );
boolean ST_Intersects( raster rast , geometry geommin , integer nband=NULL );
boolean ST_Intersects( geometry geommin , raster rast , integer nband=NULL );
Manuel PostGIS 3.4.0dev 754 / 870
Description
Retourne vrai si le raster rastA intersecte spatialement le raster rastB. Si le numéro de bande n’est pas spécifié (ou si NULL),
seule l’enveloppe convexe du raster est prise en compte dans le test. Si le numéro de bande est spécifié, seuls les pixels ayant une
valeur (différente de NODATA) sont pris en compte dans le test.
Note
Cette fonction utilisera tous les index qui peuvent être disponibles sur les données raster.
Warning
Changement : 2.1.0 Le fonctionnement des variantes ST_Intersects(raster, geometry) a changé pour correspondre au
fonctionnement de ST_Intersects(geometry, raster).
Exemples
st_intersects
---------------
t
Voir aussi
ST_Intersection, ST_Disjoint
10.17.7 ST_Overlaps
ST_Overlaps — Retourne true si les raster rastA et rastB intersectent mais que l’un ne contient pas complètement l’autre.
Synopsis
boolean ST_Overlaps( raster rastA , integer nbandA , raster rastB , integer nbandB );
boolean ST_Overlaps( raster rastA , raster rastB );
Description
Retourne true si le raster rastA recouvre spatialement le raster rastB. Cela signifie que rastA et rastB intersectent mais que l’un ne
contient pas complètement l’autre. Si le numéro de bande n’est pas spécifié (ou si NULL), seule l’enveloppe convexe du raster
est prise en compte dans le test. Si le numéro de bande est spécifié, seuls les pixels ayant une valeur (différente de NODATA)
sont pris en compte dans le test.
Note
Cette fonction utilisera tous les index qui peuvent être disponibles sur les données raster.
Manuel PostGIS 3.4.0dev 755 / 870
Note
Pour tester la relation spatiale entre un raster et une géométrie, utilisez ST_Polygon sur le raster, par exemple
ST_Overlaps(ST_Polygon(raster), geometry).
Disponibilité : 2.1.0
Exemples
st_overlaps
-------------
f
Voir aussi
ST_Intersects
10.17.8 ST_Touches
ST_Touches — Retourne true si les raster rastA et rastB ont au moins un point en commun mais que leurs intérieurs n’intersectent
pas.
Synopsis
boolean ST_Touches( raster rastA , integer nbandA , raster rastB , integer nbandB );
boolean ST_Touches( raster rastA , raster rastB );
Description
Retourne true si le raster rastA touche spatialement le raster rastB. Cela signifie que rastA et rastB ont au moins un point en
commun mais que leurs intérieurs n’intersectent pas. Si le numéro de bande n’est pas spécifié (ou si NULL), seule l’enveloppe
convexe du raster est prise en compte dans le test. Si le numéro de bande est spécifié, seuls les pixels ayant une valeur (différente
de NODATA) sont pris en compte dans le test.
Note
Cette fonction utilisera tous les index qui peuvent être disponibles sur les données raster.
Note
Pour tester la relation spatiale entre un raster et une géométrie, utilisez ST_Polygon sur le raster, par exemple
ST_Touches(ST_Polygon(raster), geometry).
Disponibilité : 2.1.0
Manuel PostGIS 3.4.0dev 756 / 870
Exemples
Voir aussi
ST_Intersects
10.17.9 ST_SameAlignment
ST_SameAlignment — Retourne true si les rasters ont les mêmes skew, scale, spatial ref, et offset (les pixels peuvent être placés
sur la même grille sans être coupés) et false si ce n’est pas le cas, avec une NOTICE détaillant le problème.
Synopsis
Description
Version non agrégée (variantes 1 et 2) : Retourne true si les deux rasters (fournis directement ou créés en utilisant les valeurs
pour upperleft, scale, skew et srid) ont la même échelle, le même skew, le même srid et si au moins un des quatre coins de
n’importe quel pixel d’un raster tombe sur n’importe quel coin de la grille de l’autre raster. Retourne false si ce n’est pas le cas
et un NOTICE détaillant le problème d’alignement.
Version agrégée (variante 3) : A partir d’un ensemble de rasters, retourne vrai si tous les rasters de l’ensemble sont alignés. La
fonction ST_SameAlignment() est une fonction "agrégée" dans la terminologie de PostgreSQL. Cela signifie qu’elle opère sur
des lignes de données, de la même manière que les fonctions SUM() et AVG().
Disponibilité : 2.0.0
Amélioration : 2.1.0 ajout de la variante agrégée
Exemples : Rasters
SELECT ST_SameAlignment(
ST_MakeEmptyRaster(1, 1, 0, 0, 1, 1, 0, 0),
ST_MakeEmptyRaster(1, 1, 0, 0, 1, 1, 0, 0)
) as sm;
sm
----
t
Manuel PostGIS 3.4.0dev 757 / 870
SELECT ST_SameAlignment(A.rast,b.rast)
FROM dummy_rast AS A CROSS JOIN dummy_rast AS B;
Voir aussi
10.17.10 ST_NotSameAlignmentReason
ST_NotSameAlignmentReason — Retourne un texte indiquant si les rasters sont alignés et, s’ils ne le sont pas, la raison du
problème.
Synopsis
Description
Retourne un texte indiquant si les rasters sont alignés et, s’ils ne le sont pas, la raison du problème.
Note
S’il y a plusieurs raisons pour lesquelles les rasters ne sont pas alignés, une seule raison (le premier test qui a échoué)
sera retournée.
Disponibilité : 2.1.0
Exemples
SELECT
ST_SameAlignment(
ST_MakeEmptyRaster(1, 1, 0, 0, 1, 1, 0, 0),
ST_MakeEmptyRaster(1, 1, 0, 0, 1.1, 1.1, 0, 0)
),
ST_NotSameAlignmentReason(
ST_MakeEmptyRaster(1, 1, 0, 0, 1, 1, 0, 0),
ST_MakeEmptyRaster(1, 1, 0, 0, 1.1, 1.1, 0, 0)
)
;
st_samealignment | st_notsamealignmentreason
------------------+-------------------------------------------------
f | The rasters have different scales on the X axis
(1 row)
Manuel PostGIS 3.4.0dev 758 / 870
Voir aussi
10.17.11 ST_Within
ST_Within — Retourne true si aucun point du raster rastA ne se trouve à l’extérieur du raster rastB et si au moins un point de
l’intérieur du raster rastA se trouve à l’intérieur du raster rastB.
Synopsis
boolean ST_Within( raster rastA , integer nbandA , raster rastB , integer nbandB );
boolean ST_Within( raster rastA , raster rastB );
Description
Le raster rastA est compris dans rastB si et seulement si aucun point de rastA ne se trouve à l’extérieur de rastB et si au moins
un point de l’intérieur de rastA se trouve à l’intérieur de rastB. Si le numéro de bande n’est pas spécifié (ou si NULL), seule
l’enveloppe convexe du raster est prise en compte dans le test. Si le numéro de bande est spécifié, seuls les pixels ayant une
valeur (différente de NODATA) sont pris en compte dans le test.
Note
Cet opérande utilisera tous les index qui peuvent être disponibles sur les données raster.
Note
Pour tester la relation spatiale entre un raster et une géométrie, utilisez ST_Polygon sur le raster, par exemple
ST_Within(ST_Polygon(raster), geometry) ou ST_Within(geometry, ST_Polygon(raster)).
Note
ST_Within() est l’inverse de ST_Contains(). Ainsi, ST_Within(rastA, rastB) implique ST_Contains(rastB, rastA).
Disponibilité : 2.1.0
Exemples
Voir aussi
10.17.12 ST_DWithin
ST_DWithin — Retourne true si les rasters rastA et rastB se trouvent à une distance donnée l’un de l’autre.
Synopsis
boolean ST_DWithin( raster rastA , integer nbandA , raster rastB , integer nbandB , double precision distance_of_srid );
boolean ST_DWithin( raster rastA , raster rastB , double precision distance_of_srid );
Description
Retourne true si les rasters rastA et rastB sont à la distance spécifiée l’un de l’autre. Si le numéro de bande n’est pas spécifié
(ou si NULL), seule l’enveloppe convexe du raster est prise en compte dans le test. Si le numéro de bande est spécifié, seuls les
pixels ayant une valeur (différente de NODATA) sont pris en compte dans le test.
La distance est spécifiée en unités définies par le système de référence spatiale des rasters. Pour que cette fonction ait un sens,
les rasters sources doivent avoir la même projection de coordonnées et le même SRID.
Note
Cet opérande utilisera tous les index qui peuvent être disponibles sur les données raster.
Note
Pour tester la relation spatiale entre un raster et une géométrie, utilisez ST_Polygon sur le raster, par exemple
ST_DWithin(ST_Polygon(raster), geometry).
Disponibilité : 2.1.0
Exemples
Voir aussi
ST_Within, ST_DFullyWithin
10.17.13 ST_DFullyWithin
ST_DFullyWithin — Retourne true si les rasters rastA et rastB se trouvent entièrement à une distance donnée l’un de l’autre.
Synopsis
boolean ST_DFullyWithin( raster rastA , integer nbandA , raster rastB , integer nbandB , double precision distance_of_srid );
boolean ST_DFullyWithin( raster rastA , raster rastB , double precision distance_of_srid );
Manuel PostGIS 3.4.0dev 760 / 870
Description
Retourne true si les rasters rastA et rastB sont entièrement à une distance donnée l’un de l’autre. Si le numéro de bande n’est pas
spécifié (ou si NULL), seule l’enveloppe convexe du raster est prise en compte dans le test. Si le numéro de bande est spécifié,
seuls les pixels ayant une valeur (différente de NODATA) sont pris en compte dans le test.
La distance est spécifiée en unités définies par le système de référence spatiale des rasters. Pour que cette fonction ait un sens,
les rasters sources doivent avoir la même projection de coordonnées et le même SRID.
Note
Cet opérande utilisera tous les index qui peuvent être disponibles sur les données raster.
Note
Pour tester la relation spatiale entre un raster et une géométrie, utilisez ST_Polygon sur le raster, par exemple
ST_DFullyWithin(ST_Polygon(raster), geometry).
Disponibilité : 2.1.0
Exemples
Voir aussi
ST_Within, ST_DWithin
Lorsque GDAL ouvre un fichier, il parcourt l’entièreté du répertoire du fichier pour construire un catalogue d’autres fichiers. Si
ce répertoire contient de nombreux fichiers (par exemple des milliers, des millions), l’ouverture de ce fichier devient extrêmement
lente (en particulier si ce fichier se trouve sur un lecteur réseau tel que NFS).
Pour contrôler ce comportement, GDAL fournit la variable d’environnement suivante : GDAL_DISABLE_READDIR_ON_OPEN.
Définissez GDAL_DISABLE_READDIR_ON_OPEN à TRUE pour désactiver l’analyse des répertoires.
Sous Ubuntu (et en supposant que vous utilisez les paquets PostgreSQL pour Ubuntu), GDAL_DISABLE_READDIR_ON_OPEN
peut être défini dans /etc/postgresql/POSTGRESQL_VERSION/CLUSTER_NAME/environment (où POSTGRESQL_VERSION
est la version de PostgreSQL, par ex.9.6 et CLUSTER_NAME est le nom du cluster, par exemple maindb). Vous pouvez
également définir les variables d’environnement PostGIS ici.
Manuel PostGIS 3.4.0dev 761 / 870
POSTGIS_ENABLE_OUTDB_RASTERS = 1
GDAL_DISABLE_READDIR_ON_OPEN = 'TRUE'
Le nombre maximum de fichiers ouverts autorisé par Linux et PostgreSQL est généralement prudent (typiquement 1024 fichiers
ouverts par processus), étant donné l’hypothèse que le système est utilisé par des utilisateurs humains. Pour les rasters Out-DB,
une seule requête valide peut facilement dépasser cette limite (par exemple, un jeu de données de 10 ans avec un raster pour
chaque jour contenant les températures minimales et maximales et nous voulons connaître les valeurs min et max absolues pour
un pixel dans ce jeu de données).
Le changement le plus simple à effectuer est le paramètre suivant de PostgreSQL : max_files_per_process. La valeur par défaut
est de 1000, ce qui est beaucoup trop faible pour les données raster Out-DB. Une valeur de départ sûre pourrait être 65536, mais
cela dépend vraiment de vos ensembles de données et des requêtes exécutées sur ces ensembles de données. Ce paramètre ne
peut être défini qu’au démarrage du serveur et probablement uniquement dans le fichier de configuration de PostgreSQL (par
exemple /etc/postgresql/POSTGRESQL_VERSION/CLUSTER_NAME/postgresql.conf dans les environnements Ubuntu).
...
# - Kernel Resource Usage -
La principale modification à apporter concerne les limites des fichiers ouverts du noyau Linux. Il y a deux parties à cela :
L’exemple suivant vous permet de connaître le nombre maximum de fichiers ouverts sur l’ensemble du système :
$ sysctl -a | grep fs.file-max
fs.file-max = 131072
Si la valeur retournée n’est pas assez importante, ajoutez un fichier dans /etc/sysctl.d/ comme dans l’exemple suivant :
$ echo "fs.file-max = 6145324"
>
> /etc/sysctl.d/fs.conf
$ cat /etc/sysctl.d/fs.conf
fs.file-max = 6145324
$ sysctl -p --system
* Applying /etc/sysctl.d/fs.conf ...
Manuel PostGIS 3.4.0dev 762 / 870
fs.file-max = 2097152
* Applying /etc/sysctl.conf ...
Nous devons augmenter le nombre maximum de fichiers ouverts par processus pour les processus du serveur PostgreSQL.
Pour connaître le nombre maximal de fichiers ouverts utilisé par les processus de service PostgreSQL, suivez l’exemple suivant
(assurez-vous que PostgreSQL est en cours d’exécution) :
$ ps aux | grep postgres
postgres 31713 0.0 0.4 179012 17564 pts/0 S Dec26 0:03 /home/dustymugs/devel/ ←-
postgresql/sandbox/10/usr/local/bin/postgres -D /home/dustymugs/devel/postgresql/sandbox ←-
/10/pgdata
postgres 31716 0.0 0.8 179776 33632 ? Ss Dec26 0:01 postgres: checkpointer ←-
process
postgres 31717 0.0 0.2 179144 9416 ? Ss Dec26 0:05 postgres: writer process
postgres 31718 0.0 0.2 179012 8708 ? Ss Dec26 0:06 postgres: wal writer ←-
process
postgres 31719 0.0 0.1 179568 7252 ? Ss Dec26 0:03 postgres: autovacuum ←-
launcher process
postgres 31720 0.0 0.1 34228 4124 ? Ss Dec26 0:09 postgres: stats collector ←-
process
postgres 31721 0.0 0.1 179308 6052 ? Ss Dec26 0:00 postgres: bgworker: ←-
logical replication launcher
$ cat /proc/31718/limits
Limit Soft Limit Hard Limit Units
Max cpu time unlimited unlimited seconds
Max file size unlimited unlimited bytes
Max data size unlimited unlimited bytes
Max stack size 8388608 unlimited bytes
Max core file size 0 unlimited bytes
Max resident set unlimited unlimited bytes
Max processes 15738 15738 processes
Max open files 1024 4096 files
Max locked memory 65536 65536 bytes
Max address space unlimited unlimited bytes
Max file locks unlimited unlimited locks
Max pending signals 15738 15738 signals
Max msgqueue size 819200 819200 bytes
Max nice priority 0 0
Max realtime priority 0 0
Max realtime timeout unlimited unlimited us
Dans l’exemple ci-dessus, nous avons inspecté la limite des fichiers ouverts pour le processus 31718. Peu importe le processus
PostgreSQL, n’importe lequel fera l’affaire. La réponse qui nous intéresse est Max open files.
Nous voulons augmenter Soft Limit et Hard Limit de Max open files pour qu’il soit supérieur à la valeur que nous avons spécifiée
pour le paramètre PostgreSQL max_files_per_process. Dans notre exemple, nous avons fixé max_files_per_process
à 65536.
Sous Ubuntu (et en supposant que vous utilisez les paquets PostgreSQL pour Ubuntu), la façon la plus simple de changer
les paramètres Soft Limit et Hard Limit est d’éditer /etc/init.d/postgresql (SysV) ou /lib/systemd/system/postgresql*.service
(systemd).
Commençons par le cas de SysV Ubuntu où nous ajoutons ulimit -H -n 262144 et ulimit -n 131072 à /etc/init.d/postgresql.
Manuel PostGIS 3.4.0dev 763 / 870
...
case "$1" in
start|stop|restart|reload)
if [ "$1" = "start" ]; then
create_socket_directory
fi
if [ -z " `pg_lsclusters -h`" ]; then
log_warning_msg 'No PostgreSQL clusters exist; see "man pg_createcluster"'
exit 0
fi
ulimit -H -n 262144
ulimit -n 131072
for v in $versions; do
$1 $v || EXIT=$?
done
exit ${EXIT:-0}
;;
status)
...
Passons maintenant au cas de systemd Ubuntu. Nous ajouterons LimitNOFILE=131072 à chaque fichier /lib/systemd/system/-
postgresql*.service dans la section [Service].
...
[Service]
LimitNOFILE=131072
...
[Install]
WantedBy=multi-user.target
...
Après avoir effectué les changements nécessaires à systemd, assurez-vous de recharger le démon
systemctl daemon-reload
Manuel PostGIS 3.4.0dev 764 / 870
Chapter 11
PostGIS Extras
Ce chapitre documente les fonctionnalités trouvées dans le dossier extras des fichiers tarballs et du dépôt de sources de PostGIS.
Celles-ci ne sont pas toujours packagées avec les versions binaires de PostGIS, mais sont généralement basées sur PL/pgSQL ou
des scripts shell standard qui peuvent être exécutés tels quels.
Il s’agit d’un fork du PAGC standardizer (le code original de cette partie était PAGC PostgreSQL Address Standardizer).
Address standardizer est un analyseur d’adresses qui prend une adresse en entrée et la normalise sur la base d’un ensemble de
règles stockées dans une table et des tables d’aide lex et gaz.
Le code est intégré dans une seule bibliothèque d’extension PostgreSQL appelée address_standardizer qui peut être
installée avec CREATE EXTENSION address_standardizer;. En plus de l’extension address_standardizer, une exten-
sion de données d’exemple appelée address_standardizer_data_us extensions est construite, qui contient des tables
de gaz, de lex et de règles pour les données américaines. Cette extension peut être installée via : CREATE EXTENSION
address_standardizer_data_us;
Le code de cette extension se trouve dans le extensions/address_standardizer de PostGIS et est actuellement in-
dépendant.
Pour les instructions d’installation, voir : Section 2.3.
L’analyseur fonctionne de droite à gauche en examinant d’abord les macroéléments (code postal, état/province, ville), puis les
microéléments afin de déterminer s’il s’agit d’un numéro de maison, d’une rue, d’une intersection ou d’un point de repère. Pour
l’instant, il ne recherche pas le code ou le nom du pays, mais cela pourrait être introduit à l’avenir.
Code pays On suppose qu’il s’agit des États-Unis ou du Canada sur la base des éléments suivants : code postal (États-Unis ou
Canada), état/province (États-Unis ou Canada), autre (États-Unis)
Code postal Ils sont reconnus à l’aide d’expressions régulières compatibles avec Perl. Ces expressions régulières se trouvent
actuellement dans le fichier parseaddress-api.c et sont relativement simples à modifier si nécessaire.
État/province Ils sont reconnus à l’aide d’expressions régulières compatibles avec Perl. Ces expressions régulières sont actuelle-
ment dans le fichier parseaddress-api.c mais pourraient être déplacées dans includes dans le futur pour faciliter la mainte-
nance.
Manuel PostGIS 3.4.0dev 765 / 870
11.1.2.1 stdaddr
stdaddr — Type composite composé des éléments d’une adresse. Il s’agit du type de retour de la fonction standardize_address.
Description
Type composite composé d’éléments d’une adresse. Il s’agit du type de retour pour la fonction standardize_address. Certaines
descriptions d’éléments sont empruntées à PAGC Postal Attributes.
Les numéros de jetons indiquent le numéro de référence de la sortie dans le rules table.
building est un texte (jeton numéro 0) : Fait référence au numéro ou au nom du bâtiment. Identifiants et types de bâtiments non
analysés. Généralement vide pour la plupart des adresses.
house_num est un texte (jeton numéro 1) : Il s’agit du numéro d’une rue. Exemple 75 dans 75 State Street.
predir est un texte (jeton numéro 2) : NOM DE RUE PRÉDIRECTIONNEL tel que Nord, Sud, Est, Ouest, etc.
qual est un texte (jeton numéro 3) : NOM DE RUE PRE-MODIFIER Exemple OLD dans 3715 OLD HIGHWAY 99.
pretype est un texte (jeton numéro 4) : TYPE DE PRÉFIXE DE RUE
name est un texte (jeton numéro 5) : NOM DE RUE
suftype est un texte (jeton numéro 6) : STREET POST TYPE e.g. St, Ave, Cir. Un type de rue suivant le nom de la rue racine.
Exemple STREET dans 75 State Street.
sufdir est un texte (jeton numéro 7) : STREET POST-DIRECTIONAL Un modificateur directionnel qui suit le nom de la rue.
Exemple WEST dans 3715 TENTH AVENUE WEST.
route rurale est un texte (jeton numéro 8) : RURAL ROUTE . Exemple 7 dans RR 7.
rules table — La table rules contient un ensemble de règles qui établit une correspondance entre les jetons de la séquence
d’entrée de l’adresse et la séquence de sortie normalisée. Une règle est définie comme un ensemble de jetons d’entrée suivi de -1
(terminateur) suivi d’un ensemble de jetons de sortie suivi de -1 suivi d’un nombre indiquant le type de règle suivi du classement
de la règle.
Manuel PostGIS 3.4.0dev 766 / 870
Description
La table rules doit comporter au moins les colonnes suivantes, mais vous pouvez en ajouter d’autres pour vos propres besoins.
Jetons d’entrée
Chaque règle commence par un ensemble de jetons d’entrée suivi d’un terminateur -1. Les jetons d’entrée valides extraits de
Tokens d’entrée du PAGC sont les suivants :
Jetons de saisie basés sur la forme
AMPERS (13). L’esperluette (&) est fréquemment utilisée pour abréger le mot "et".
DASH (9). Un caractère de ponctuation.
DOUBLE (21). Séquence de deux lettres. Souvent utilisé comme identifiant.
FRACT (25). Les fractions sont parfois utilisées dans les nombres civiques ou les nombres unitaires.
MÉLANGÉ (23). Chaîne alphanumérique contenant à la fois des lettres et des chiffres. Utilisée pour les identifiants.
NUMBER (0). Une chaîne de chiffres.
ORD (15). Représentations telles que First or 1st. Souvent utilisé dans les noms de rue.
ORD (18). Une seule lettre.
WORD (1). Un mot est une chaîne de lettres de longueur arbitraire. Une même lettre peut être à la fois SINGLE et WORD.
BOXH (14). Mots utilisés pour désigner les boîtes postales. Par exemple Box ou PO Box.
BUILDH (19). Mots utilisés pour désigner des bâtiments ou des ensembles de bâtiments, généralement sous forme de préfixe.
Par exemple : Tower dans Tower 7A.
BUILDT (24). Mots et abréviations utilisés pour désigner des bâtiments ou des ensembles de bâtiments, généralement sous
forme de suffixe. Par exemple : Shopping Centre.
DIRECT (22). Mots utilisés pour indiquer des directions, par exemple Nord.
MILE (20). Mots utilisés pour indiquer les adresses des points kilométriques.
ROAD (6). Mots et abréviations utilisés pour désigner les autoroutes et les routes. Par exemple : l’Interstate dans Interstate 5
RR (8). Mots et abréviations utilisés pour désigner les routes rurales. RR.
TYPE (2). Mots et abréviations utilisés pour désigner les types de rues. Par exemple : ST ou AVE.
UNITH (16). Mots et abréviations utilisés pour désigner les sous-adresses internes. Par exemple, APT ou UNIT.
Manuel PostGIS 3.4.0dev 767 / 870
PCT (26). Séquence de 3 caractères composée d’un numéro, d’une lettre et d’un chiffre. Identifie un LDU, les 3 derniers
caractères d’un code postal canadien.
Stopwords
STOPWORDS se combinent avec WORDS. Dans les règles, une chaîne de plusieurs WORDs et STOPWORDs sera représentée
par un seul mot-clé WORD.
STOPWORD (7). Un mot de faible importance lexicale, qui peut être omis dans l’analyse syntaxique. Par exemple : THE.
Jetons de sortie
Après le premier -1 (terminateur), suivent les jetons de sortie et leur ordre, suivis d’un terminateur -1. Les numéros des jetons
de sortie correspondants sont énumérés dans stdaddr. Les éléments autorisés dépendent du type de règle. Les jetons de sortie
valables pour chaque type de règle sont énumérés dans the section called “Types de règles et rangs”.
La dernière partie de la règle est le type de règle qui est désigné par l’un des éléments suivants, suivi du rang de la règle. Les
règles sont classées de 0 (la plus faible) à 17 (la plus élevée).
MACRO_C
(numéro du jeton = "0"). La classe de règles pour l’analyse des clauses MACRO telles que PLACE STATE ZIP
MACRO_C output tokens (extrait de http://www.pagcgeo.org/docs/html/pagc-12.html#--r-typ--.
POSTAL (nombre de jetons "13"). (éléments SADS "ZIP CODE" , "PLUS 4" ). Cet attribut est utilisé à la fois pour le code
postal américain et le code postal canadien.
MICRO_C
(numéro du jeton = "1"). La classe de règles pour l’analyse des clauses MICRO complètes (telles que House, street, sufdir, predir,
pretyp, suftype, qualif) (c’est-à-dire ARC_C plus CIVIC_C). Ces règles ne sont pas utilisées dans la phase de construction.
MICRO_C output tokens (extrait de http://www.pagcgeo.org/docs/html/pagc-12.html#--r-typ--.
HOUSE est un texte (jeton numéro 1) : Il s’agit du numéro d’une rue. Exemple 75 dans 75 State Street.
predir est un texte (jeton numéro 2) : NOM DE RUE PRÉDIRECTIONNEL tel que Nord, Sud, Est, Ouest, etc.
qual est un texte (jeton numéro 3) : NOM DE RUE PRE-MODIFIER Exemple OLD dans 3715 OLD HIGHWAY 99.
pretype est un texte (jeton numéro 4) : TYPE DE PRÉFIXE DE RUE
street est un texte (jeton numéro 5) : NOM DE RUE
Manuel PostGIS 3.4.0dev 768 / 870
suftype est un texte (jeton numéro 6) : STREET POST TYPE e.g. St, Ave, Cir. Un type de rue suivant le nom de la rue racine.
Exemple STREET dans 75 State Street.
sufdir est un texte (jeton numéro 7) : STREET POST-DIRECTIONAL Un modificateur directionnel qui suit le nom de la rue.
Exemple WEST dans 3715 TENTH AVENUE WEST.
ARC_C
(numéro de jeton = "2"). Classe de règles pour l’analyse des clauses MICRO, à l’exclusion de l’attribut HOUSE. En tant que
telle, elle utilise le même ensemble de jetons de sortie que MICRO_C, à l’exception du jeton HOUSE.
CIVIC_C
(numéro du jeton = "3"). La classe de règles pour l’analyse de l’attribut HOUSE.
EXTRA_C
(numéro du jeton = "4"). La classe de règles pour l’analyse des attributs EXTRA - attributs exclus du géocodage. Ces règles ne
sont pas utilisées dans la phase de construction.
EXTRA_C output tokens (extrait de http://www.pagcgeo.org/docs/html/pagc-12.html#--r-typ--.
lex table — La table lex est utilisée pour classer les entrées alphanumériques et les associer (a) à des jetons d’entrée (voir the
section called “Jetons d’entrée”) et (b) à des représentations normalisées.
Description
La table lex (abréviation de lexicon) est utilisée pour classer les entrées alphanumériques et les associer à des the section called
“Jetons d’entrée” et (b) à des représentations normalisées. Les éléments que vous trouverez dans ces tables sont ONE mappé à
stdword : 1.
La table lex comporte au moins les colonnes suivantes. Vous pouvez ajouter
gaz table — La table gaz est utilisée pour normaliser les noms de lieux et associer cette entrée avec (a) des tokens d’entrée ( Voir
the section called “Jetons d’entrée”) et (b) des représentations normalisées.
Manuel PostGIS 3.4.0dev 769 / 870
Description
La table gaz (abréviation de gazeteer) est utilisée pour normaliser les noms de lieux et associer cette entrée à des the section
called “Jetons d’entrée” et (b) à des représentations normalisées. Par exemple, si vous êtes aux États-Unis, vous pouvez charger
ces tableaux avec les noms des États et les abréviations associées.
La table gaz comporte au moins les colonnes suivantes. Vous pouvez ajouter d’autres colonnes si vous le souhaitez pour vos
propres besoins.
11.1.4.1 debug_standardize_address
debug_standardize_address — Retourne une chaîne au format json avec les jetons d’entrée et les normalisations
Synopsis
text debug_standardize_address(text lextab, text gaztab, text rultab, text micro, text macro=NULL);
Description
Ceci est une fonction pour déboguer les règles de normalisation des adresses et les correspondances lex/gaz. Cette fonction
retourne une chaîne au format json qui inclut les règles correspondantes, la correspondance des jetons d’entrées et la meilleure
adresse normalisée selon stdaddr, en utilisant les tables lex table, gaz table et rules table, ainsi qu’une adresse.
Pour une adresse sur une seule ligne, utiliser micro
Pour une adresse sur deux lignes, utiliser micro pour la première ligne standard d’une adresse postale par exemple house_num
street, et macro pour la deuxième ligne postale standard de l’adresse, par exemple city, state postal_code country.
Les éléments retournées dans le document json sont
input_tokens Pour chaque mot de l’adresse d’entrée, retourne la position du mot, la catégorisation du jeton correspondant au
mot, et le mot standard correspondant. A noter que pour certains mots d’entrée, vous pouvez obtenir plusieurs enreg-
istrements car certaines entrées peuvent correspondre à plusieurs catégories à la fois.
rules L’ensemble des règles correspondant à l’entrée, et le score de correspondance pour chacune. La première règle (avec le
plus haut score) est celle utilisée pour la normalisation
stdaddr Les éléments de l’adresse normalisée stdaddr, qui seraient retournés par standardize_address
Disponibilité : 3.4.0
Exemples
Variante 1 : prend une adresse sur une seule ligne et retourne les jetons d’entrée
SELECT it->
>'pos' AS position, it->
>'word' AS word, it->
>'stdword' AS standardized_word,
it->
>'token' AS token, it->
>'token-code' AS token_code
FROM jsonb(
debug_standardize_address('us_lex',
'us_gaz', 'us_rules', 'One Devonshire Place, PH 301, Boston, MA 02109')
) AS s, jsonb_array_elements(s->'input_tokens') AS it;
Variante 2 : Adresse en deux parties et retourne la première règle de correspondance et son score
SELECT (s->'rules'->0->
>'score')::numeric AS score, it->
>'pos' AS position,
it->
>'input-word' AS word, it->
>'input-token' AS input_token, it->
>'mapped-word' AS standardized_word,
it->
>'output-token' AS output_token
FROM jsonb(
debug_standardize_address('us_lex',
'us_gaz', 'us_rules', 'One Devonshire Place, PH 301', 'Boston, MA 02109')
) AS s, jsonb_array_elements(s->'rules'->0->'rule_tokens') AS it;
Voir aussi
11.1.4.2 parse_address
Synopsis
Description
Prend une adresse en entrée et renvoie un enregistrement composé des champs num, street, street2, address1, city, state, zip,
zipplus, country.
Disponibilité : 2.2.0
Exemples
Voir aussi
11.1.4.3 standardize_address
standardize_address — Renvoie une forme stdaddr d’une adresse d’entrée en utilisant les tables lex, gaz et rule.
Synopsis
Description
Renvoie une forme stdaddr d’une adresse d’entrée utilisant des lex table noms de tables, gaz table, et rules table noms de tables
et une adresse.
Variante 1 : prend une adresse sur une seule ligne.
Variante 2 : prend une adresse en deux parties. Une micro constituée de la première ligne standard d’une adresse postale,
par exemple house_num street, et une macro constituée de la deuxième ligne postale standard d’une adresse, par exemple
city, state postal_code country.
Disponibilité : 2.2.0
Exemples
Variante 1 : adresse sur une seule ligne. Cela ne fonctionne pas bien avec les adresses non américaines
SELECT house_num, name, suftype, city, country, state, unit FROM standardize_address(' ←-
us_lex',
'us_gaz', 'us_rules', 'One Devonshire Place, PH 301, Boston, MA ←-
02109');
Utilisation des tables fournies avec tiger geocoder. Cet exemple ne fonctionne que si vous avez installé postgis_tiger_geocoder.
SELECT * FROM standardize_address('tiger.pagc_lex',
'tiger.pagc_gaz', 'tiger.pagc_rules', 'One Devonshire Place, PH 301, Boston, MA ←-
02109-1234');
Pour faciliter la lecture, nous utiliserons l’extension hstore CREATE EXTENSION hstore ; vous devez installer
SELECT (each(hstore(p))).*
FROM standardize_address('tiger.pagc_lex', 'tiger.pagc_gaz',
'tiger.pagc_rules', 'One Devonshire Place, PH 301, Boston, MA 02109') As p;
Manuel PostGIS 3.4.0dev 773 / 870
key | value
------------+-----------------
box |
city | BOSTON
name | DEVONSHIRE
qual |
unit | # PENTHOUSE 301
extra |
state | MA
predir |
sufdir |
country | USA
pretype |
suftype | PL
building |
postcode | 02109
house_num | 1
ruralroute |
(16 rows)
key | value
------------+-----------------
box |
city | BOSTON
name | DEVONSHIRE
qual |
unit | # PENTHOUSE 301
extra |
state | MA
predir |
sufdir |
country | USA
pretype |
suftype | PL
building |
postcode | 02109
house_num | 1
ruralroute |
(16 rows)
Voir aussi
Il existe quelques autres géocodeurs open source pour PostGIS qui, contrairement au géocodeur Tiger, présentent l’avantage de
prendre en charge le géocodage multi-pays
• Nominatim utilise les données formatées de OpenStreetMap gazeteer. Il nécessite osm2pgsql pour charger les données, Post-
greSQL 8.4+ et PostGIS 1.5+ pour fonctionner. Il est présenté sous la forme d’une interface webservice et semble conçu pour
Manuel PostGIS 3.4.0dev 774 / 870
être appelé en tant que webservice. Tout comme le tiger geocoder, il possède à la fois un géocodeur et un géocodeur inversé.
La documentation n’indique pas clairement s’il dispose d’une interface SQL pure comme le géocodeur tiger, ou si une grande
partie de la logique est implémentée dans l’interface web.
• GIS Graphy utilise également PostGIS et, comme Nominatim, fonctionne avec des données OpenStreetMap (OSM). Il est livré
avec un chargeur pour charger les données OSM et, comme Nominatim, il est capable de géocoder d’autres pays que les États-
Unis. Tout comme Nominatim, il fonctionne comme un service web et s’appuie sur Java 1.5, Servlet apps, Solr. GisGraphy est
multiplateforme et dispose également d’un géocodeur inversé parmi d’autres fonctionnalités intéressantes.
11.2.1 Drop_Indexes_Generate_Script
Drop_Indexes_Generate_Script — Génère un script qui supprime toutes les clés non primaires et les index non uniques sur le
schéma tiger et le schéma spécifié par l’utilisateur. Le schéma par défaut est tiger_data si aucun schéma n’est spécifié.
Synopsis
Description
Génère un script qui supprime toutes les clés non primaires et les index non uniques sur le schéma tiger et le schéma spécifié par
l’utilisateur. Le schéma par défaut est tiger_data si aucun schéma n’est spécifié.
Ceci est utile pour minimiser le gonflement de l’index qui peut perturber le planificateur de requêtes ou prendre de l’espace
inutilement. A utiliser en combinaison avec Install_Missing_Indexes pour ajouter uniquement les index utilisés par le géocodeur.
Disponibilité : 2.0.0
Exemples
Voir aussi
Install_Missing_Indexes, Missing_Indexes_Generate_Script
11.2.2 Drop_Nation_Tables_Generate_Script
Drop_Nation_Tables_Generate_Script — Génère un script qui supprime toutes les tables du schéma spécifié qui commencent
par county_all, state_all ou code d’état suivi de county ou state.
Synopsis
Description
Génère un script qui supprime toutes les tables du schéma spécifié qui commencent par county_all, state_all ou code
d’état suivi de county ou state. Ceci est nécessaire si vous mettez à jour les données de tiger_2010 vers tiger_2011.
Disponibilité : 2.1.0
Exemples
SELECT drop_nation_tables_generate_script();
DROP TABLE tiger_data.county_all;
DROP TABLE tiger_data.county_all_lookup;
DROP TABLE tiger_data.state_all;
DROP TABLE tiger_data.ma_county;
DROP TABLE tiger_data.ma_state;
Voir aussi
Loader_Generate_Nation_Script
11.2.3 Drop_State_Tables_Generate_Script
Drop_State_Tables_Generate_Script — Génère un script qui supprime toutes les tables du schéma spécifié qui sont préfixées par
l’abréviation de l’état. La valeur par défaut du schéma est tiger_data si aucun schéma n’est spécifié.
Synopsis
Description
Génère un script qui supprime toutes les tables du schéma spécifié qui sont préfixées par l’abréviation de l’état. Le schéma par
défaut est tiger_data si aucun schéma n’est spécifié. Cette fonction est utile pour supprimer les tables d’un état juste avant
de le recharger, au cas où quelque chose se serait mal passé lors du chargement précédent.
Disponibilité : 2.0.0
Exemples
SELECT drop_state_tables_generate_script('PA');
DROP TABLE tiger_data.pa_addr;
DROP TABLE tiger_data.pa_county;
DROP TABLE tiger_data.pa_county_lookup;
DROP TABLE tiger_data.pa_cousub;
DROP TABLE tiger_data.pa_edges;
DROP TABLE tiger_data.pa_faces;
DROP TABLE tiger_data.pa_featnames;
DROP TABLE tiger_data.pa_place;
DROP TABLE tiger_data.pa_state;
DROP TABLE tiger_data.pa_zip_lookup_base;
DROP TABLE tiger_data.pa_zip_state;
DROP TABLE tiger_data.pa_zip_state_loc;
Voir aussi
Loader_Generate_Script
11.2.4 Geocode
Geocode — Prend une adresse sous forme de chaîne de caractères (ou autre adresse normalisée) et produit un ensemble de lieux
possibles comprenant une géométrie de point en NAD 83 long lat, une adresse normalisée pour chacun d’entre eux et l’évaluation.
Plus la note est basse, plus la correspondance est probable. Les résultats sont triés par ordre décroissant. Il est possible d’indiquer
en option le nombre maximum de résultats (10 par défaut) et la restriction de la région (NULL par défaut)
Synopsis
setof record geocode(varchar address, integer max_results=10, geometry restrict_region=NULL, norm_addy OUT addy, geom-
etry OUT geomout, integer OUT rating);
setof record geocode(norm_addy in_addy, integer max_results=10, geometry restrict_region=NULL, norm_addy OUT addy,
geometry OUT geomout, integer OUT rating);
Description
Prend une adresse sous forme de chaîne de caractères (ou une adresse déjà normalisée) et produit un ensemble de lieux possibles
comprenant une géométrie de point en NAD 83 long lat, une adresse_normalisée (addy) pour chacun d’entre eux, et
l’évaluation. Plus la note est basse, plus la correspondance est probable. Les résultats sont triés en fonction de la note la plus
basse. Utilise les données du tiger (edges, faces, addr), la correspondance floue de PostgreSQL (soundex, levenshtein) et les
fonctions d’interpolation de lignes de PostGIS pour interpoler l’adresse le long des bords du tigre. Plus la note est élevée, moins
le géocodage a de chances d’être correct. Par défaut, le point géocodé est décalé de 10 mètres par rapport à la ligne centrale du
côté (L/R) de la rue où se trouve l’adresse.
Amélioration : 2.0.0 pour prendre en charge les données structurées Tiger 2010 et révision de certaines logiques pour améliorer
la vitesse et la précision du géocodage, et pour décaler le point de la ligne centrale vers le côté de la rue où se trouve l’adresse. Le
nouveau paramètre max_results permet de spécifier le nombre de meilleurs résultats ou de renvoyer uniquement le meilleur
résultat.
Manuel PostGIS 3.4.0dev 777 / 870
Exemples : De base
Les exemples de temps ci-dessous ont été calculés sur une machine Windows 7 à un processeur 3.0 GHZ avec 2 Go de mémoire
vive, PostgreSQL 9.1rc1/PostGIS 2.0 avec toutes les données de MA, MN, CA, RI State Tiger.
Les correspondances exactes sont calculées plus rapidement (61 ms)
SELECT g.rating, ST_X(g.geomout) As lon, ST_Y(g.geomout) As lat,
(addy).address As stno, (addy).streetname As street,
(addy).streettypeabbrev As styp, (addy).location As city, (addy).stateabbrev As st,( ←-
addy).zip
FROM geocode('75 State Street, Boston MA 02109', 1) As g;
rating | lon | lat | stno | street | styp | city | st | zip
--------+-------------------+----------------+------+--------+------+--------+----+-------
0 | -71.0557505845646 | 42.35897920691 | 75 | State | St | Boston | MA | 02109
Même si le code postal n’est pas transmis, le géocodeur peut deviner (cela a pris environ 122-150 ms)
SELECT g.rating, ST_AsText(ST_SnapToGrid(g.geomout,0.00001)) As wktlonlat,
(addy).address As stno, (addy).streetname As street,
(addy).streettypeabbrev As styp, (addy).location As city, (addy).stateabbrev As st,( ←-
addy).zip
FROM geocode('226 Hanover Street, Boston, MA',1) As g;
rating | wktlonlat | stno | street | styp | city | st | zip
--------+---------------------------+------+---------+------+--------+----+-------
1 | POINT(-71.05528 42.36316) | 226 | Hanover | St | Boston | MA | 02113
Peut gérer les fautes d’orthographe et propose plusieurs solutions possibles avec des évaluations, mais prend plus de temps (500
ms).
SELECT g.rating, ST_AsText(ST_SnapToGrid(g.geomout,0.00001)) As wktlonlat,
(addy).address As stno, (addy).streetname As street,
(addy).streettypeabbrev As styp, (addy).location As city, (addy).stateabbrev As st,( ←-
addy).zip
FROM geocode('31 - 37 Stewart Street, Boston, MA 02116',1) As g;
rating | wktlonlat | stno | street | styp | city | st | zip
--------+---------------------------+------+--------+------+--------+----+-------
70 | POINT(-71.06466 42.35114) | 31 | Stuart | St | Boston | MA | 02116
Utilisation pour effectuer un géocodage par lots d’adresses. Le plus simple est de mettre max_results=1. Ne traiter que les
adresses qui n’ont pas encore été géocodées (qui n’ont pas d’évaluation).
CREATE TABLE addresses_to_geocode(addid serial PRIMARY KEY, address text,
lon numeric, lat numeric, new_address text, rating integer);
-- only update the first 3 addresses (323-704 ms - there are caching and shared memory ←-
effects so first geocode you do is always slower) --
-- for large numbers of addresses you don't want to update all at once
-- since the whole geocode must commit at once
-- For this example we rejoin with LEFT JOIN
-- and set to rating to -1 rating if no match
-- to ensure we don't regeocode a bad address
UPDATE addresses_to_geocode
SET (rating, new_address, lon, lat)
Manuel PostGIS 3.4.0dev 778 / 870
= ( COALESCE(g.rating,-1), pprint_addy(g.addy),
ST_X(g.geomout)::numeric(8,5), ST_Y(g.geomout)::numeric(8,5) )
FROM (SELECT addid, address
FROM addresses_to_geocode
WHERE rating IS NULL ORDER BY addid LIMIT 3) As a
LEFT JOIN LATERAL geocode(a.address,1) As g ON true
WHERE a.addid = addresses_to_geocode.addid;
result
-----
Query returned successfully: 3 rows affected, 480 ms execution time.
1 | 529 Main Street, Boston MA, 02129 | -71.07177 | 42.38357 | 529 Main St, ←-
Boston, MA 02129 | 0
2 | 77 Massachusetts Avenue, Cambridge, MA 02139 | -71.09396 | 42.35961 | 77 ←-
Massachusetts Ave, Cambridge, MA 02139 | 0
3 | 25 Wizard of Oz, Walaford, KS 99912323 | -97.92913 | 38.12717 | Willowbrook, ←-
KS 67502 | 108
(3 rows)
Time: 622.939 ms
Voir aussi
11.2.5 Geocode_Intersection
Geocode_Intersection — Prend 2 rues qui s’intersectent et un état, une ville, un code postal, et produit un ensemble d’emplacements
possibles sur la première rue croisée qui est à l’intersection, comprend également un "geomout" comme emplacement du point
en NAD 83 long lat, une adresse_normalisée (addy) pour chaque emplacement, et l’évaluation. Plus la note est basse,
plus la correspondance est probable. Les résultats sont triés en fonction de la note la plus basse. Il est possible d’indiquer le
nombre maximum de résultats, la valeur par défaut étant de 10. Utilise les données Tiger (edges, faces, addr), la correspondance
floue de PostgreSQL (soundex, levenshtein).
Manuel PostGIS 3.4.0dev 779 / 870
Synopsis
setof record geocode_intersection(text roadway1, text roadway2, text in_state, text in_city, text in_zip, integer max_results=10,
norm_addy OUT addy, geometry OUT geomout, integer OUT rating);
Description
Prend 2 rues qui s’intersectent et un état, une ville, un code postal, et produit un ensemble d’emplacements possibles sur la
première rue croisée qui est à l’intersection, comprend également une géométrie de point dans NAD 83 long lat, une adresse
normalisée pour chaque emplacement, et la cote. Plus la note est basse, plus la correspondance est probable. Les résultats sont
triés par ordre décroissant. Il est possible d’indiquer le nombre maximum de résultats, la valeur par défaut étant de 10. Retourne
adresse_normalisée (addy) pour chaque, "geomout" comme emplacement du point en nad 83 long lat, et la note. Plus
la note est basse, plus la correspondance est probable. Les résultats sont triés en fonction de la note la plus basse. Utilise les
données Tiger (bords, visages, adresses), la correspondance floue de PostgreSQL (soundex, levenshtein)
Disponibilité : 2.0.0
Exemples : De base
Les exemples de temps ci-dessous sont basés sur une machine Windows 7 à un processeur 3.0 GHZ avec 2 Go de mémoire vive,
avec PostgreSQL 9.0/PostGIS 1.5 et toutes les données de MA State Tiger chargées. Actuellement un peu lent (3000 ms)
Test sur Windows 2003 64-bit 8GB sur PostGIS 2.0 PostgreSQL 64-bit Tiger 2011 données chargées -- (41ms)
SELECT pprint_addy(addy), st_astext(geomout),rating
FROM geocode_intersection( 'Haverford St','Germania St', 'MA', 'Boston', ←-
'02130',1);
pprint_addy | st_astext | rating
----------------------------------+----------------------------+--------
98 Haverford St, Boston, MA 02130 | POINT(-71.101375 42.31376) | 0
Même si le code postal n’est pas transmis, le géocodeur peut deviner (cela a pris environ 3500 ms sur la boîte Windows 7), sur la
boîte Windows 2003 64-bit 741 ms
SELECT pprint_addy(addy), st_astext(geomout),rating
FROM geocode_intersection('Weld', 'School', 'MA', 'Boston');
pprint_addy | st_astext | rating
-------------------------------+--------------------------+--------
98 Weld Ave, Boston, MA 02119 | POINT(-71.099 42.314234) | 3
99 Weld Ave, Boston, MA 02119 | POINT(-71.099 42.314234) | 3
Voir aussi
11.2.6 Get_Geocode_Setting
Get_Geocode_Setting — Renvoie la valeur d’un paramètre spécifique stocké dans la table tiger.geocode_settings.
Synopsis
Description
Renvoie la valeur d’un paramètre spécifique stocké dans la table tiger.geocode_settings. Les paramètres permettent d’activer le
débogage des fonctions. Plus tard, il sera possible de contrôler la notation à l’aide des paramètres. La liste actuelle des paramètres
est la suivante :
name | setting | unit | category | ←-
short_desc
--------------------------------+---------+---------+-----------+------------------------------------
Modifié : 2.2.0 : les paramètres par défaut sont désormais conservés dans une table appelée geocode_settings_default. Les
paramètres personnalisés sont dans geocode_settings et ne contiennent que ceux qui ont été définis par l’utilisateur.
Disponibilité : 2.1.0
Voir aussi
Set_Geocode_Setting
11.2.7 Get_Tract
Get_Tract — Renvoie le secteur de recensement ou le champ de la table des secteurs où se trouve la géométrie. Par défaut, le
nom court du secteur est renvoyé.
Synopsis
Description
Une géométrie donnée renvoie la localisation du secteur de recensement de cette géométrie. Le NAD 83 long lat est supposé si
aucun système de référence spatiale n’est spécifié.
Note
Cette fonction utilise le recensement tract qui n’est pas chargé par défaut. Si vous avez déjà chargé votre table
d’état, vous pouvez charger tract ainsi que bg, et tabblock en utilisant le script Loader_Generate_Census_Script.
Si vous n’avez pas encore chargé les données de votre État et que vous souhaitez charger ces tableaux supplémen-
taires, procédez comme suit
UPDATE tiger.loader_lookuptables SET load = true WHERE load = false AND lookup_name ←-
IN('tract', 'bg', 'tabblock');
Disponibilité : 2.0.0
Exemples : De base
Voir aussi
Geocode >
11.2.8 Install_Missing_Indexes
Install_Missing_Indexes — Recherche toutes les tables dont les colonnes clés sont utilisées dans les jointures du géocodeur et
les conditions de filtrage qui n’ont pas d’index utilisés sur ces colonnes et les ajoute.
Synopsis
boolean Install_Missing_Indexes();
Description
Recherche toutes les tables dans les schémas tiger et tiger_data avec des colonnes clés utilisées dans les jointures et
les filtres du géocodeur qui n’ont pas d’index sur ces colonnes et produira le DDL SQL pour définir l’index pour ces tables
et exécutera ensuite le script généré. Il s’agit d’une fonction d’aide qui ajoute de nouveaux index nécessaires pour rendre les
requêtes plus rapides et qui peuvent avoir été manquants au cours du processus de chargement. Cette fonction accompagne
Missing_Indexes_Generate_Script qui, en plus de générer le script de création d’index, l’exécute également. Elle est appelée
dans le cadre du script de mise à niveau update_geocode.sql.
Disponibilité : 2.0.0
Manuel PostGIS 3.4.0dev 782 / 870
Exemples
SELECT install_missing_indexes();
install_missing_indexes
-------------------------
t
Voir aussi
Loader_Generate_Script, Missing_Indexes_Generate_Script
11.2.9 Loader_Generate_Census_Script
Loader_Generate_Census_Script — Génère un script shell pour la plate-forme spécifiée et les états spécifiés qui téléchargera les
tables de données Tiger census state tract, bg et tabblocks, les structurera et les chargera dans le schéma tiger_data. Chaque
script d’état est renvoyé sous la forme d’un enregistrement distinct.
Synopsis
Description
Génère un script shell pour la plate-forme spécifiée et les états spécifiés, qui téléchargera les données de recensement Tiger
tract, les tables de données bg et tabblocks, les étapes et le chargement dans le schéma tiger_data. Chaque script
d’état est renvoyé sous la forme d’un enregistrement distinct.
Il utilise unzip sous Linux (7-zip sous Windows par défaut) et wget pour effectuer le téléchargement. Il utilise Section 4.7.2 pour
charger les données. Notez que la plus petite unité qu’il traite est un état entier. Il ne traitera que les fichiers des dossiers staging
et temp.
Il utilise les tables de contrôle suivantes pour contrôler le processus et les différentes variations syntaxiques de l’interpréteur de
commandes du système d’exploitation.
1. loader_variables garde la trace de diverses variables telles que le site de recensement, l’année, les données et les
schémas d’étape
2. loader_platform profils des différentes plates-formes et de l’emplacement des différents exécutables. Livré avec
windows et linux. D’autres peuvent être ajoutés.
3. loader_lookuptables chaque enregistrement définit un type de table (state, county), s’il faut y traiter les enreg-
istrements et comment les charger. Définit les étapes d’importation des données, de structuration des données, d’ajout et
de suppression de colonnes, d’index et de contraintes pour chaque table. Chaque table est préfixée par l’état et hérite d’une
table du schéma tigre. Par exemple, crée tiger_data.ma_faces qui hérite de tiger.faces
Disponibilité : 2.0.0
Note
Loader_Generate_Script inclut cette logique, mais si vous avez installé tiger geocoder avant PostGIS 2.0.0 alpha5,
vous devrez l’exécuter sur les états que vous avez déjà faits pour obtenir ces tables supplémentaires.
Manuel PostGIS 3.4.0dev 783 / 870
Exemples
Générer un script pour charger des données pour des états sélectionnés dans le format d’un script shell Windows.
SELECT loader_generate_census_script(ARRAY['MA'], 'windows');
-- result --
set STATEDIR="\gisdata\www2.census.gov\geo\pvs\tiger2010st\25_Massachusetts"
set TMPDIR=\gisdata\temp\
set UNZIPTOOL="C:\Program Files\7-Zip\7z.exe"
set WGETTOOL="C:\wget\wget.exe"
set PGBIN=C:\projects\pg\pg91win\bin\
set PGPORT=5432
set PGHOST=localhost
set PGUSER=postgres
set PGPASSWORD=yourpasswordhere
set PGDATABASE=tiger_postgis20
set PSQL="%PGBIN%psql"
set SHP2PGSQL="%PGBIN%shp2pgsql"
cd \gisdata
Générer le script sh
STATEDIR="/gisdata/www2.census.gov/geo/pvs/tiger2010st/25_Massachusetts"
TMPDIR="/gisdata/temp/"
UNZIPTOOL=unzip
WGETTOOL="/usr/bin/wget"
export PGBIN=/usr/pgsql-9.0/bin
export PGPORT=5432
export PGHOST=localhost
export PGUSER=postgres
export PGPASSWORD=yourpasswordhere
export PGDATABASE=geocoder
PSQL=${PGBIN}/psql
SHP2PGSQL=${PGBIN}/shp2pgsql
cd /gisdata
cd $STATEDIR
for z in *.zip; do $UNZIPTOOL -o -d $TMPDIR $z; done
:
:
Voir aussi
Loader_Generate_Script
11.2.10 Loader_Generate_Script
Loader_Generate_Script — Génère un script shell pour la plateforme spécifiée et les états spécifiés qui téléchargera les données
Tiger, les structurera et les chargera dans le schéma tiger_data. Chaque script d’état est renvoyé sous la forme d’un en-
registrement séparé. La dernière version prend en charge les modifications structurelles de Tiger 2010 et charge également les
tableaux de secteurs de recensement, de groupes d’îlots et d’îlots.
Synopsis
Description
Génère un script shell pour la plateforme spécifiée et les états spécifiés qui téléchargera les données Tiger, les structurera et les
chargera dans le schéma tiger_data. Chaque script d’état est renvoyé sous la forme d’un enregistrement séparé.
Il utilise unzip sous Linux (7-zip sous Windows par défaut) et wget pour effectuer le téléchargement. Il utilise Section 4.7.2 pour
charger les données. Notez que la plus petite unité qu’il traite est un état entier, mais vous pouvez l’écraser en téléchargeant les
fichiers vous-même. Il ne traitera que les fichiers des dossiers staging et temp.
Il utilise les tables de contrôle suivantes pour contrôler le processus et les différentes variations syntaxiques de l’interpréteur de
commandes du système d’exploitation.
1. loader_variables garde la trace de diverses variables telles que le site de recensement, l’année, les données et les
schémas d’étape
2. loader_platform profils des différentes plates-formes et de l’emplacement des différents exécutables. Livré avec
windows et linux. D’autres peuvent être ajoutés.
3. loader_lookuptables chaque enregistrement définit un type de table (state, county), s’il faut y traiter les enreg-
istrements et comment les charger. Définit les étapes d’importation des données, de structuration des données, d’ajout et
de suppression de colonnes, d’index et de contraintes pour chaque table. Chaque table est préfixée par l’état et hérite d’une
table du schéma tigre. Par exemple, crée tiger_data.ma_faces qui hérite de tiger.faces
Disponibilité : 2.0.0 pour prendre en charge les données structurées de Tiger 2010 et charger les tableaux de secteurs de recense-
ment (tract), de groupes d’îlots (bg) et d’îlots (tabblocks).
Note
Si vous utilisez pgAdmin 3, sachez que par défaut pgAdmin 3 tronque les textes longs. Pour corriger cela, modifiez
Fichier -> Options -> Outil de requête -> Editeur de requête -> Caractères max. par colonne à plus de 50000 carac-
tères.
Manuel PostGIS 3.4.0dev 785 / 870
Exemples
En utilisant psql où gistest est votre base de données et /gisdata/data_load.sh est le fichier à créer avec les commandes
shell à exécuter.
psql -U postgres -h localhost -d gistest -A -t \
-c "SELECT Loader_Generate_Script(ARRAY['MA'], 'gistest')"
> /gisdata/data_load.sh;
Générer un script pour charger des données pour 2 états dans le format d’un script shell Windows.
SELECT loader_generate_script(ARRAY['MA','RI'], 'windows') AS result;
-- result --
set TMPDIR=\gisdata\temp\
set UNZIPTOOL="C:\Program Files\7-Zip\7z.exe"
set WGETTOOL="C:\wget\wget.exe"
set PGBIN=C:\Program Files\PostgreSQL\9.4\bin\
set PGPORT=5432
set PGHOST=localhost
set PGUSER=postgres
set PGPASSWORD=yourpasswordhere
set PGDATABASE=geocoder
set PSQL="%PGBIN%psql"
set SHP2PGSQL="%PGBIN%shp2pgsql"
cd \gisdata
cd \gisdata
%WGETTOOL% ftp://ftp2.census.gov/geo/tiger/TIGER2015/PLACE/tl_*_25_* --no-parent --relative ←-
--recursive --level=2 --accept=zip --mirror --reject=html
cd \gisdata/ftp2.census.gov/geo/tiger/TIGER2015/PLACE
:
:
Générer le script sh
SELECT loader_generate_script(ARRAY['MA','RI'], 'sh') AS result;
-- result --
TMPDIR="/gisdata/temp/"
UNZIPTOOL=unzip
WGETTOOL="/usr/bin/wget"
export PGBIN=/usr/lib/postgresql/9.4/bin
-- variables used by psql: https://www.postgresql.org/docs/current/static/libpq-envars.html
export PGPORT=5432
export PGHOST=localhost
export PGUSER=postgres
export PGPASSWORD=yourpasswordhere
export PGDATABASE=geocoder
PSQL=${PGBIN}/psql
SHP2PGSQL=${PGBIN}/shp2pgsql
cd /gisdata
cd /gisdata
wget ftp://ftp2.census.gov/geo/tiger/TIGER2015/PLACE/tl_*_25_* --no-parent --relative -- ←-
recursive --level=2 --accept=zip --mirror --reject=html
cd /gisdata/ftp2.census.gov/geo/tiger/TIGER2015/PLACE
rm -f ${TMPDIR}/*.*
:
:
Voir aussi
11.2.11 Loader_Generate_Nation_Script
Loader_Generate_Nation_Script — Génère un script shell pour la plate-forme spécifiée qui charge les données dans les tables
county et state.
Synopsis
Description
Génère un script shell pour la plate-forme spécifiée qui charge les tables county_all, county_all_lookup, state_all
dans le schéma tiger_data. Elles héritent respectivement des tables county, county_lookup, state dans le schéma
tiger.
Il utilise unzip sous Linux (7-zip sous Windows par défaut) et wget pour effectuer le téléchargement. Il utilise Section 4.7.2 pour
charger les données.
Il utilise les tables de contrôle suivantes tiger.loader_platform, tiger.loader_variables et tiger.loader_lookup
pour contrôler le processus et les différentes variations syntaxiques de l’interpréteur de commandes du système d’exploitation.
1. loader_variables garde la trace de diverses variables telles que le site de recensement, l’année, les données et les
schémas d’étape
2. loader_platform profils des différentes plates-formes et de l’emplacement des différents exécutables. Fourni avec
windows et linux/unix. D’autres peuvent être ajoutés.
3. loader_lookuptables chaque enregistrement définit un type de table (state, county), s’il faut y traiter les enreg-
istrements et comment les charger. Définit les étapes d’importation des données, de structuration des données, d’ajout et
de suppression de colonnes, d’index et de contraintes pour chaque table. Chaque table est préfixée par l’état et hérite d’une
table du schéma tigre. Par exemple, crée tiger_data.ma_faces qui hérite de tiger.faces
Amélioré : 2.4.1 L’étape de chargement de la zone de tabulation du code postal 5 (zcta5) a été corrigée et, lorsqu’elle est activée,
les données zcta5 sont chargées sous la forme d’une table unique appelée zcta5_all dans le cadre du chargement du script de la
nation.
Disponibilité : 2.1.0
Note
Si vous souhaitez que la zone de tabulation du code postal 5 (zcta5) soit incluse dans le chargement de votre script
nation, procédez comme suit :
UPDATE tiger.loader_lookuptables SET load = true WHERE table_name = 'zcta510';
Note
Si vous utilisiez la version tiger_2010 et que vous souhaitez recharger en tant qu’état avec des données
tiger plus récentes, vous devrez, pour le tout premier chargement, générer et exécuter des instructions de dépôt
Drop_Nation_Tables_Generate_Script avant d’exécuter ce script.
Exemples
Générer un script pour charger les données pour les systèmes Linux/Unix.
SELECT loader_generate_nation_script('sh');
Manuel PostGIS 3.4.0dev 787 / 870
Voir aussi
Loader_Generate_Script, Drop_Nation_Tables_Generate_Script
11.2.12 Missing_Indexes_Generate_Script
Missing_Indexes_Generate_Script — Recherche toutes les tables dont les colonnes clés sont utilisées dans les jointures du
géocodeur et qui n’ont pas d’index sur ces colonnes, et génère le DDL SQL permettant de définir l’index pour ces tables.
Synopsis
text Missing_Indexes_Generate_Script();
Description
Trouve toutes les tables dans les schémas tiger et tiger_data avec des colonnes clés utilisées dans les jointures du
géocodeur qui n’ont pas d’index sur ces colonnes et produira le DDL SQL pour définir l’index pour ces tables. Il s’agit d’une
fonction d’aide qui ajoute de nouveaux index nécessaires pour rendre les requêtes plus rapides et qui peuvent avoir été manquants
au cours du processus de chargement. Au fur et à mesure de l’amélioration du géocodeur, cette fonction sera mise à jour pour
prendre en compte les nouveaux index utilisés. Si cette fonction ne produit rien, cela signifie que toutes vos tables ont ce que
nous pensons être les index clés déjà en place.
Disponibilité : 2.0.0
Exemples
SELECT missing_indexes_generate_script();
-- output: This was run on a database that was created before many corrections were made to ←-
the loading script ---
CREATE INDEX idx_tiger_county_countyfp ON tiger.county USING btree(countyfp);
CREATE INDEX idx_tiger_cousub_countyfp ON tiger.cousub USING btree(countyfp);
CREATE INDEX idx_tiger_edges_tfidr ON tiger.edges USING btree(tfidr);
CREATE INDEX idx_tiger_edges_tfidl ON tiger.edges USING btree(tfidl);
CREATE INDEX idx_tiger_zip_lookup_all_zip ON tiger.zip_lookup_all USING btree(zip);
CREATE INDEX idx_tiger_data_ma_county_countyfp ON tiger_data.ma_county USING btree(countyfp ←-
);
CREATE INDEX idx_tiger_data_ma_cousub_countyfp ON tiger_data.ma_cousub USING btree(countyfp ←-
);
CREATE INDEX idx_tiger_data_ma_edges_countyfp ON tiger_data.ma_edges USING btree(countyfp);
CREATE INDEX idx_tiger_data_ma_faces_countyfp ON tiger_data.ma_faces USING btree(countyfp);
Voir aussi
Loader_Generate_Script, Install_Missing_Indexes
11.2.13 Normalize_Address
Normalize_Address — Étant donné une adresse textuelle, cette fonction renvoie un type composite norm_addy qui contient le
suffixe de la route, le préfixe et le type normalisé, la rue, le nom de la rue, etc. divisés en champs distincts. Cette fonction fonc-
tionne uniquement avec les données de recherche fournies avec le géocodeur tiger (pas besoin pour les données de recensement
tiger).
Manuel PostGIS 3.4.0dev 788 / 870
Synopsis
Description
Étant donné une adresse textuelle, cette fonction renvoie un type composite norm_addy qui contient le suffixe de la route, le
préfixe et le type normalisé, la rue, le nom de la rue, etc. divisés en champs distincts. Il s’agit de la première étape du processus
de géocodage visant à normaliser toutes les adresses sous forme postale. Aucune autre donnée n’est nécessaire en dehors de
celles fournies avec le géocodeur.
Cette fonction utilise simplement les différentes tables de recherche direction/état/suffixe préchargées avec le géocodeur tiger et
situées dans le schéma tiger, de sorte qu’il n’est pas nécessaire de télécharger les données de recensement tiger ou d’autres
données supplémentaires pour l’utiliser. Il se peut que vous ayez besoin d’ajouter des abréviations ou des noms alternatifs aux
différentes tables de recherche du schéma tiger.
Il utilise diverses tables de contrôle situées dans le schéma tiger pour normaliser l’adresse d’entrée.
Les champs de l’objet de type norm_addy renvoyés par cette fonction dans cet ordre où () indique un champ requis par le
géocodeur, [] indique un champ optionnel :
(address) [predirAbbrev] (streetName) [streetTypeAbbrev] [postdirAbbrev] [internal] [location] [stateAbbrev] [zip] [parsed]
[zip4] [address_alphanumeric]
Amélioré : 2.4.0 L’objet norm_addy comprend des champs supplémentaires zip4 et address_alphanumeric.
3. streetName varchar
4. streetTypeAbbrev varchar version abrégée du type de rue : par exemple St, Ave, Cir. Ceux-ci sont contrôlés à l’aide
de la table street_type_lookup.
5. postdirAbbrev varchar abrégé directionnel suffixe de la route N, S, E, W etc. Elles sont contrôlées à l’aide de la table
direction_lookup.
12. address_alphanumeric Numéro de rue complet, même s’il contient des caractères alpha comme 17R. Il est préférable
d’utiliser la fonction Pagc_Normalize_Address. Disponibilité : PostGIS 2.4.0.
Manuel PostGIS 3.4.0dev 789 / 870
Exemples
Sortie des champs de sélection. Utilisez Pprint_Addy si vous souhaitez une sortie textuelle.
SELECT address As orig, (g.na).streetname, (g.na).streettypeabbrev
FROM (SELECT address, normalize_address(address) As na
FROM addresses_to_geocode) As g;
Voir aussi
Geocode, Pprint_Addy
11.2.14 Pagc_Normalize_Address
Pagc_Normalize_Address — Étant donné une adresse textuelle, cette fonction renvoie un type composite norm_addy qui
contient le suffixe de la route, le préfixe et le type normalisé, la rue, le nom de la rue, etc. divisés en champs distincts. Cette
fonction fonctionne uniquement avec les données de recherche fournies avec le géocodeur tiger (pas besoin pour les données de
recensement tiger). Nécessite l’extension address_standardizer.
Synopsis
Description
Étant donné une adresse textuelle, cette fonction renvoie un type composite norm_addy qui contient le suffixe de la route, le
préfixe et le type normalisé, la rue, le nom de la rue, etc. divisés en champs distincts. Il s’agit de la première étape du processus
de géocodage visant à normaliser toutes les adresses sous forme postale. Aucune autre donnée n’est nécessaire en dehors de
celles fournies avec le géocodeur.
Cette fonction utilise simplement les diverses tables de recherche pagc_* préchargées avec le géocodeur tiger et situées dans
le schéma tiger, de sorte qu’il n’est pas nécessaire de télécharger les données de recensement tiger ou d’autres données
supplémentaires pour l’utiliser. Il se peut que vous ayez besoin d’ajouter des abréviations ou des noms alternatifs aux différentes
tables de recherche du schéma tiger.
Il utilise diverses tables de contrôle situées dans le schéma tiger pour normaliser l’adresse d’entrée.
Les champs de l’objet de type norm_addy renvoyés par cette fonction dans cet ordre où () indique un champ requis par le
géocodeur, [] indique un champ optionnel :
Il existe de légères variations dans la casse et le formatage des Normalize_Address.
Disponibilité : 2.1.0
Le standardaddr natif de l’extension address_standardizer est pour l’instant un peu plus riche que norm_addy puisqu’il est conçu
pour prendre en charge les adresses internationales (y compris le pays). Les champs équivalents au standardaddr sont :
house_num,predir, name, suftype, sufdir, unit, city, state, postcode
Amélioré : 2.4.0 L’objet norm_addy comprend des champs supplémentaires zip4 et address_alphanumeric.
Exemples
Appel par lots. Il y a actuellement des problèmes de vitesse avec la façon dont postgis_tiger_geocoder mobilise l’address_standardizer.
Ces problèmes seront résolus dans les prochaines éditions. Pour les contourner, si vous avez besoin de rapidité pour le géocodage
par lots pour appeler la génération d’un normaddy en mode batch, nous vous encourageons à appeler directement la fonction ad-
dress_standardizer standardize_address comme indiqué ci-dessous qui est un exercice similaire à ce que nous avons fait dans
Normalize_Address qui utilise les données créées dans Geocode.
WITH g AS (SELECT address, ROW((sa).house_num, (sa).predir, (sa).name
, (sa).suftype, (sa).sufdir, (sa).unit , (sa).city, (sa).state, (sa).postcode, true):: ←-
norm_addy As na
FROM (SELECT address, standardize_address('tiger.pagc_lex'
, 'tiger.pagc_gaz'
Manuel PostGIS 3.4.0dev 791 / 870
, 'tiger.pagc_rules', address) As sa
FROM addresses_to_geocode) As g)
SELECT address As orig, (g.na).streetname, (g.na).streettypeabbrev
FROM g;
Voir aussi
Normalize_Address, Geocode
11.2.15 Pprint_Addy
Pprint_Addy — Étant donné un objet de type composite norm_addy, renvoie une jolie représentation de celui-ci. Généralement
utilisé en conjonction avec normalize_address.
Synopsis
Description
Étant donné un objet de type composite norm_addy, il renvoie une jolie représentation de cet objet. Aucune autre donnée n’est
nécessaire en dehors de celles fournies avec le géocodeur.
Généralement utilisé en conjonction avec Normalize_Address.
Exemples
orig | pretty_address
-----------------------------------------------------+------------------------------------------- ←-
529 Main Street, Boston MA, 02129 | 529 Main St, Boston MA, 02129
77 Massachusetts Avenue, Cambridge, MA 02139 | 77 Massachusetts Ave, Cambridge, MA ←-
02139
28 Capen Street, Medford, MA | 28 Capen St, Medford, MA
Manuel PostGIS 3.4.0dev 792 / 870
124 Mount Auburn St, Cambridge, Massachusetts 02138 | 124 Mount Auburn St, Cambridge, MA ←-
02138
950 Main Street, Worcester, MA 01610 | 950 Main St, Worcester, MA 01610
Voir aussi
Normalize_Address
11.2.16 Reverse_Geocode
Reverse_Geocode — Prend un point géométrique dans un système spatial connu et renvoie un enregistrement contenant un
tableau d’adresses théoriquement possibles et un tableau de rues transversales. Si include_strnum_range = true, la plage de rues
est incluse dans les rues transversales.
Synopsis
record Reverse_Geocode(geometry pt, boolean include_strnum_range=false, geometry[] OUT intpt, norm_addy[] OUT addy,
varchar[] OUT street);
Description
Prend un point géométrique dans un réf spatial connu et renvoie un enregistrement contenant un tableau d’adresses théorique-
ment possibles et un tableau de rues transversales. Si include_strnum_range = true, la plage de rues est incluse dans les rues
transversales. include_strnum_range prend par défaut la valeur false s’il n’est pas fourni. Les adresses sont triées en fonction de
la route dont le point est le plus proche, de sorte que la première adresse est très probablement la bonne.
Pourquoi parle-t-on d’adresses théoriques plutôt que d’adresses réelles ? Les données Tiger ne contiennent pas d’adresses réelles,
mais seulement des tranches de rues. L’adresse théorique est donc une adresse interpolée sur la base de l’étendue des rues. Par
exemple, l’interpolation d’une de mes adresses donne 26 Court St. et 26 Court Sq. alors que le 26 Court Sq. n’existe pas. Cela
s’explique par le fait qu’un point peut se trouver à l’angle de deux rues et que la logique interpole donc le long des deux rues.
La logique suppose également que les adresses sont également espacées le long d’une rue, ce qui est bien sûr faux puisqu’un
bâtiment municipal peut occuper une bonne partie de la rue et que le reste des bâtiments est regroupé à l’extrémité.
Note : Hmm cette fonction repose sur les données Tiger. Si vous n’avez pas chargé de données couvrant la région de ce point,
vous obtiendrez un enregistrement rempli de NULLS.
Les éléments renvoyés de l’enregistrement sont les suivants :
1. intpt est un tableau de points : Il s’agit des points de la ligne centrale de la rue les plus proches du point d’entrée. Il y a
autant de points que d’adresses.
2. addy est un tableau de norm_addy (adresses normalisées) : Il s’agit d’un tableau d’adresses possibles correspondant au
point d’entrée. La première adresse du tableau est la plus probable. En général, il ne devrait y en avoir qu’une seule, sauf
dans le cas où un point se trouve à l’angle de deux ou trois rues, ou si le point se trouve quelque part sur la route et non sur
le côté.
3. street un tableau de varchar : Il s’agit des rues transversales (ou de la rue) (rues qui croisent ou sont la rue sur laquelle
le point est projeté).
Amélioration : 2.4.1 si le jeu de données optionnel zcta5 est chargé, la fonction reverse_geocode peut résoudre l’état et le code
postal même si les données spécifiques à l’état ne sont pas chargées. Voir Loader_Generate_Nation_Script pour plus de détails
sur le chargement des données zcta5.
Disponibilité : 2.0.0
Manuel PostGIS 3.4.0dev 793 / 870
Exemples
Exemple d’un point situé à l’angle de deux rues, mais le plus proche d’une seule. C’est l’emplacement approximatif du MIT :
77 Massachusetts Ave, Cambridge, MA 02139 Notez que bien que nous n’ayons pas 3 rues, PostgreSQL retournera simplement
null pour les entrées supérieures à notre limite supérieure, ce qui permet de l’utiliser en toute sécurité. Cela inclut les plages de
rues
SELECT pprint_addy(r.addy[1]) As st1, pprint_addy(r.addy[2]) As st2, pprint_addy(r.addy[3]) ←-
As st3,
array_to_string(r.street, ',') As cross_streets
FROM reverse_geocode(ST_GeomFromText('POINT(-71.093902 42.359446)',4269),true) As r ←-
;
result
------
st1 | st2 | st3 | cross_streets
-------------------------------------------+-----+-----+---------------------------------------------
Ici, nous avons choisi de ne pas inclure les plages d’adresses pour les rues transversales et nous avons choisi un emplacement
vraiment très proche d’un coin de deux rues, qui pourrait donc être connu sous deux adresses différentes.
SELECT pprint_addy(r.addy[1]) As st1, pprint_addy(r.addy[2]) As st2,
pprint_addy(r.addy[3]) As st3, array_to_string(r.street, ',') As cross_str
FROM reverse_geocode(ST_GeomFromText('POINT(-71.06941 42.34225)',4269)) As r;
result
--------
st1 | st2 | st3 | cross_str
---------------------------------+---------------------------------+-----+------------------------ ←
Pour celui-ci, nous réutilisons notre exemple géocodé de Geocode et nous ne voulons que l’adresse principale et au plus deux
rues transversales.
SELECT actual_addr, lon, lat, pprint_addy((rg).addy[1]) As int_addr1,
(rg).street[1] As cross1, (rg).street[2] As cross2
FROM (SELECT address As actual_addr, lon, lat,
reverse_geocode( ST_SetSRID(ST_Point(lon,lat),4326) ) As rg
FROM addresses_to_geocode WHERE rating
> -1) As foo;
529 Main Street, Boston MA, 02129 | -71.07181 | 42.38359 | 527 Main St, ←-
Boston, MA 02129 | Medford St |
77 Massachusetts Avenue, Cambridge, MA 02139 | -71.09428 | 42.35988 | 77 ←-
Massachusetts Ave, Cambridge, MA 02139 | Vassar St |
26 Capen Street, Medford, MA | -71.12377 | 42.41101 | 9 Edison Ave, ←-
Medford, MA 02155 | Capen St | Tesla Ave
124 Mount Auburn St, Cambridge, Massachusetts 02138 | -71.12304 | 42.37328 | 3 University ←-
Rd, Cambridge, MA 02138 | Mount Auburn St |
950 Main Street, Worcester, MA 01610 | -71.82368 | 42.24956 | 3 Maywood St, ←-
Worcester, MA 01603 | Main St | Maywood Pl
Manuel PostGIS 3.4.0dev 794 / 870
Voir aussi
11.2.17 Topology_Load_Tiger
Topology_Load_Tiger — Charge une région définie de données tiger dans une topologie PostGIS et transforme les données tiger
en référence spatiale de la topologie et en s’adaptant à la tolérance de précision de la topologie.
Synopsis
Description
Charge une région définie de données tigrées dans une topologie PostGIS. Les faces, les nœuds et les arêtes sont transformés
dans le système de référence spatiale de la topologie cible et les points sont adaptés à la tolérance de la topologie cible. Les faces,
les nœuds et les arêtes créés conservent les mêmes identifiants que les faces, les nœuds et les arêtes des données Tiger d’origine,
de sorte que les ensembles de données puissent à l’avenir être plus facilement réconciliés avec les données Tiger. Renvoie un
résumé des détails du processus.
Cela peut s’avérer utile, par exemple, pour les données de redécoupage, lorsque les polygones nouvellement formés doivent
suivre les lignes centrales des rues et que les polygones résultants ne doivent pas se chevaucher.
Note
Cette fonction repose sur les données Tiger ainsi que sur l’installation du module topologique PostGIS. Pour plus
d’informations, voir Chapter 8 et Section 2.2.3. Si vous n’avez pas chargé de données couvrant la région concernée,
aucun enregistrement topologique ne sera créé. Cette fonction échouera également si vous n’avez pas créé de topolo-
gie à l’aide des fonctions de topologie.
Note
La plupart des erreurs de validation de la topologie sont dues à des problèmes de tolérance : après la transformation,
les points des arêtes ne s’alignent pas tout à fait ou ne se chevauchent pas. Pour remédier à cette situation, vous
pouvez augmenter ou réduire la précision si vous obtenez des échecs de validation de la topologie.
Arguments requis :
1. topo_name Le nom d’une topologie PostGIS existante dans laquelle charger les données.
2. region_type Type de région délimitée. Actuellement, seuls place et county sont pris en charge. Il est prévu d’en
avoir plusieurs autres. Il s’agit de la table à consulter pour définir les limites de la région, par exemple tiger.place,
tiger.county
3. region_id C’est ce que TIGER appelle le geoid. Il s’agit de l’identifiant unique de la région dans la table. Pour la table
place, il s’agit de la colonne plcidfp dans tiger.place. Pour la table county, il s’agit de la colonne cntyidfp
dans tiger.county
Disponibilité : 2.0.0
Manuel PostGIS 3.4.0dev 795 / 870
Créez une topologie pour Boston, Massachusetts dans Mass State Plane Feet (2249) avec une tolérance de 0,25 pied, puis chargez
dans Boston city tiger faces, edges, nodes.
SELECT topology.CreateTopology('topo_boston', 2249, 0.25);
createtopology
--------------
15
-- 60,902 ms ~ 1 minute on windows 7 desktop running 9.1 (with 5 states tiger data loaded)
SELECT tiger.topology_load_tiger('topo_boston', 'place', '2507000');
-- topology_loader_tiger --
29722 edges holding in temporary. 11108 faces added. 1875 edges of faces added. 20576 ←-
nodes added.
19962 nodes contained in a face. 0 edge start end corrected. 31597 edges added.
-- 41 ms --
SELECT topology.TopologySummary('topo_boston');
-- topologysummary--
Topology topo_boston (15), SRID 2249, precision 0.25
20576 nodes, 31597 edges, 11109 faces, 0 topogeoms in 0 layers
Créez une topologie pour Suffolk, Mass State Plane Meters (26986) avec une tolérance de 0,25 mètre, puis chargez dans le
schéma tiger du comté de Suffolk les faces, edges, nodes.
SELECT topology.CreateTopology('topo_suffolk', 26986, 0.25);
-- this took 56,275 ms ~ 1 minute on Windows 7 32-bit with 5 states of tiger loaded
-- must have been warmed up after loading boston
SELECT tiger.topology_load_tiger('topo_suffolk', 'county', '25025');
-- topology_loader_tiger --
36003 edges holding in temporary. 13518 faces added. 2172 edges of faces added.
24761 nodes added. 24075 nodes contained in a face. 0 edge start end corrected. 38175 ←-
edges added.
-- 31 ms --
SELECT topology.TopologySummary('topo_suffolk');
-- topologysummary--
Topology topo_suffolk (14), SRID 26986, precision 0.25
24761 nodes, 38175 edges, 13519 faces, 0 topogeoms in 0 layers
-- 33,606 ms to validate --
SELECT * FROM
topology.ValidateTopology('topo_suffolk');
Voir aussi
11.2.18 Set_Geocode_Setting
Synopsis
Description
Définit la valeur d’un paramètre spécifique stocké dans la table tiger.geocode_settings. Les paramètres permettent
d’activer le débogage des fonctions. Plus tard, il sera envisagé de contrôler la notation à l’aide de paramètres. La liste actuelle
des paramètres est listée dans Get_Geocode_Setting.
Disponibilité : 2.1.0
Si vous exécutez Geocode alors que cette fonction est vraie, le journal NOTICE indiquera le temps et les requêtes.
SELECT set_geocode_setting('debug_geocode_address', 'true') As result;
result
---------
true
Voir aussi
Get_Geocode_Setting
Manuel PostGIS 3.4.0dev 797 / 870
Chapter 12
Les fonctions ci-dessous sont des fonctions d’agrégation spatiale qui sont utilisées de la même manière que les fonctions
d’agrégation SQL telles que sum et average.
• ST_AsMVT - Fonction d’agrégation renvoyant une représentation MVT d’un ensemble de lignes.
• ST_ClusterIntersecting - Fonction d’agrégation qui regroupe les géométries en entrée en ensembles connectés.
• ST_ClusterWithin - Fonction d’agrégation qui regroupe les géométries en entrée en fonction de la distance de séparation.
• ST_Collect - Crée une géométrie GeometryCollection ou Multi à partir d’un ensemble de géométries.
• ST_CoverageUnion - Calcule l’union d’un ensemble de polygones formant une couverture en supprimant les arêtes communes.
• ST_Extent - Fonction agrégée qui renvoie la boîte de délimitation des géométries.
• ST_MakeLine - Crée une LineString à partir de géométries Point, MultiPoint ou LineString.
• ST_MemUnion - Fonction d’agrégation qui fusionne les géométries d’une manière efficace sur le plan de la mémoire mais
plus lente
• ST_Polygonize - Calcule une collection de polygones formés à partir du tracé d’un ensemble de géométries.
• ST_SameAlignment - Retourne true si les rasters ont les mêmes skew, scale, spatial ref, et offset (les pixels peuvent être placés
sur la même grille sans être coupés) et false si ce n’est pas le cas, avec une NOTICE détaillant le problème.
• ST_Union - Calcule une géométrie représentant l’union des ensembles de points des géométries d’entrée.
• TopoElementArray_Agg - Renvoie un topoelementarray pour un ensemble de tableaux de type, element_id (topoelements).
Manuel PostGIS 3.4.0dev 798 / 870
Les fonctions ci-dessous sont des fonctions window spatiale qui sont utilisées de la même manière que les fonctions de fenêtre
SQL telles que row_number(), lead(), et lag(). Elles doivent être suivies d’une clause OVER().
• ST_ClusterDBSCAN - Fonction Window qui renvoie un identifiant de cluster pour chaque géométrie d’entrée en utilisant
l’algorithme DBSCAN.
• ST_ClusterIntersectingWin - Fonction Window qui renvoie un identifiant de cluster pour chaque géométrie en entrée, en
regroupant les géométries en entrée en ensembles connectés.
• ST_ClusterKMeans - Fonction Window qui renvoie un identifiant de cluster pour chaque géométrie en entrée en utilisant
l’algorithme K-means.
• ST_ClusterWithinWin - Fonction Window qui renvoie un identifiant de cluster pour chaque géométrie en entrée, regroupement
en utilisant la distance de séparation.
• ST_CoverageInvalidEdges - Fonction window qui trouve les endroits où les polygones ne forment pas une couverture valide.
• ST_CoverageSimplify - Fonction window qui simplifie les bords d’une couverture polygonale.
Les fonctions ci-dessous sont des fonctions PostGIS conformes à la norme SQL/MM 3
• ST_3DArea - Calcule la surface des géométries de surface 3D. Retourne 0 pour les solides. Description Disponibilité :
2.1.0 Cette méthode nécessite le backend SFCGAL. Cette méthode implémente la spécification SQL/MM. SQL-MM IEC
13249-3: 8.1, 10.5 Cette fonction prend en charge la 3D et ne supprime pas l’indice z. Cette fonction prend en charge les
surfaces Polyhedral. Cette fonction prend en charge les triangles et les réseaux irréguliers triangulés (TIN).
• ST_3DDWithin - Teste si deux géométries 3D se trouvent à une distance 3D donnée Description Renvoie true si la distance
3D entre deux valeurs géométriques n’est pas supérieure à la distance distance_of_srid. La distance est spécifiée en unités
définies par le système de référence spatial des géométries. Pour que cette fonction ait un sens, les géométries sources doivent
se trouver dans le même système de coordonnées (avoir le même SRID). Cette fonction inclut une comparaison de la boîte
englobante qui utilise tous les index disponibles sur les géométries. Cette fonction prend en charge la 3D et ne supprime
pas l’indice z. Cette fonction prend en charge les surfaces Polyhedral. Cette méthode implémente la spécification SQL/MM.
SQL-MM ? Disponibilité : 2.0.0
• ST_3DDifference - Effectuer une différence 3D Description Renvoie la partie de geom1 qui ne fait pas partie de geom2.
Disponibilité : 2.2.0 Cette méthode nécessite le backend SFCGAL. Cette méthode implémente la spécification SQL/MM.
SQL-MM IEC 13249-3: 5.1 Cette fonction prend en charge la 3D et ne supprime pas l’indice z. Cette fonction prend en charge
les surfaces Polyhedral. Cette fonction prend en charge les triangles et les réseaux irréguliers triangulés (TIN).
• ST_3DDistance - Renvoie la distance cartésienne minimale en 3D (basée sur la référence spatiale) entre deux géométries
en unités projetées. Description Renvoie la distance cartésienne minimale tridimensionnelle entre deux géométries en unités
projetées (unités de référence spatiales). Cette fonction prend en charge la 3D et ne supprime pas l’indice z. Cette fonction
prend en charge les surfaces Polyhedral. Cette méthode implémente la spécification SQL/MM. SQL-MM ISO/IEC 13249-3
Disponibilité : 2.0.0 Modifié : 2.2.0 - Dans le cas de la 2D et de la 3D, Z n’est plus considéré comme égal à 0 en cas de Z
manquant. Modifié : 3.0.0 - Version SFCGAL supprimée
• ST_3DIntersection - Réaliser une intersection 3D Description Renvoie une géométrie qui est la partie partagée entre geom1 et
geom2. Disponibilité : 2.1.0 Cette méthode nécessite le backend SFCGAL. Cette méthode implémente la spécifica-
tion SQL/MM. SQL-MM IEC 13249-3: 5.1 Cette fonction prend en charge la 3D et ne supprime pas l’indice z. Cette fonction
prend en charge les surfaces Polyhedral. Cette fonction prend en charge les triangles et les réseaux irréguliers triangulés (TIN).
Manuel PostGIS 3.4.0dev 799 / 870
• ST_3DIntersects - Teste si deux géométries se croisent dans l’espace en 3D - uniquement pour les points, les lignes, les
polygones, les surfaces polyédriques (aire) Description Overlaps, Touches, Within impliquent tous une intersection spatiale.
Si l’un des éléments susmentionnés renvoie un résultat positif, les géométries se recoupent également dans l’espace. Disjoint
implique faux pour l’intersection spatiale. Cette fonction inclut une comparaison de la boîte englobante qui utilise tous les index
disponibles sur les géométries. Modifié : 3.0.0 SFCGAL backend supprimé, GEOS backend supporte les TINs. Disponibilité
: 2.0.0 Cette fonction prend en charge la 3D et ne supprime pas l’indice z. Cette fonction prend en charge les surfaces
Polyhedral. Cette fonction prend en charge les triangles et les réseaux irréguliers triangulés (TIN). Cette méthode implémente
la spécification SQL/MM. SQL-MM IEC 13249-3: 5.1
• ST_3DLength - Renvoie la longueur 3D d’une géométrie linéaire. Description Renvoie la longueur tridimensionnelle ou
bidimensionnelle de la géométrie s’il s’agit d’une LineString ou d’une MultiLineString. Pour les lignes à 2 dimensions,
la longueur à 2 dimensions est renvoyée (comme ST_Length et ST_Length2D) Cette fonction prend en charge la 3D et ne
supprime pas l’indice z. Cette méthode implémente la spécification SQL/MM. SQL-MM IEC 13249-3: 7.1, 10.3 Modifié :
2.0.0 Dans les versions précédentes, cette fonction était appelée ST_Length3D
• ST_3DPerimeter - Renvoie le périmètre 3D d’une géométrie polygonale. Description Renvoie le périmètre tridimensionnel de
la géométrie, s’il s’agit d’un polygone ou d’un multi-polygone. Si la géométrie est bidimensionnelle, le périmètre bidimension-
nel est renvoyé. Cette fonction prend en charge la 3D et ne supprime pas l’indice z. Cette méthode implémente la spécification
SQL/MM. SQL-MM ISO/IEC 13249-3: 8.1, 10.5 Modifié : 2.0.0 Dans les versions antérieures, il s’appelait ST_Perimeter3D
• ST_3DUnion - Effectuer l’union 3D. Description Disponibilité : 2.2.0 Disponibilité : 3.3.0 la variante agrégée a été ajoutée
Cette méthode nécessite le backend SFCGAL. Cette méthode implémente la spécification SQL/MM. SQL-MM IEC 13249-3:
5.1 Cette fonction prend en charge la 3D et ne supprime pas l’indice z. Cette fonction prend en charge les surfaces Polyhedral.
Cette fonction prend en charge les triangles et les réseaux irréguliers triangulés (TIN). Variante agrégée: renvoie une géométrie
qui est l’union 3D d’un ensemble de géométries. La fonction ST_3DUnion() est une fonction "agrégée" dans la terminologie
de PostgreSQL. Cela signifie qu’elle opère sur des lignes de données, de la même manière que les fonctions SUM() et AVG()
et, comme la plupart des agrégats, elle ignore les géométries NULL.
• ST_AddEdgeModFace - Ajoutez une nouvelle arête et, si elle divise une face, modifiez la face d’origine et ajoutez une nouvelle
face. Description Ajouter une nouvelle arête et, si cela divise une face, modifier la face d’origine et en ajouter une nouvelle. Si
possible, la nouvelle face sera créée sur le côté gauche de la nouvelle arête. Cela ne sera pas possible si la face du côté gauche
doit être la face de l’univers (non borné). Renvoie l’identifiant de l’arête nouvellement ajoutée. Met à jour toutes les arêtes
jointes existantes et les relations en conséquence. Si l’un des arguments est nul, les nœuds donnés sont inconnus (doivent
déjà exister dans la table node du schéma topologique), la acurve n’est pas une LINESTRING, le anode et anothernode ne
sont pas les points de départ et d’arrivée de acurve, une erreur est générée. Si le système de référence spatiale (srid) de la
géométrie acurve n’est pas le même que la topologie, une exception est levée. Disponibilité : 2.0 Cette méthode implémente
la spécification SQL/MM. SQL-MM: Topo-Geo et Topo-Net 3: Routine Details: X.3.13
• ST_AddEdgeNewFaces - Ajoutez une nouvelle arête et, si elle divise une face, supprimez la face d’origine et remplacez-la
par deux nouvelles faces. Description Ajoutez une nouvelle arête et, si elle divise une face, supprimez la face d’origine et
remplacez-la par deux nouvelles faces. Renvoie l’identifiant de l’arête nouvellement ajoutée. Met à jour toutes les arêtes
jointes existantes et les relations en conséquence. Si l’un des arguments est nul, les nœuds donnés sont inconnus (doivent
déjà exister dans la table node du schéma topologique), la acurve n’est pas une LINESTRING, le anode et anothernode ne
sont pas les points de départ et d’arrivée de acurve, une erreur est générée. Si le système de référence spatiale (srid) de la
géométrie acurve n’est pas le même que la topologie, une exception est levée. Disponibilité : 2.0 Cette méthode implémente
la spécification SQL/MM. SQL-MM: Topo-Geo et Topo-Net 3: Routine Details: X.3.12
• ST_AddIsoEdge - Ajoute une arête isolée définie par la géométrie alinestring à une topologie reliant deux nœuds isolés existants
anode et anothernode et renvoie l’identifiant de l’arête de la nouvelle arête. Description Ajoute une arête isolée définie par la
géométrie alinestring à une topologie reliant deux nœuds isolés existants anode et anothernode et renvoie l’identifiant de l’arête
de la nouvelle arête. Si le système de référence spatiale (srid) de la géométrie alinestring n’est pas le même que la topologie,
si l’un des arguments d’entrée est nul, si les noeuds sont contenus dans plus d’une face, ou si les noeuds sont des noeuds de
départ ou d’arrivée d’une arête existante, une exception est levée. Si le alinestring ne se trouve pas à l’intérieur de la face à
laquelle appartiennent le anode et le anothernode, une exception est levée. Si le anode et le anothernode ne sont pas les points
de départ et d’arrivée du alinestring, une exception est levée. DIsponibilité : 1.1 Cette méthode implémente la spécification
SQL/MM. SQL-MM: Topo-Geo et Topo-Net 3: Routine Details: X.3.4
• ST_AddIsoNode - Ajoute un noeud isolé à une face dans une topologie et renvoie le nodeid du nouveau noeud. Si la face est
nulle, le noeud est quand même créé. Description Ajoute un noeud isolé avec un point apoint à une face existante avec un
Manuel PostGIS 3.4.0dev 800 / 870
faceid aface à une topologie atopology et renvoie le nodeid du nouveau noeud. Si le système de référence spatiale (srid) de
la géométrie du point n’est pas le même que la topologie, si le apoint n’est pas une géométrie de point, si le point est nul ou
si le point croise une arête existante (même aux limites), une exception est levée. Si le point existe déjà en tant que nœud,
une exception est levée. Si aface n’est pas null et que le apoint n’est pas à l’intérieur de la face, une exception est levée.
DIsponibilité : 1.1 Cette méthode implémente la spécification SQL/MM. SQL-MM: Topo-Net Routines : X+1.3.1
• ST_Area - Renvoie l’aire d’une géométrie polygonale. Description Renvoie l’aire d’une géométrie polygonale. Pour les types
geometry, une surface cartésienne 2D (planaire) est calculée, avec des unités spécifiées par le SRID. Pour les types geography,
la surface est déterminée par défaut sur un sphéroïde avec des unités en mètres carrés. Pour calculer la surface en utilisant le
modèle sphérique, plus rapide mais moins précis, utilisez ST_Area(geog,false). Amélioration : 2.0.0 - la prise en charge des
surfaces polyédriques 2D a été introduite. Amélioration : 2.2.0 - mesure sur sphéroïde effectuée avec GeographicLib pour une
meilleure précision et robustesse. Nécessite PROJ >= 4.9.0 pour profiter de la nouvelle fonctionnalité. Modifié : 3.0.0 - ne
dépend plus de SFCGAL. Cette méthode implémente la spécification OGC Simple Features Implementation Specification for
SQL 1.1. Cette méthode implémente la spécification SQL/MM. SQL-MM 3: 8.1.2, 9.5.3 Cette fonction prend en charge les
surfaces Polyhedral. Pour les surfaces polyédriques, ne prend en charge que les surfaces polyédriques 2D (pas 2.5D). Pour les
surfaces 2.5D, la réponse peut être différente de zéro, mais uniquement pour les faces qui se trouvent entièrement dans le plan
XY.
• ST_AsBinary - Renvoie la représentation OGC/ISO Well-Known Binary (WKB) de la géométrie/geography sans les méta-
données SRID. Description Renvoie la représentation OGC/ISO Well-Known Binary (WKB) de la géométrie. La première
variante de fonction propose par défaut un encodage utilisant l’endian de la machine serveur. La deuxième variante de la fonc-
tion prend un argument texte spécifiant l’encodage endian, soit little-endian (’NDR’) ou big-endian (’XDR’). Le format WKB
est utile pour lire les données géométriques de la base de données et maintenir une précision numérique totale. Cela permet
d’éviter les arrondis de précision qui peuvent se produire avec les formats texte tels que WKT. Pour effectuer la conversion
inverse de la géométrie WKB en géométrie PostGIS, utilisez . Le format WKB de l’OGC/ISO ne comprend pas le SRID. Pour
obtenir le format EWKB qui inclut le SRID, utilisez Le comportement par défaut dans PostgreSQL 9.0 a été modifié pour
sortir bytea en encodage hexagonal. Si vos outils GUI nécessitent l’ancien comportement, alors SET bytea_output=’escape’
dans votre base de données. Amélioration : 2.0.0 introduction du support TIN, Triangles et surfaces polyédriques. Améliora-
tion : 2.0.0 le support pour des dimensions de coordonnées plus élevées a été introduit. Amélioration : 2.0.0 le support pour
spécifier endian avec geography a été introduit. Disponibilité : 1.5.0 Le support de la géographie a été introduit. Modifié :
2.0.0 Les entrées de cette fonction ne peuvent pas être inconnues, elles doivent être des géométries. Des constructions telles
que ST_AsBinary(’POINT(1 2)’) ne sont plus valides et vous obtiendrez une erreur de type n st_asbinary(unknown) is not
unique. Un code comme celui-là doit être changé en ST_AsBinary(’POINT(1 2)’::geometry);. Si cela n’est pas possible,
alors installez legacy.sql. Cette méthode implémente la spécification OGC Simple Features Implementation Specification for
SQL 1.1. s2.1.1.1 Cette méthode implémente la spécification SQL/MM. SQL-MM 3 : 5.1.37 Cette méthode prend
en charge les types Circular String et Curve. Cette fonction prend en charge les surfaces Polyhedral. Cette fonction prend en
charge les triangles et les réseaux irréguliers triangulés (TIN). Cette fonction prend en charge la 3D et ne supprime pas l’indice
z.
• ST_AsGML - Renvoyer la géométrie en tant qu’élément GML version 2 ou 3. Description Renvoie la géométrie sous la forme
d’un élément GML (Geography Markup Language). Le paramètre de version, s’il est spécifié, peut être 2 ou 3. Si aucun
paramètre de version n’est spécifié, la valeur par défaut est 2. L’argument maxdecimaldigits peut être utilisé pour réduire le
nombre maximum de décimales utilisées dans la sortie (15 par défaut). L’utilisation du paramètre maxdecimaldigits peut rendre
la géométrie de sortie invalide. Pour éviter cela, utilisez d’abord avec une taille de grille appropriée. GML 2 fait référence à la
version 2.1.2, GML 3 à la version 3.1.1 L’argument "options" est un champ de bits. Il peut être utilisé pour définir le type de
sortie CRS dans la sortie GML, et pour déclarer les données comme lat/lon : 0 : GML Short CRS (e.g. EPSG:4326), valeur par
défaut 1: GML Long CRS (e.g urn:ogc:def:crs:EPSG::4326) 2 : Pour GML 3 uniquement, supprimer l’attribut srsDimension
de la sortie. 4 : Pour GML 3 uniquement, utilisez la balise <LineString> plutôt que la balise <Curve> pour les lignes. 16 :
Déclare que les données sont des lat/lon (par exemple srid=4326). Par défaut, on suppose que les données sont planaires. Cette
option n’est utile que pour la sortie GML 3.1.1, en ce qui concerne l’ordre des axes. Ainsi, si vous la définissez, les coordonnées
seront échangées pour que l’ordre soit lat lon au lieu de lon lat dans la base de données. 32 : Sortie de la boîte de la géométrie
(enveloppe). L’argument ’namespace prefix’ peut être utilisé pour spécifier un préfixe d’espace de noms personnalisé ou aucun
préfixe (s’il est vide). Si l’argument est nul ou omis, le préfixe ’gml’ est utilisé Disponibilité : 1.3.2 Disponibilité : 1.5.0 Le
support de la géographie a été introduit. Amélioration : la prise en charge du préfixe 2.0.0 a été introduite. L’option 4 pour
GML3 a été introduite pour permettre l’utilisation de LineString au lieu de Curve tag pour les lignes. La prise en charge GML3
des surfaces polyédriques et des TINS a été introduite. L’option 32 a été introduite pour produire la boîte. Modifié : 2.0.0
utiliser les args nommés par défaut Amélioration : 2.1.0 La prise en charge des identifiants a été introduite pour GML 3. Seule
la version 3+ de ST_AsGML prend en charge les surfaces polyédriques et les TINS. Cette méthode implémente la spécification
Manuel PostGIS 3.4.0dev 801 / 870
SQL/MM. SQL-MM IEC 13249-3: 17.2 Cette fonction prend en charge la 3D et ne supprime pas l’indice z. Cette fonction
prend en charge les surfaces Polyhedral. Cette fonction prend en charge les triangles et les réseaux irréguliers triangulés (TIN).
• ST_AsText - Renvoie la représentation Well-Known Text (WKT) de la géométrie/geography sans métadonnées SRID. De-
scription Renvoie la représentation OGC Well-Known Text (WKT) de la géométrie/geography. L’argument facultatif maxdec-
imaldigits peut être utilisé pour limiter le nombre de chiffres après la virgule dans les ordonnées de sortie (valeur par défaut :
15). Pour effectuer la conversion inverse de la représentation WKT en géométrie PostGIS, utilisez . La représentation WKT
standard de l’OGC n’inclut pas le SRID. Pour inclure le SRID dans la représentation de sortie, utilisez la fonction PostGIS non
standard La représentation textuelle des nombres en WKT peut ne pas maintenir une précision totale en virgule flottante. Pour
garantir une précision totale pour le stockage ou le transport des données, il est préférable d’utiliser le format Well-Known
Binary (WKB) (voir et maxdecimaldigits). L’utilisation du paramètre maxdecimaldigits peut rendre la géométrie de sortie
invalide. Pour éviter cela, utilisez d’abord avec une taille de grille appropriée. Disponibilité : 1.5 - le support de la geography a
été introduit. Amélioration : 2.5 - introduction de la précision des paramètres optionnels. Cette méthode implémente la spéci-
fication OGC Simple Features Implementation Specification for SQL 1.1. s2.1.1.1 Cette méthode implémente la spécification
SQL/MM. SQL-MM 3 : 5.1.25 Cette méthode prend en charge les types Circular String et Curve.
• ST_Boundary - Renvoie la limite d’une géométrie. Description Renvoie l’ensemble formant la frontière finie de cette géométrie.
La notion de frontière est définie dans la section 3.12.3.2 des spécifications OGC. Le résultat de cette fonction est un ensemble
topologiquement fermé, représentable avec les types de base, comme décrit dans la section 3.12.2 des spécifications OGC.
Effectué par le module GEOS Avant la version 2.0.0, cette fonction renvoie une exception si une GEOMETRYCOLLECTION
est passée en paramètre. A partir de la 2.0.0, la fonction renvoie null (paramètre non supporté). Cette méthode implémente la
spécification OGC Simple Features Implementation Specification for SQL 1.1. OGC SPEC s2.1.1.1 Cette méthode implémente
la spécification SQL/MM. SQL-MM IEC 13249-3 : 5.1.17 Cette fonction prend en charge la 3D et ne supprime pas
l’indice z. Amélioration : 2.1.0 introduction du support pour Triangle Modifié : 3.2.0 support pour TIN, n’utilise pas geos, ne
linéarise pas les courbes
• ST_Buffer - Calcule une géométrie couvrant tous les points situés à une distance donnée d’une géométrie. Description Calcule
un POLYGONE ou un MULTIPOLYGONE représentant tous les points dont la distance par rapport à une geometry/geography
est inférieure ou égale à une distance donnée. Une distance négative rétrécit la géométrie au lieu de l’étendre. Une distance
négative peut réduire complètement un polygone, auquel cas POLYGON EMPTY est renvoyé. Pour les points et les lignes,
les distances négatives renvoient toujours des résultats vides. Pour les types geometry, la distance est spécifiée dans les unités
du système de référence spatiale de la géométrie. Pour les types geography, la distance est spécifiée en mètres. Le troisième
paramètre facultatif contrôle la précision et le style du tampon. La précision des arcs de cercle dans le tampon est spécifiée en
tant que nombre de segments de ligne utilisés pour approximer un quart de cercle (la valeur par défaut est de 8). Le style du
tampon peut être spécifié en fournissant une liste de paires clé=valeur séparées par des blancs, comme suit : ’quad_segs=#’
: nombre de segments de ligne utilisés pour approximer un quart de cercle (8 par défaut). ’endcap=round|flat|square’ : style
d’endcap (la valeur par défaut est "round"). ’butt’ est accepté comme synonyme de ’flat’. ’join=round|mitre|bevel’ : style
de jointure (la valeur par défaut est "round"). ’miter’ est accepté comme synonyme de ’mitre’. ’mitre_limit=#.#’ : limite du
rapport d’angle (n’affecte que le style d’assemblage en angle). ’miter_limit’ est accepté comme synonyme de ’mitre_limit’.
side=both|left|right’ : ’left’ ou ’right’ effectue une mise en mémoire tampon unilatérale sur la géométrie, le côté mis en mémoire
tampon étant relatif à la direction de la ligne. Ceci ne s’applique qu’à la géométrie LINESTRING et n’affecte pas les géométries
POINT ou POLYGONE. Par défaut, les embouts sont carrés. For geography this is a thin wrapper around the geometry
implementation. Il détermine un système de référence spatiale planaire qui correspond le mieux à la boîte de délimitation de
l’objet géographique (en essayant UTM, le pôle Nord/Sud de Lambert Azimuthal Equal Area (LAEA), et enfin Mercator). Le
tampon est calculé dans l’espace planaire, puis retransformé en WGS84. Cela peut ne pas produire le comportement souhaité
si l’objet d’entrée est beaucoup plus grand qu’une zone UTM ou s’il traverse la ligne de changement de date La sortie du
tampon est toujours une géométrie polygonale valide. La mémoire tampon peut gérer des entrées non valides, de sorte que
la mise en mémoire tampon par la distance 0 est parfois utilisée comme moyen de réparer les polygones non valides. peut
également être utilisé à cette fin. La mise en mémoire tampon est parfois utilisée pour effectuer une recherche à l’intérieur de
la distance. Dans ce cas, il est plus efficace d’utiliser . Cette fonction ignore la dimension Z. Elle donne toujours un résultat en
2D, même lorsqu’elle est utilisée sur une géométrie en 3D. Amélioration : 2.5.0 - La prise en charge de la géométrie ST_Buffer
a été améliorée pour permettre la spécification de la mise en mémoire tampon latérale side=both|left|right. Disponibilité : 1.5
- ST_Buffer a été amélioré pour prendre en charge différents types de terminaisons et de jointures. Ceux-ci sont utiles, par
exemple, pour convertir les lignes de route en routes polygonales avec des bords plats ou carrés au lieu de bords arrondis. Un
petit wrapper pour la geography a été ajouté. Effectué par le module GEOS. Cette méthode implémente la spécification OGC
Simple Features Implementation Specification for SQL 1.1. s2.1.1.3 Cette méthode implémente la spécification SQL/MM.
SQL-MM IEC 13249-3: 5.1.30
Manuel PostGIS 3.4.0dev 802 / 870
• ST_Centroid - Renvoie le centre géométrique d’une géométrie. Description Calcule un point qui est le centre de masse
géométrique d’une géométrie. Pour [MULTI]POINTs, le centroïde est la moyenne arithmétique des coordonnées entrées. Pour
les [MULTI]LINESTRINGs, le centroïde est calculé en utilisant la longueur pondérée de chaque segment de ligne. Pour les
[MULTI]POLYGONs, le centroïde est calculé en termes de surface. Si une géométrie vide est fournie, une GEOMETRYCOL-
LECTION vide est renvoyée. Si NULL est fourni, NULL est renvoyé. Si CIRCULARSTRING ou COMPOUNDCURVE
sont fournis, ils sont convertis en linestring avec CurveToLine d’abord, puis de la même manière que pour LINESTRING.
Pour les entrées de dimensions mixtes, le résultat est égal au centroïde de la composante Géométries de la dimension la plus
élevée (puisque les géométries de dimension inférieure n’apportent aucun "poids" au centroïde). Notez que pour les géométries
polygonales, le centroïde n’est pas nécessairement situé à l’intérieur du polygone. Par exemple, voir le diagramme ci-dessous
du centroïde d’un polygone en forme de C. Pour construire un point garanti à l’intérieur d’un polygone, utilisez . Nouveau dans
la version 2.3.0 : prend en charge CIRCULARSTRING et COMPOUNDCURVE (en utilisant CurveToLine) Disponibilité :
la prise en charge du type geography a été introduite dans la version 2.4.0. Cette méthode implémente la spécification OGC
Simple Features Implementation Specification for SQL 1.1. Cette méthode implémente la spécification SQL/MM. SQL-MM
3: 8.1.4, 9.5.5
• ST_ChangeEdgeGeom - Modifie la forme d’une arête sans affecter la structure de la topologie. Description Modifie la forme
d’une arête sans affecter la structure de la topologie. Si l’un des arguments est nul, si l’arête donnée n’existe pas dans la table
edge du schéma topologique, si la acurve n’est pas une LINESTRING, ou si la modification changerait la topologie sous-
jacente, une erreur est déclenchée. Si le système de référence spatiale (srid) de la géométrie acurve n’est pas le même que la
topologie, une exception est levée. Si la nouvelle acurve n’est pas simple, une erreur est générée. Si le déplacement de l’arête de
l’ancienne à la nouvelle position heurte un obstacle, une erreur est générée. Disponibilité : 1.1.0 Amélioration : 2.0.0
ajoute l’application de la cohérence topologique Cette méthode implémente la spécification SQL/MM. SQL-MM: Topo-Geo
et Topo-Net 3: Routine Details X.3.6
• ST_Contains - Tests si chaque point de B est situé dans A, et que leurs intérieurs ont un point commun Description Renvoie
TRUE si la géométrie A contient la géométrie B. A contient B si et seulement si tous les points de B se trouvent à l’intérieur
(c’est-à-dire à l’intérieur ou à la limite) de A (ou, de manière équivalente, si aucun point de B ne se trouve à l’extérieur de A),
et si les intérieurs de A et de B ont au moins un point en commun. In mathematical terms: ST_Contains(A, B) ⇔ (A B
T
= B) ∧ (Int(A) Int(B) 6= ∅) La relation contains est réflexive : toute géométrie se contient elle-même. (En revanche, dans
T
le prédicat , une géométrie ne se contientpas elle-même correctement). La relation est antisymétrique : si ST_Contains(A,B)
= true et ST_Contains(B,A) = true, alors les deux géométries doivent être topologiquement égales (ST_Equals(A,B) = true).
ST_Contains est le contraire de . Ainsi, ST_Contains(A,B) = ST_Within(B,A). Comme les intérieurs doivent avoir un point
commun, une subtilité de la définition est que les polygones et les lignes ne contiennent pas de lignes et de points se trouvant
entièrement dans leur limite. Pour plus de détails, voir Subtleties of OGC Covers, Contains, Within. Le prédicat fournit une
relation plus inclusive. Cette fonction inclut une comparaison de la boîte englobante qui utilise tous les index disponibles
sur les géométries. Pour éviter l’utilisation d’un index, utilisez la fonction _ST_Contains. Effectué par le module GEOS
Amélioré : 2.3.0 Amélioration du court-circuit PIP étendu à la prise en charge des multipoints avec peu de points. Les ver-
sions précédentes ne prenaient en charge que les points dans les polygones. Amélioration : 3.0.0 a permis la prise en charge
de GEOMETRYCOLLECTION N’utilisez pas cette fonction avec des géométries non valides. Vous obtiendrez des résultats
inattendus. NOTE : il s’agit de la version "autorisée" qui renvoie un booléen et non un entier. Cette méthode implémente la spé-
cification OGC Simple Features Implementation Specification for SQL 1.1. s2.1.1.2 // s2.1.13.3 - identique à within(geometry
B, geometry A) Cette méthode implémente la spécification SQL/MM. SQL-MM 3: 5.1.31
• ST_ConvexHull - Calcule l’enveloppe convexe d’une géométrie. Description Calcule l’enveloppe convexe d’une géométrie.
L’enveloppe convexe est la plus petite géométrie convexe qui englobe toutes les géométries de l’entrée. On peut considérer
l’enveloppe convexe comme la géométrie obtenue en enroulant un élastique autour d’un ensemble de géométries. Ceci est
différent d’une concave hull qui est analogue à un "rétrécissement" des géométries. Une enveloppe convexe est souvent utilisée
pour déterminer une zone affectée sur la base d’un ensemble d’observations ponctuelles. Dans le cas général, l’enveloppe
convexe est un polygone. L’enveloppe convexe de deux ou plusieurs points colinéaires est une LineString à deux points.
L’enveloppe convexe d’un ou plusieurs points identiques est un Point. Il ne s’agit pas d’une fonction d’agrégation. Pour
calculer l’enveloppe convexe d’un ensemble de géométries, utilisez pour les agréger dans une collection de géométries (par
exemple ST_ConvexHull(ST_Collect(geom)). Effectué par le module GEOS Cette méthode implémente la spécification OGC
Simple Features Implementation Specification for SQL 1.1. s2.1.1.3 Cette méthode implémente la spécification SQL/MM.
SQL-MM IEC 13249-3: 5.1.16 Cette fonction prend en charge la 3D et ne supprime pas l’indice z.
• ST_CoordDim - Renvoie la dimension des coordonnées d’une géométrie. Description Retourne la dimension des coordonnées
d’une valeur ST_Geometry. Alias SQL/MM pour la fonction Cette méthode implémente la spécification OGC Simple Features
Implementation Specification for SQL 1.1. Cette méthode implémente la spécification SQL/MM. SQL-MM 3 : 5.1.3
Manuel PostGIS 3.4.0dev 803 / 870
Cette méthode prend en charge les types Circular String et Curve. Cette fonction prend en charge la 3D et ne supprime pas
l’indice z. Cette fonction prend en charge les surfaces Polyhedral. Cette fonction prend en charge les triangles et les réseaux
irréguliers triangulés (TIN).
• ST_CreateTopoGeo - Ajoute une collection de géométries à une topologie vide donnée et renvoie un message détaillant le
succès. Description Ajoute une collection de géométries à une topologie vide donnée et renvoie un message détaillant le
succès. Utile pour remplir une topologie vide. Disponibilité : 2.0 Cette méthode implémente la spécification SQL/MM.
SQL-MM: Topo-Geo et Topo-Net 3: Routine Details -- X.3.18
• ST_Crosses - Teste si deux géométries ont en commun certains points intérieurs, mais pas tous Description Compares two
geometry objects and returns true if their intersection "spatially crosses"; that is, the geometries have some, but not all interior
points in common. The intersection of the interiors of the geometries must be non-empty and must have dimension less
than the maximum dimension of the two input geometries, and the intersection of the two geometries must not equal either
geometry. Otherwise,Tit returns false. The crosses relation is symmetric and irreflexive. In mathematical terms: ST_Crosses(A,
B) ⇔ (dim( Int(A) Int(B) ) < max( dim( Int(A) ), dim( Int(B) ) )) ∧ (A B 6= A) ∧ (A B 6= B) Les géométries se
T T
croisent si leur matrice d’intersection DE-9IM correspond : T*T****** pour les situations point/ligne, point/zone et ligne/zone
T*****T** pour les situations Ligne/Point, Zone/Point et Zone/Ligne 0******** pour les situations ligne/ligne the result is
false for Point/Point and Area/Area situations La spécification OpenGIS Simple Features définit ce prédicat uniquement pour
les situations Point/Ligne, Point/Zone, Ligne/Ligne et Ligne/Zone. Le STC / GEOS étend la définition pour qu’elle s’applique
également aux situations Ligne/Point, Zone/Point et Zone/Ligne. Cela rend la relation symétrique. Cette fonction inclut
une comparaison de la boîte englobante qui utilise tous les index disponibles sur les géométries. Amélioration : 3.0.0 a
permis la prise en charge de GEOMETRYCOLLECTION Cette méthode implémente la spécification OGC Simple Features
Implementation Specification for SQL 1.1. s2.1.13.3 Cette méthode implémente la spécification SQL/MM. SQL-MM 3: 5.1.29
• ST_CurveToLine - Convertit une géométrie contenant des courbes en une géométrie linéaire. Description Convertit une CIR-
CULAR STRING en LINESTRING régulière ou CURVEPOLYGON en POLYGON ou MULTISURFACE en MULTIPOLY-
GON. Utile pour les sorties vers des appareils qui ne supportent pas les types de géométrie CIRCULARSTRING Convertit
une géométrie donnée en une géométrie linéaire. Chaque géométrie ou segment courbe est converti en une approximation
linéaire en utilisant la `tolérance` et les options données (32 segments par quadrant et aucune option par défaut). L’argument
’tolerance_type’ détermine l’interprétation de l’argument `tolerance`. Il peut prendre les valeurs suivantes : 0 (par défaut) :
La tolérance est le nombre maximum de segments par quadrant. 1 : La tolérance est l’écart maximal de la ligne par rapport
à la courbe, en unités de source. 2 : La tolérance est l’angle maximal, en radians, entre les rayons générateurs. L’argument
’flags’ est un champ de bits. 0 par défaut. Les bits supportés sont : 1 : Sortie symétrique (indépendante de l’orientation). 2 :
Conserver l’angle, évite de réduire les angles (longueur des segments) lors de la production d’une sortie symétrique. N’a aucun
effet lorsque l’indicateur de symétrie est désactivé. Disponibilité : 1.3.0 Amélioration : 2.4.0 a ajouté la prise en charge de la
tolérance de l’écart maximal et de l’angle maximal, ainsi que de la sortie symétrique. Amélioration : la version 3.0.0 a mis
en place un nombre minimum de segments par arc linéarisé afin d’éviter une rupture topologique. Cette méthode implémente
la spécification OGC Simple Features Implementation Specification for SQL 1.1. Cette méthode implémente la spécification
SQL/MM. SQL-MM 3: 7.1.7 Cette fonction prend en charge la 3D et ne supprime pas l’indice z. Cette méthode prend en
charge les types Circular String et Curve.
• ST_Difference - Calcule une géométrie représentant la partie de la géométrie A qui n’intersecte pas la géométrie B. Description
Renvoie une géométrie représentant la partie de la géométrie A qui n’intersecte pas la géométrie B. Ceci est équivalent à A -
ST_Intersection(A,B). Si A est entièrement contenue dans B, une géométrie atomique vide du type approprié est renvoyée. Il
s’agit de la seule fonction de superposition pour laquelle l’ordre d’entrée est important. ST_Difference(A, B) renvoie toujours
une partie de A. Si l’argument optionnel gridSize est fourni, les entrées sont placées sur une grille de la taille donnée, et les
sommets du résultat sont calculés sur cette même grille. (Nécessite GEOS-3.9.0 ou plus) Effectué par le module GEOS En-
hanced: 3.1.0 accept a gridSize parameter. Requires GEOS >= 3.9.0 to use the gridSize parameter. Cette méthode implémente
la spécification OGC Simple Features Implementation Specification for SQL 1.1. s2.1.1.3 Cette méthode implémente la spé-
cification SQL/MM. SQL-MM 3: 5.1.20 Cette fonction prend en charge la 3D et ne supprime pas l’indice z. Cependant, le
résultat est calculé en utilisant uniquement XY. Les valeurs Z résultantes sont copiées, moyennées ou interpolées.
• ST_Dimension - Renvoie la dimension topologique d’une géométrie. Description Renvoie la dimension topologique de cet
objet Geometry, qui doit être inférieure ou égale à la dimension des coordonnées. OGC SPEC s2.1.1.1 - renvoie 0 pour POINT,
1 pour LINESTRING, 2 pour POLYGON, et la plus grande dimension des composants d’une GEOMETRYCOLLECTION.
Si la dimension est inconnue (par exemple, pour une GEOMETRYCOLLECTION vide), 0 est renvoyé. Cette méthode im-
plémente la spécification SQL/MM. SQL-MM 3 : 5.1.2 Amélioration : 2.0.0 introduction du support TIN et surfaces
polyédriques. Ne renvoie plus une exception si une GEOMETRY EMPTY est passée. Avant la version 2.0.0, cette fonction
Manuel PostGIS 3.4.0dev 804 / 870
lève une exception si elle est utilisée avec une géométrie vide. Cette fonction prend en charge les surfaces Polyhedral. Cette
fonction prend en charge les triangles et les réseaux irréguliers triangulés (TIN).
• ST_Disjoint - Teste si deux géométries n’ont pas de points communs Description Returns true if two geometries are disjoint.
Geometries are disjoint if they have no point in common. If any other spatial relationship is trueTfor a pair of geometries, they
are not disjoint. Disjoint implies that is false. In mathematical terms: ST_Disjoint(A, B) ⇔ A B = ∅ Amélioration : 3.0.0
a permis la prise en charge de GEOMETRYCOLLECTION Effectué par le module GEOS Cet appel de fonction n’utilise pas
d’index. Un prédicat négatif peut être utilisé comme une alternative plus performante qui utilise des index : ST_Disjoint(A,B)
= NOT ST_Intersects(A,B) NOTE : il s’agit de la version "autorisée" qui renvoie un booléen et non un entier. Cette méthode
implémente la spécification OGC Simple Features Implementation Specification for SQL 1.1. s2.1.1.2 //s2.1.13.3 - a.Relate(b,
’FF*FF****’) Cette méthode implémente la spécification SQL/MM. SQL-MM 3: 5.1.26
• ST_Distance - Renvoie la distance entre deux valeurs de geometry ou geography. Description Pour les types , renvoie la
distance cartésienne (planaire) minimale en 2D entre deux géométries, en unités projetées (unités de référence spatiales). Pour
les types , la valeur par défaut est la distance géodésique minimale entre deux géographies en mètres, calculée sur le sphéroïde
déterminé par le SRID. Si use_spheroid est faux, un calcul sphérique plus rapide est utilisé. Cette méthode implémente la
spécification OGC Simple Features Implementation Specification for SQL 1.1. Cette méthode implémente la spécification
SQL/MM. SQL-MM 3: 5.1.23 Cette méthode prend en charge les types Circular String et Curve. Disponibilité : 1.5.0 La
prise en charge du type geography a été introduite dans la version 1.5. Amélioration de la vitesse pour les géométries planaires
afin de mieux gérer les géométries de grande taille ou à nombreux sommets Amélioration : la version 2.1.0 a amélioré la
vitesse pour le type geography. Voir Making Geography faster pour plus de détails. Amélioration : 2.1.0 - la prise en charge
des géométries courbes a été introduite. Amélioration : 2.2.0 - mesure sur sphéroïde effectuée avec GeographicLib pour une
meilleure précision et robustesse. Nécessite PROJ >= 4.9.0 pour profiter de la nouvelle fonctionnalité. Modifié : 3.0.0 - ne
dépend plus de SFCGAL.
• ST_EndPoint - Renvoie le dernier point d’une LineString ou CircularLineString. Description Renvoie le dernier point d’une
géométrie LINESTRING ou CIRCULARLINESTRING comme un POINT. Renvoie NULL si l’entrée n’est pas une LINESTRING
ou CIRCULARLINESTRING. Cette méthode implémente la spécification SQL/MM. SQL-MM 3 : 7.1.4 Cette fonc-
tion prend en charge la 3D et ne supprime pas l’indice z. Cette méthode prend en charge les types Circular String et Curve.
Modifié : 2.0.0 ne fonctionne plus avec les MultiLineStrings à géométrie unique. Dans les anciennes versions de PostGIS,
une MultiLineString à géométrie unique fonctionnait avec cette fonction et renvoyait le point final. Dans la version 2.0.0, elle
renvoie NULL comme toute autre MultiLineString. L’ancien comportement était une fonctionnalité non documentée, mais les
personnes qui supposaient que leurs données étaient stockées en tant que LINESTRING peuvent voir ces dernières retourner
NULL dans la version 2.0.0.
• ST_Envelope - Renvoie une géométrie représentant la boîte de délimitation d’une géométrie. Description Renvoie la boîte de
délimitation minimale en double précision (float8) pour la géométrie fournie, en tant que géométrie. Le polygone est défini par
les points d’angle de la boîte de délimitation ((MINX, MINY), (MINX, MAXY), (MAXX, MAXY), (MAXX, MINY), (MINX,
MINY)). (PostGIS ajoutera également une coordonnée ZMIN/ZMAX). D’autres cas (lignes verticales, points) retourneront
une géométrie de dimension inférieure à POLYGON, c’est-à-dire POINT ou LINESTRING. Disponibilité : 1.5.0
changement pour renvoyer un type double précision à la place de float4 Cette méthode implémente la spécification OGC
Simple Features Implementation Specification for SQL 1.1. s2.1.1.1 Cette méthode implémente la spécification SQL/MM.
SQL-MM 3 : 5.1.19
• ST_Equals - Teste si deux géométries comprennent le même ensemble de points Description Returns true if the given ge-
ometries are "topologically equal". Use this for a ’better’ answer than ’=’. Topological equality means that the geometries
have the same dimension, and their point-sets occupy the same space. This means that the order of vertices may be different
in topologically equal geometries. To verify the order of points is consistent use (it must be noted ST_OrderingEquals is a
little more stringent than simply verifying order of points are the same). In mathematical terms: ST_Equals(A, B) ⇔ A = B
The following relation holds: ST_Equals(A, B) ⇔ ST_Within(A,B) ∧ ST_Within(B,A) Amélioration : 3.0.0 a permis la prise
en charge de GEOMETRYCOLLECTION Cette méthode implémente la spécification OGC Simple Features Implementation
Specification for SQL 1.1. s2.1.1.2 Cette méthode implémente la spécification SQL/MM. SQL-MM 3: 5.1.24 Modifié : 2.2.0
Retourne vrai même pour les géométries invalides si elles sont binairement égales
• ST_ExteriorRing - Renvoie une ligne représentant l’anneau extérieur d’un polygone. Description Renvoie une LINESTRING
représentant l’anneau extérieur (coquille) d’un POLYGONE. Renvoie NULL si la géométrie n’est pas un polygone. Cette
fonction ne prend pas en charge les MULTIPOLYGONES. Pour les MULTIPOLYGONs, utilisez conjointement avec ou Cette
méthode implémente la spécification OGC Simple Features Implementation Specification for SQL 1.1. 2.1.5.1 Cette méthode
Manuel PostGIS 3.4.0dev 805 / 870
implémente la spécification SQL/MM. SQL-MM 3 : 8.2.3, 8.3.3 Cette fonction prend en charge la 3D et ne supprime
pas l’indice z.
• ST_GMLToSQL - Retourne un objet de type ST_Geometry à partir de sa représentation GML. Alias pour ST_GeomFromGML
Description Cette méthode implémente la spécification SQL/MM. SQL-MM 3 : 5.1.50 (sauf pour le support des
courbes). Disponibilité : 1.5, nécessite libxml2 1.6+ Amélioration : 2.0.0 introduction du support TIN et surfaces
polyédriques. Amélioration : 2.0.0 paramètre optionnel de srid par défaut ajouté.
• ST_GeomCollFromText - Crée une collection Geometry à partir de la collection WKT avec le SRID donné. Si le SRID
n’est pas donné, la valeur par défaut est 0. Description Crée une géométrie de collection à partir de la représentation Well-
Known-Text (WKT) avec le SRID donné. Si le SRID n’est pas donné, la valeur par défaut est 0. OGC SPEC 3.2.6.2 -
l’option SRID est issue des tests de conformité Retourne null si le WKT n’est pas une GEOMETRYCOLLECTION Si vous
êtes absolument sûrs que toutes les géométries WKT sont des collections, ne pas utiliser cette fonction. Elle est plus lente
que ST_GeomFromText à cause d’une étape de validation supplémentaire. Cette méthode implémente la spécification OGC
Simple Features Implementation Specification for SQL 1.1. s3.2.6.2 Cette méthode implémente la spécification SQL/MM.
• ST_GeomFromText - Retourne un objet ST_Geometry à partir de sa représentation textuelle Well-Known Text (WKT). De-
scription Construit un objet Postgis de type geometry à partir d’une représentation OGC Well-Known Text WKT. Il existe
deux variantes de la fonction ST_GeomFromText. La première ne prend pas de SRID et renvoie une géométrie sans système
de référence spatiale défini (SRID=0). La seconde prend un SRID comme deuxième argument et renvoie une géométrie qui
inclut ce SRID comme partie de ses métadonnées. Cette méthode implémente la spécification OGC Simple Features Imple-
mentation Specification for SQL 1.1. s3.2.6.2 - l’option SRID est issue des tests de conformité. Cette méthode implémente
la spécification SQL/MM. SQL-MM 3 : 5.1.40 Cette méthode prend en charge les types Circular String et Curve.
Bien que non conforme à l’OGC, est plus rapide que ST_GeomFromText et ST_PointFromText. Il est également plus facile à
utiliser pour les valeurs de coordonnées numériques. est une autre option similaire en vitesse à et est conforme à l’OGC, mais
ne prend pas en charge autre chose que les points 2D. Changement : 2.0.0 dans les version précédentes de PostGIS
ST_GeomFromText(’GEOMETRYCOLLECTION(EMPTY)’) etait autorisé. C’est désormais interdit dans PostGIS 2.0.0 pour
respecter la norme SQL/MM. La forme privilégiée désormais est : ST_GeomFromText(’GEOMETRYCOLLECTION
EMPTY’)
• ST_GeomFromWKB - Retourne un objet de type geometry à partir de sa représentation binaire Well-Know Binary (WKB) et
d’un SRID optionnel. Description ST_GeomFromWKB prend en paramètre une représentation binaire d’une géométrie (WKB
ou EWKB) et un SRID optionnel (SRID) et crée une instance de type geometry. Cette fonction assure le rôle de Geometry
Factory en SQL. Alias pour ST_WKBToSQL. Si le SRID n’est pas précisé, la valeur 0 (indéfini) est prise par défaut. Cette
méthode implémente la spécification OGC Simple Features Implementation Specification for SQL 1.1. s3.2.7.2 - le paramètre
optionnel est issu des tests de conformité Cette méthode implémente la spécification SQL/MM. SQL-MM 3 : 5.1.41
Cette méthode prend en charge les types Circular String et Curve.
• ST_GeometryFromText - Retourne un objet ST_Geometry à partir de sa représentation textuelle Well-Known Text (WKT).
Alias pour ST_GeomFromText Description Cette méthode implémente la spécification OGC Simple Features Implementation
Specification for SQL 1.1. Cette méthode implémente la spécification SQL/MM. SQL-MM 3 : 5.1.40
• ST_GeometryN - Renvoie un élément d’une collection de géométries. Description Renvoie la géométrie du Nième élément
basé sur 1 d’une géométrie d’entrée qui est une GEOMETRYCOLLECTION, MULTIPOINT, MULTILINESTRING, MUL-
TICURVE, MULTI)POLYGON ou POLYHEDRALSURFACE. Sinon, renvoie NULL. L’index commence à 1 pour respecter
les spécificarions OGC depuis la version 0.8.0. Dans les versions antérieures, l’index commençait à 0. Pour extraire tous les
éléments d’une géométrie, est plus efficace et fonctionne pour les géométries atomiques. Amélioration : 2.0.0 introduction
du support TIN, Triangles et surfaces polyédriques. Changement : 2.0.0. Les versions antérieures renvoient NULL
pour les géometries simples (un seul objet). Renvoie désormais la géométrie pour le cas ST_GeometryN(..,1). Cette méthode
implémente la spécification OGC Simple Features Implementation Specification for SQL 1.1. Cette méthode implémente la
spécification SQL/MM. SQL-MM 3 : 9.1.5 Cette fonction prend en charge la 3D et ne supprime pas l’indice z. Cette
méthode prend en charge les types Circular String et Curve. Cette fonction prend en charge les surfaces Polyhedral. Cette
fonction prend en charge les triangles et les réseaux irréguliers triangulés (TIN).
• ST_GeometryType - Renvoie le type SQL-MM d’une géométrie sous forme de texte. Description Renvoie le type de la
géométrie sous forme de texte, par exemple : ’ST_LineString’, ’ST_Polygon’,’ST_MultiPolygon’ etc. Cette fonction
diffère de GeometryType(geometry) par la casse du texte renvoyé et par le préfixe ST_ en début de texte. N’indique pas
si la géométrie comporte une dimension MESURE. Amélioration : 2.0.0 introduction du support des surfaces polyédriques.
Cette méthode implémente la spécification SQL/MM. SQL-MM 3 : 5.1.4 Cette fonction prend en charge la 3D et ne
supprime pas l’indice z. Cette fonction prend en charge les surfaces Polyhedral.
Manuel PostGIS 3.4.0dev 806 / 870
• ST_GetFaceEdges - Renvoie un ensemble d’arêtes ordonnées qui délimitent aface. Description Renvoie un ensemble d’arêtes
ordonnées qui délimitent aface. Chaque sortie se compose d’une séquence et d’un numéro d’arête. Les numéros de séquence
commencent par la valeur 1. L’énumération des arêtes de chaque anneau commence par l’arête dont l’identifiant est le plus
petit. L’ordre des arêtes suit la règle de la main gauche (la face liée se trouve à gauche de chaque arête dirigée). Disponibilité :
2.0 Cette méthode implémente la spécification SQL/MM. SQL-MM 3 Topo-Geo et Topo-Net 3: Routine Details: X.3.5
• ST_GetFaceGeometry - Renvoie le polygone dans la topologie donnée avec l’identifiant de face spécifié. Description Renvoie
le polygone dans la topologie donnée avec l’identifiant de face spécifié. Construit le polygone à partir des arêtes composant la
face. DIsponibilité : 1.1 Cette méthode implémente la spécification SQL/MM. SQL-MM 3 Topo-Geo et Topo-Net 3: Routine
Details: X.3.16
• ST_InitTopoGeo - Crée un nouveau schéma topologique et l’enregistre dans la table topology.topology. Description C’est
l’équivalent SQL-MM de . Il manque des options pour le système de référence spatial et la tolérance. Il renvoie une description
textuelle de la création de la topologie, au lieu de l’identifiant de la topologie. DIsponibilité : 1.1 Cette méthode implémente
la spécification SQL/MM. SQL-MM 3 Topo-Geo et Topo-Net 3 : Routine Details : X.3.17
• ST_InteriorRingN - Renvoie le Nième anneau intérieur (trou) d’un polygone. Description Renvoie le Nième anneau intérieur
(trou) d’une géométrie POLYGONE sous forme de LINESTRING. L’indice commence à 1. Renvoie NULL si la géométrie
n’est pas un polygone ou si l’indice est hors de la plage. Cette fonction ne prend pas en charge les MULTIPOLYGONES.
Pour les MULTIPOLYGONs, utilisez conjointement avec ou Cette méthode implémente la spécification OGC Simple Features
Implementation Specification for SQL 1.1. Cette méthode implémente la spécification SQL/MM. SQL-MM 3 : 8.2.6,
8.3.5 Cette fonction prend en charge la 3D et ne supprime pas l’indice z.
• ST_Intersection - Calcule une géométrie représentant la partie partagée des géométries A et B. Description Renvoie une
géométrie représentant l’intersection des points de deux géométries. En d’autres termes, la partie de la géométrie A et de
la géométrie B qui est partagée entre les deux géométries. Si les géométries n’ont aucun point commun (c’est-à-dire qu’elles
sont disjointes), une géométrie atomique vide du type approprié est renvoyée. Si l’argument optionnel gridSize est fourni, les
entrées sont placées sur une grille de la taille donnée, et les sommets du résultat sont calculés sur cette même grille. (Nécessite
GEOS-3.9.0 ou plus) ST_Intersection en conjonction avec est utile pour découper les géométries, comme dans les requêtes
sur les boîtes de délimitation, les tampons ou les régions, lorsque vous n’avez besoin que de la partie d’une géométrie qui se
trouve à l’intérieur d’un pays ou d’une région d’intérêt. For geography this is a thin wrapper around the geometry implementa-
tion. Il détermine d’abord le meilleur SRID qui correspond à la boîte de délimitation des 2 objets géographiques (si les objets
géographiques sont dans une demi-zone UTM mais pas le même UTM choisira l’un d’eux) (en favorisant UTM ou Lambert
Azimuthal Equal Area (LAEA) pôle nord/sud, et en se rabattant sur mercator dans le pire des cas) et ensuite l’intersection
dans ce ref spatial planaire le mieux adapté et retransforme à nouveau à la géographie WGS84. Cette fonction abandonne les
valeurs de coordonnées M si elles sont présentes. Si vous travaillez avec des géométries 3D, vous pouvez utiliser la fonction
basée sur SFGCAL qui réalise une intersection 3D correcte pour les géométries 3D. Bien que cette fonction fonctionne avec la
coordonnée Z, elle effectue une moyenne de la coordonnée Z. Effectué par le module GEOS Enhanced: 3.1.0 accept a gridSize
parameter Requires GEOS >= 3.9.0 to use the gridSize parameter Modifié : 3.0.0 ne dépend pas de SFCGAL. Disponibilité :
La version 1.5 a introduit la prise en charge du type de données geography. Cette méthode implémente la spécification OGC
Simple Features Implementation Specification for SQL 1.1. s2.1.1.3 Cette méthode implémente la spécification SQL/MM.
SQL-MM 3: 5.1.18 Cette fonction prend en charge la 3D et ne supprime pas l’indice z. Cependant, le résultat est calculé en
utilisant uniquement XY. Les valeurs Z résultantes sont copiées, moyennées ou interpolées.
• ST_Intersects - Teste si deux géométries se croisent (elles ont au moins un point en commun) Description Returns true if two
geometries intersect. Geometries intersect if they have any point in common. Pour les objets de type geography, une tolérance
de distance de 0,00001 mètre estTutilisée (les points très proches sont donc considérés comme se croisant). In mathematical
terms: ST_Intersects(A, B) ⇔ A B 6= ∅ Les géométries se croisent si leur matrice d’intersection DE-9IM correspond à l’un
des éléments suivants : T******** *T******* ***T***** ****T**** L’intersection spatiale est impliquée par tous les autres
tests de relations spatiales, à l’exception de , qui teste que les géométries ne se croisent PAS. Cette fonction inclut une com-
paraison de la boîte englobante qui utilise tous les index disponibles sur les géométries. Modifié : 3.0.0 La version SFCGAL a
été supprimée et la prise en charge native des TINS 2D a été ajoutée. Amélioré : 2.5.0 Supporte GEOMETRYCOLLECTION.
Amélioré : 2.3.0 Amélioration du court-circuit PIP étendu à la prise en charge des multipoints avec peu de points. Les versions
précédentes ne prenaient en charge que les points dans les polygones. Effectuée par le module GEOS (pour geometry), la
geography est native Disponibilité : la version 1.5 a introduit la prise en charge du type geography. Pour geography, cette
fonction a une tolérance de distance d’environ 0,00001 mètre et utilise la sphère plutôt que le calcul du sphéroïde. NOTE : il
s’agit de la version "autorisée" qui renvoie un booléen et non un entier. Cette méthode implémente la spécification OGC Simple
Features Implementation Specification for SQL 1.1. s2.1.1.2 //s2.1.13.3 - ST_Intersects(g1, g2 ) --> Not (ST_Disjoint(g1, g2
Manuel PostGIS 3.4.0dev 807 / 870
)) Cette méthode implémente la spécification SQL/MM. SQL-MM 3: 5.1.27 Cette méthode prend en charge les types Circular
String et Curve. Cette fonction prend en charge les triangles et les réseaux irréguliers triangulés (TIN).
• ST_IsClosed - Teste si les points de départ et d’arrivée d’une LineString coïncident. Pour une PolyhedralSurface, teste si elle est
fermée (volumétrique). Description Renvoie TRUE si les premier et dernier points de la LINESTRING sont identiques. Pour
les surface polyhédriques, indique si la surface est surfacique (ouverte) ou volumétrique (fermée). Cette méthode implémente
la spécification OGC Simple Features Implementation Specification for SQL 1.1. Cette méthode implémente la spécification
SQL/MM. SQL-MM 3 : 7.1.5, 9.3.3 La norme SQL-MM indique que le résultat de la fonction ST_IsClosed(NULL)
doit être 0 ; PostGIS renvoie NULL. Cette fonction prend en charge la 3D et ne supprime pas l’indice z. Cette méthode prend
en charge les types Circular String et Curve. Amélioration : 2.0.0 introduction du support des surfaces polyédriques. Cette
fonction prend en charge les surfaces Polyhedral.
• ST_IsEmpty - Teste si une géométrie est vide. Description Renvoie true si cette géométrie est une géométrie vide. Si vrai,
alors cette géométrie représente une collection de géométrie vide, un polygone, un point, etc. La norme SQL-MM stipule
que ST_IsEmpty(NULL) doit renvoyer 0. PostGIS renvoie NULL. Cette méthode implémente la spécification OGC Simple
Features Implementation Specification for SQL 1.1. s2.1.1.1 Cette méthode implémente la spécification SQL/MM. SQL-
MM 3 : 5.1.7 Cette méthode prend en charge les types Circular String et Curve. Modifié : 2.0.0 Dans les versions
précédentes de PostGIS, ST_GeomFromText(’GEOMETRYCOLLECTION(EMPTY)’) était autorisé. Ceci est maintenant
illégal dans PostGIS 2.0.0 pour mieux se conformer aux normes SQL/MM
• ST_IsRing - Teste si une ligne est fermée et simple. Description Renvoie TRUE si cette LINESTRING est à la fois (ST_StartPoint(g)
~= ST_Endpoint(g)) et (pas d’auto intersection). Cette méthode implémente la spécification OGC Simple Features Implemen-
tation Specification for SQL 1.1. 2.1.5.1 Cette méthode implémente la spécification SQL/MM. SQL-MM 3 : 7.1.6 La
norme SQL-MM stipule que ST_IsRing(NULL) doit renvoyer 0. PostGIS renvoie NULL.
• ST_IsSimple - Teste si une géométrie n’a pas de points d’auto-intersection ou d’auto-tangente. Description Renvoie TRUE si
cette géométrie ne présente pas d’anomalie comme une auto intersection ou des segments tangentiels. Pour plus d’information
sur les notions OGC de simplicité et de validité, se référer à "Ensuring OpenGIS compliancy of geometries" La norme SQL-
MM indique que le résultat de la fonction ST_IsSimple(NULL) doit être 0 ; PostGIS renvoie NULL. Cette méthode implémente
la spécification OGC Simple Features Implementation Specification for SQL 1.1. s2.1.1.1 Cette méthode implémente la spéci-
fication SQL/MM. SQL-MM 3 : 5.1.8 Cette fonction prend en charge la 3D et ne supprime pas l’indice z.
• ST_IsValid - Teste si une géométrie est bien formée en 2D. Description Teste si une valeur ST_Geometry est bien formée et
valide en 2D selon les règles de l’OGC. Pour les géométries à 3 et 4 dimensions, la validité est toujours testée uniquement en
2 dimensions. Pour les géométries qui ne sont pas valides, une NOTICE PostgreSQL est émise fournissant les détails de la
raison pour laquelle elle n’est pas valide. Pour la version avec le paramètre flags, les valeurs prises en charge sont documentées
dans Cette version n’imprime pas de NOTICE expliquant l’invalidité. Pour plus d’informations sur la définition de la validité
des géométries, reportez-vous à . SQL-MM définit le résultat de ST_IsValid(NULL) comme étant 0, alors que PostGIS renvoie
NULL. Effectué par le module GEOS. La version acceptant les flags est disponible à partir de la version 2.0.0. Cette méthode
implémente la spécification OGC Simple Features Implementation Specification for SQL 1.1. Cette méthode implémente la
spécification SQL/MM. SQL-MM 3 : 5.1.9 Les spécifications de l’OGC-SFS et de SQL-MM ne comprennent pas
d’argument de type flag pour ST_IsValid. L’indicateur est une extension de PostGIS.
• ST_Length - Renvoie la longueur 2D d’une géométrie linéaire. Description Pour les types geometry : renvoie la longueur
cartésienne 2D de la géométrie s’il s’agit d’une LineString, MultiLineString, ST_Curve, ST_MultiCurve. Pour les géométries
aréolaires, 0 est renvoyé ; utilisez à la place. Les unités de longueur sont déterminées par le système de référence spatial de la
géométrie. Pour les types geography : le calcul est effectué en utilisant le calcul géodésique inverse. Les unités de longueur
sont exprimées en mètres. Si PostGIS est compilé avec PROJ version 4.8.0 ou ultérieure, le sphéroïde est spécifié par le SRID,
sinon il est exclusif à WGS84. Si use_spheroid = false, le calcul est basé sur une sphère au lieu d’un sphéroïde. Actuellement,
pour la géométrie, il s’agit d’un alias de ST_Length2D, mais cela pourrait changer pour prendre en charge des dimensions plus
élevées. Modifié : 2.0.0 Rupture -- dans les versions précédentes, appliquer ceci à un MULTI/POLYGONE de type geography
donnait le périmètre du POLYGONE/MULTIPOLYGONE. Dans la version 2.0.0, cette fonction a été modifiée pour retourner
0 afin d’être en ligne avec le comportement de la géométrie. Veuillez utiliser ST_Perimeter si vous souhaitez obtenir le
périmètre d’un polygone Pour geography, le calcul utilise par défaut un modèle sphéroïdal. Pour utiliser le calcul sphérique,
plus rapide mais moins précis, utilisez ST_Length(gg,false) ; Cette méthode implémente la spécification OGC Simple Features
Implementation Specification for SQL 1.1. s2.1.5.1 Cette méthode implémente la spécification SQL/MM. SQL-MM 3: 7.1.2,
9.3.4 Disponibilité : 1.5.0 La prise en charge du type geography a été introduite dans la version 1.5.
• ST_LineFromText - Construit une géométrie à partir d’une représentation WKT avec le SRID donné. Si aucun SRID n’est
donné, la valeur par défaut est 0. Description Crée une géométrie à partir de WKT avec le SRID donné. Si le SRID n’est
Manuel PostGIS 3.4.0dev 808 / 870
pas donné, la valeur par défaut est 0. Si le WKT passé n’est pas un LINESTRING, null est retourné. OGC SPEC 3.2.6.2
- option SRID issue des tests de conformité. Si vous êtes sûrs que toutes les géométries WKT sont des LINESTRINGS, la
fonction ST_GeomFromText est plus efficace car elle ne contrôle pas le type de la géométrie renvoyée. Cette méthode implé-
mente la spécification OGC Simple Features Implementation Specification for SQL 1.1. s3.2.6.2 Cette méthode implémente la
spécification SQL/MM. SQL-MM 3 : 7.2.8
• ST_LineFromWKB - Construit une LINESTRING depuis la représentation binaire WKB et le srid donné Description ST_LineFromWK
prend en paramètre une représentation binaire d’une géométrie (WKB ou EWKB) et un SRID (SRID) et crée une instance du
bon type géométrique, en l’occurence une LINESTRING. Cette fonction assure le rôle de Geometry Factory en SQL. Si le
SRID n’est pas précisé, la valeur 0 est prise par défaut. NULL est retourné si le paramètre bytea donné ne représente pas une
LINESTRING. OGC SPEC 3.2.6.2 - option SRID issue des tests de conformité. Si vous êtes sûrs que toutes les géométries
WKT sont des LINESTRINGs, la fonction est plus efficace car elle ne contrôle pas le type de la géométrie renvoyée. Cette
méthode implémente la spécification OGC Simple Features Implementation Specification for SQL 1.1. s3.2.6.2 Cette méthode
implémente la spécification SQL/MM. SQL-MM 3 : 7.2.9
• ST_LinestringFromWKB - Construit une géométrie depuis la représentation binaire WKB et le SRID donné. Description La
fonction ST_LinestringFromWKB prend en paramètre une représentation binaire d’une géométrie (WKB ou EWKB) et un
SRID (SRID) et crée une instance du bon type géométrique, en l’occurence une LINESTRING. Cette fonction assure le rôle de
Geometry Factory en SQL. Si le SRID n’est pas précisé, la valeur 0 est prise par défaut. NULL est retourné si le paramètre bytea
donné ne représente pas une LINESTRING. Alias pour . OGC SPEC 3.2.6.2 - SRID optionnel issu des tests de conformité. Si
vous êtes sûrs que toutes les géométries WKT sont des LINESTRINGs, la fonction est plus efficace car elle ne contrôle pas le
type de la géométrie renvoyée. Cette méthode implémente la spécification OGC Simple Features Implementation Specification
for SQL 1.1. s3.2.6.2 Cette méthode implémente la spécification SQL/MM. SQL-MM 3 : 7.2.9
• ST_LocateAlong - Renvoie le(s) point(s) d’une géométrie qui correspond(ent) à une valeur de mesure. Description Renvoie
le(s) emplacement(s) le long d’une géométrie mesurée qui possède(nt) les valeurs de mesure données. Le résultat est un point
ou un multipoint. Les entrées polygonales ne sont pas prises en charge. Si offset est fourni, le résultat est décalé à gauche ou
à droite de la ligne d’entrée de la distance spécifiée. Un décalage positif se fera vers la gauche, et un décalage négatif vers la
droite. Cette fonction n’est utilisée que pour les géométries linéaires avec une composante M. La sémantique est spécifiée par
la norme ISO/IEC 13249-3 SQL/MM Spatial. Disponibilité : 1.1.0 sous l’ancien nom ST_Locate_Along_Measure. Modifié :
2.0.0 dans les versions précédentes, cette fonction était appelée ST_Locate_Along_Measure. Cette fonction prend en charge
les coordonnées M. Cette méthode implémente la spécification SQL/MM. SQL-MM IEC 13249-3: 5.1.13
• ST_LocateBetween - Renvoie les parties d’une géométrie qui correspondent à un intervalle de mesure. Description Renvoie
une géométrie (collection) contenant les parties de la géométrie mesurée en entrée qui correspondent à l’intervalle de mesure
spécifié (inclusivement). Si le offset est fourni, le résultat est décalé à gauche ou à droite de la ligne d’entrée de la distance
spécifiée. Un décalage positif se fera vers la gauche, et un décalage négatif vers la droite. Couper un POLYGONE non
convexe peut produire une géométrie non valide. La sémantique est spécifiée par la norme ISO/IEC 13249-3 SQL/MM Spatial.
Disponibilité : 1.1.0 sous l’ancien nom ST_Locate_Between_Measures. Modifié : 2.0.0 - dans les versions précédentes, cette
fonction s’appelait ST_Locate_Between_Measures. Amélioration : 3.0.0 - ajout de la prise en charge du POLYGONE, du TIN
et du TRIANGLE. Cette fonction prend en charge les coordonnées M. Cette méthode implémente la spécification SQL/MM.
SQL-MM IEC 13249-3: 5.1
• ST_M - Renvoie la coordonnée M d’un point. Description Retourne les coordonnées M d’un point, ou NULL si non disponible.
L’entrée doit être un point. Cette fonction ne fait pas (encore) partie de la spécification de l’OGC, mais elle est mentionnée
ici pour compléter la liste des fonctions de l’extracteur de coordonnées de points. Cette méthode implémente la spécification
OGC Simple Features Implementation Specification for SQL 1.1. Cette méthode implémente la spécification SQL/MM. Cette
fonction prend en charge la 3D et ne supprime pas l’indice z.
• ST_MLineFromText - Retourne un objet de type ST_MultiLineString à partir de sa représentation WKT. Description Crée une
géométrie à partir du texte connu (WKT) avec le SRID donné. Si le SRID n’est pas donné, la valeur par défaut est 0. OGC
SPEC 3.2.6.2 - l’option SRID est issue des tests de conformité Retourne NULL si le WKT n’est pas une MULTILINESTRING
Si vous êtes absolument sûrs que toutes les géométries WKT sont des points, ne pas utiliser cette fonction. Elle est plus lente
que ST_GeomFromText à cause d’une étape de validation supplémentaire. Cette méthode implémente la spécification OGC
Simple Features Implementation Specification for SQL 1.1. s3.2.6.2 Cette méthode implémente la spécification SQL/MM.
SQL-MM 3 : 9.4.4
• ST_MPointFromText - Créé une Geometry depuis un WKT avec le SRID donné. Si le SRID n’est pas fourni, il sera défini par
défaut à 0. Description Créé une Geometry depuis un WKT avec le SRID donné. Si le SRID n’est pas fourni, il sera défini
Manuel PostGIS 3.4.0dev 809 / 870
par défaut à 0. OGC SPEC 3.2.6.2 - l’option SRID est issue des tests de conformité Retourne NULL si le WKT n’est pas une
MULTIPOINT Si vous êtes absolument sûrs que toutes les géométries WKT sont des points, ne pas utiliser cette fonction. Elle
est plus lente que ST_GeomFromText à cause d’une étape de validation supplémentaire. Cette méthode implémente la spéci-
fication OGC Simple Features Implementation Specification for SQL 1.1. 3.2.6.2 Cette méthode implémente la spécification
SQL/MM. SQL-MM 3 : 9.2.4
• ST_MPolyFromText - Crée une géométrie multi-polygone à partir de WKT avec le SRID donné. Si le SRID n’est pas donné,
la valeur par défaut est 0. Description Crée un MultiPolygone à partir de WKT avec le SRID donné. Si le SRID n’est pas
donné, la valeur par défaut est 0. OGC SPEC 3.2.6.2 - l’option SRID est issue des tests de conformité Retourne une erreur si le
WKT n’est pas un MULTIPOLYGON Si vous êtes absolument sûrs que toutes les géométries WKT sont des multipolygones,
ne pas utiliser cette fonction. Elle est plus lente que ST_GeomFromText à cause d’une étape de validation supplémentaire.
Cette méthode implémente la spécification OGC Simple Features Implementation Specification for SQL 1.1. s3.2.6.2 Cette
méthode implémente la spécification SQL/MM. SQL-MM 3 : 9.6.4
• ST_ModEdgeHeal - Répare deux arêtes en supprimant le nœud qui les relie, en modifiant la première arête et en supprimant
la seconde. Renvoie l’identifiant du nœud supprimé. Description Répare deux arêtes en supprimant le nœud qui les relie, en
modifiant la première arête et en supprimant la seconde. Renvoie l’identifiant du nœud supprimé. Met à jour toutes les arêtes
jointes existantes et les relations en conséquence. Disponibilité : 2.0 Cette méthode implémente la spécification SQL/MM.
SQL-MM: Topo-Geo et Topo-Net 3: Routine Details: X.3.9
• ST_ModEdgeSplit - Fractionner une arête en créant un nouveau nœud le long d’une arête existante, en modifiant l’arête
d’origine et en ajoutant une nouvelle arête. Description Fractionner une arête en créant un nouveau nœud le long d’une arête
existante, en modifiant l’arête d’origine et en ajoutant une nouvelle arête. Cette opération met à jour toutes les arêtes jointes
existantes et les relations en conséquence. Renvoie l’identifiant du nœud nouvellement ajouté. DIsponibilité : 1.1 Modifié : 2.0
- Dans les versions antérieures, cette fonction était mal nommée ST_ModEdgesSplit Cette méthode implémente la spécification
SQL/MM. SQL-MM: Topo-Geo et Topo-Net 3: Routine Details: X.3.9
• ST_MoveIsoNode - Déplace un nœud isolé dans une topologie d’un point à un autre. Si la nouvelle géométrie apoint existe en
tant que noeud, une erreur est générée. Retourne la description du déplacement. Description Déplace un nœud isolé dans une
topologie d’un point à un autre. Si la nouvelle géométrie apoint existe en tant que noeud, une erreur est générée. Si l’un des
arguments est nul, si le apoint n’est pas un point, si le noeud existant n’est pas isolé (c’est un point de départ ou d’arrivée d’une
arête existante), si l’emplacement du nouveau noeud coupe une arête existante (même aux points d’arrivée) ou si le nouvel
emplacement se trouve dans une face différente (depuis la version 3.2.0), une exception est levée. Si le système de référence
spatiale (srid) de la géométrie du point n’est pas le même que la topologie, une exception est levée. Disponibilité : 2.0.0
Amélioration : la version 3.2.0 garantit que le nœud ne peut pas être déplacé vers une autre face Cette méthode implémente la
spécification SQL/MM. SQL-MM: Topo-Net Routines: X.3.2
• ST_NewEdgeHeal - Répare deux arêtes en supprimant le nœud qui les relie, en supprimant les deux arêtes et en les remplaçant
par une arête dont la direction est la même que la première arête fournie. Description Répare deux arêtes en supprimant le nœud
qui les relie, en supprimant les deux arêtes et en les remplaçant par une arête dont la direction est la même que la première arête
fournie. Renvoie l’identifiant de la nouvelle arête remplaçant les arêtes réparées. Met à jour toutes les arêtes jointes existantes
et les relations en conséquence. Disponibilité : 2.0 Cette méthode implémente la spécification SQL/MM. SQL-MM: Topo-Geo
et Topo-Net 3: Routine Details: X.3.9
• ST_NewEdgesSplit - Fractionne une arête en créant un nouveau nœud le long d’une arête existante, en supprimant l’arête
d’origine et en la remplaçant par deux nouvelles arêtes. Renvoie l’identifiant du nouveau nœud créé qui relie les nouvelles
arêtes. Description Divise une arête avec l’identifiant anedge en créant un nouveau noeud avec l’emplacement du point apoint
le long de l’arête actuelle, en supprimant l’arête d’origine et en la remplaçant par deux nouvelles arêtes. Renvoie l’identifiant du
nouveau nœud créé qui relie les nouvelles arêtes. Met à jour toutes les arêtes jointes existantes et les relations en conséquence.
Si le système de référence spatiale (srid) de la géométrie du point n’est pas le même que la topologie, si le apoint n’est pas
une géométrie de point, si le point est nul, si le point existe déjà en tant que nœud, si l’arête ne correspond pas à une arête
existante ou si le point n’est pas à l’intérieur de l’arête, une exception est levée. DIsponibilité : 1.1 Cette méthode implémente
la spécification SQL/MM. SQL-MM: Topo-Net Routines: X.3.8
• ST_NumGeometries - Renvoie le nombre d’éléments dans une collection de géométrie. Description Renvoie le nombre de
géométries. Si la géométrie est une GEOMETRYCOLLECTION (ou MULTI*), elle renvoie le nombre de géométries ; pour
les géométries uniques, elle renvoie 1, sinon elle renvoie NULL. Amélioration : 2.0.0 introduction du support TIN, Triangles et
surfaces polyédriques. Modifié : 2.0.0 Dans les versions précédentes, cette fonction renvoyait NULL si la géométrie n’était pas
de type collection/MULTI. 2.0.0+ renvoie maintenant 1 pour les géométries simples, par exemple POLYGONE, LINESTRING,
Manuel PostGIS 3.4.0dev 810 / 870
POINT. Cette méthode implémente la spécification SQL/MM. SQL-MM 3 : 9.1.4 Cette fonction prend en charge la
3D et ne supprime pas l’indice z. Cette fonction prend en charge les surfaces Polyhedral. Cette fonction prend en charge les
triangles et les réseaux irréguliers triangulés (TIN).
• ST_NumInteriorRings - Renvoie le nombre d’anneaux intérieurs (trous) d’un polygone. Description Renvoie le nombre
d’anneaux intérieurs d’une géométrie polygonale. Retourne NULL si la géométrie n’est pas un polygone. Cette méthode
implémente la spécification SQL/MM. SQL-MM 3 : 8.2.5 Modifié : 2.0.0 - dans les versions antérieures, il permettait
de passer un MULTIPOLYGONE, renvoyant le nombre d’anneaux intérieurs du premier POLYGONE.
• ST_NumPatches - Renvoie le nombre de faces d’une surface polyédrique. Retourne null pour les géométries non polyédriques.
Description Renvoie le nombre de faces d’une surface polyédrique. Retourne null pour les géométries non polyédriques. C’est
un alias de ST_NumGeometries pour supporter le nommage MM. Il est plus rapide d’utiliser ST_NumGeometries si vous ne
vous souciez pas de la convention MM. Disponibilité : 2.0.0 Cette fonction prend en charge la 3D et ne supprime pas l’indice
z. Cette méthode implémente la spécification OGC Simple Features Implementation Specification for SQL 1.1. Cette méthode
implémente la spécification SQL/MM. SQL-MM ISO/IEC 13249-3 : 8.5 Cette fonction prend en charge les surfaces
Polyhedral.
• ST_NumPoints - Renvoie le nombre de points dans une LineString ou une CircularString. Description Retourne le nombre de
points dans une ST_LineString ou ST_CircularString. Avant la version 1.4, cette fonction ne fonctionnait qu’avec les lignes,
comme l’indiquent les spécifications. A partir de la version 1.4, il s’agit d’un alias de ST_NPoints qui renvoie le nombre de
sommets, et pas seulement pour les lignes. Envisagez d’utiliser ST_NPoints à la place, qui est polyvalent et fonctionne avec de
nombreux types de géométrie. Cette méthode implémente la spécification OGC Simple Features Implementation Specification
for SQL 1.1. Cette méthode implémente la spécification SQL/MM. SQL-MM 3 : 7.2.4
• ST_OrderingEquals - Teste si deux géométries représentent la même géométrie et ont des points dans le même ordre direc-
tionnel Description ST_OrderingEquals compare deux géométries et renvoie t (TRUE) si les géométries sont égales et si les
coordonnées sont dans le même ordre ; sinon, il renvoie f (FALSE). Cette fonction est mise en œuvre conformément à la spécifi-
cation SQL d’ArcSDE plutôt que SQL-MM. http://edndoc.esri.com/arcsde/9.1/sql_api/sqlapi3.htm#ST_OrderingEquals Cette
méthode implémente la spécification SQL/MM. SQL-MM 3: 5.1.43
• ST_Overlaps - Teste si deux géométries ont la même dimension et se croisent, mais si chacune a au moins un point qui n’est
pas dans l’autre Description Returns TRUE if geometry A and B "spatially overlap". Two geometries overlap if they have the
same dimension, their interiors intersect in that dimension. and each has at least one point inside the other (or equivalently,
neither one covers the other). The overlaps relation is symmetric and irreflexive. In mathematical terms: ST_Overlaps(A, B)
⇔ ( dim(A) = dim(B) = dim( Int(A) Int(B) )) ∧ (A B 6= A) ∧ (A B 6= B) Cette fonction inclut une comparaison de
T T T
la boîte englobante qui utilise tous les index disponibles sur les géométries. Pour éviter l’utilisation d’un index, utilisez la
fonction _ST_Overlaps. Effectué par le module GEOS Amélioration : 3.0.0 a permis la prise en charge de GEOMETRYCOL-
LECTION NOTE : il s’agit de la version "autorisée" qui renvoie un booléen et non un entier. Cette méthode implémente la
spécification OGC Simple Features Implementation Specification for SQL 1.1. s2.1.1.2 // s2.1.13.3 Cette méthode implémente
la spécification SQL/MM. SQL-MM 3: 5.1.32
• ST_PatchN - Renvoie la Nième géométrie (face) d’une PolyhedralSurface. Description Renvoie la Nième géométrie (face)
basée sur 1 si la géométrie est une POLYHEDRALSURFACE ou une POLYHEDRALSURFACEM. Sinon, elle renvoie NULL.
Cette fonction renvoie la même réponse que ST_GeometryN pour PolyhedralSurfaces. L’utilisation de ST_GeometryN est plus
rapide. L’indice est basé sur 1. Si vous voulez extraire tous les éléments d’une géométrie, est plus efficace. Disponibilité :
2.0.0 Cette méthode implémente la spécification SQL/MM. SQL-MM ISO/IEC 13249-3 : 8.5 Cette fonction prend
en charge la 3D et ne supprime pas l’indice z. Cette fonction prend en charge les surfaces Polyhedral.
• ST_Perimeter - Renvoie la longueur de la limite d’une géométrie polygonale ou d’une géographie. Description Renvoie le
périmètre 2D d’une geometry/geography s’il s’agit d’une ST_Surface, ST_MultiSurface (Polygone, MultiPolygone). 0 est
retourné pour les géométries non réelles. Pour les géométries linéaires, utiliser . Pour les types geometry, les unités de mesure
du périmètre sont spécifiées par le système de référence spatiale de la géométrie. Pour les types geography, les calculs sont
effectués en utilisant le problème géodésique inverse, où les unités de périmètre sont en mètres. Si PostGIS est compilé avec
PROJ version 4.8.0 ou ultérieure, le sphéroïde est spécifié par le SRID, sinon il est exclusif à WGS84. Si use_spheroid = false,
les calculs approcheront une sphère au lieu d’un sphéroïde. Il s’agit actuellement d’un alias de ST_Perimeter2D, mais cela
pourrait changer pour prendre en charge des dimensions plus élevées. Cette méthode implémente la spécification OGC Simple
Features Implementation Specification for SQL 1.1. s2.1.5.1 Cette méthode implémente la spécification SQL/MM. SQL-MM
3: 8.1.3, 9.5.4 Disponibilité 2.0.0 : La prise en charge du type geography a été introduite
Manuel PostGIS 3.4.0dev 811 / 870
• ST_Point - Crée un point avec des valeurs X, Y et SRID. Description Renvoie un point avec les valeurs de coordonnées X et
Y données. C’est l’équivalent SQL-MM de qui ne prend que X et Y. Pour les coordonnées géodésiques, X est la longitude et
Y la latitude Amélioration : 3.2.0 srid a été ajouté comme argument optionnel supplémentaire. Les anciennes installations né-
cessitent une combinaison avec ST_SetSRID pour marquer le srid sur la géométrie. Cette méthode implémente la spécification
SQL/MM. SQL-MM 3 : 6.1.2
• ST_PointFromText - Construit une géométrie point à partir d’une représentation WKT et le SRID donné. Si aucun SRID n’est
donné, la valeur par défaut est 0. Description Construit un objet point ST_Geometry de PostGIS à partir de la représentation
textuelle Well-Known de l’OGC. Si le SRID n’est pas donné, il prend par défaut la valeur inconnue (actuellement 0). Si la
géométrie n’est pas une représentation de point WKT, retourne null. Si la représentation WKT n’est pas du tout valide, une
erreur est générée. Il existe 2 versions de la fonction ST_PointFromText : la première ne prend pas de SRID en
paramètre et retourne une geometry sans système de coordonnées. La seconde prend un SRID en second paramètre et retourne
une ST_Geometry incluant un SRID dans ses métadonnées. Ce SRID doit obligatoirement exister dans la table spatial_ref_sys.
Si vous êtes absolument sûrs que toutes les géométries WKT sont des points, ne pas utiliser cette fonction. Elle est plus lente
que ST_GeomFromText à cause d’une étape de validation supplémentaire. Si le point doit être construit à partir de coordonnées
latitude longitude et que la performance est recherchée, utiliser la fonction ou son équivalent OGC . Cette méthode implémente
la spécification OGC Simple Features Implementation Specification for SQL 1.1. s3.2.6.2 - l’option SRID est issue des tests
de conformité. Cette méthode implémente la spécification SQL/MM. SQL-MM 3 : 6.1.8
• ST_PointFromWKB - Construit une géométrie depuis la représentation binaire WKB et le SRID donné. Description ST_PointFromWK
prend en paramètre une représentation binaire d’une géométrie et un SRID (SRID) et crée une instance du bon type géométrique,
en l’occurence une POINT . Cette fonction assure le rôle de Geometry Factory en SQL. Si le SRID n’est pas précisé, la valeur
0 est prise par défaut. NULL est retourné si le paramètre bytea donné ne représente pas une géométrie POINT. Cette méthode
implémente la spécification OGC Simple Features Implementation Specification for SQL 1.1. s3.2.7.2 Cette méthode implé-
mente la spécification SQL/MM. SQL-MM 3 : 6.1.9 Cette fonction prend en charge la 3D et ne supprime pas l’indice
z. Cette méthode prend en charge les types Circular String et Curve.
• ST_PointN - Renvoie le Nième point de la première LineString ou LineString circulaire d’une géométrie. Description Renvoie
le Nième point d’une ligne ou d’une ligne circulaire dans la géométrie. Les valeurs négatives sont comptées à rebours à partir
de la fin de la LineString, de sorte que -1 est le dernier point. Renvoie NULL s’il n’y a pas de ligne dans la géométrie. L’index
est basé sur 1 comme pour les spécifications de l’OGC depuis la version 0.8.0. L’indexation à rebours (index négatif) n’est
pas prévue dans les spécifications de l’OGC. Les versions précédentes l’ont implémentée en la basant sur 0. Si vous souhaitez
obtenir le Nième point de chaque ligne dans une multiligne, utilisez ST_Dump en conjonction avec ST_Dump Cette méthode
implémente la spécification OGC Simple Features Implementation Specification for SQL 1.1. Cette méthode implémente la
spécification SQL/MM. SQL-MM 3 : 7.2.5, 7.3.5 Cette fonction prend en charge la 3D et ne supprime pas l’indice
z. Cette méthode prend en charge les types Circular String et Curve. Modifié : la version 2.0.0 ne fonctionne plus avec
les multi-lignes à géométrie unique. Dans les anciennes versions de PostGIS, une multi-ligne d’une seule ligne fonctionnait
parfaitement avec cette fonction et renvoyait le point de départ. Dans la version 2.0.0, elle renvoie simplement NULL comme
n’importe quelle autre multi-ligne. Modifié : 2.3.0 : indexation négative disponible (-1 est le dernier point)
• ST_PointOnSurface - Calcule un point dont on garantit qu’il se trouve dans un polygone ou sur une géométrie. Description
Renvoie un POINT dont il est garanti qu’il se trouve à l’intérieur d’une surface (POLYGON, MULTIPOLYGON et CURVED
POLYGON). Dans PostGIS, cette fonction fonctionne également pour les géométries de lignes et de points. Cette méthode
implémente la spécification OGC Simple Features Implementation Specification for SQL 1.1. s3.2.14.2 // s3.2.18.2 Cette
méthode implémente la spécification SQL/MM. SQL-MM 3: 8.1.5, 9.5.6. Les spécifications définissent ST_PointOnSurface
pour les géométries de surface uniquement. PostGIS étend la fonction pour prendre en charge tous les types de géométrie
courants. D’autres bases de données (Oracle, DB2, ArcSDE) semblent ne prendre en charge cette fonction que pour les
surfaces. SQL Server 2008 prend en charge tous les types de géométrie courants. Cette fonction prend en charge la 3D et ne
supprime pas l’indice z.
• ST_Polygon - Crée un polygone à partir d’une LineString avec un SRID spécifié. Description Renvoie un polygone construit
à partir de la LineString donnée et définit le système de référence spatiale à partir du srid. ST_Polygon est similaire à la
variante 1 de avec l’ajout de la définition du SRID. Pour créer des polygones avec des trous, utilisez la variante 2 et ensuite
. Cette fonction n’accepte pas les MultiLineStrings. Utilisez pour générer une LineString, ou pour extraire les LineStrings.
Cette méthode implémente la spécification OGC Simple Features Implementation Specification for SQL 1.1. Cette méthode
implémente la spécification SQL/MM. SQL-MM 3 : 8.3.2 Cette fonction prend en charge la 3D et ne supprime pas
l’indice z.
Manuel PostGIS 3.4.0dev 812 / 870
• ST_PolygonFromText - Créé une Geometry depuis un WKT avec le SRID donné. Si le SRID n’est pas fourni, il sera défini
par défaut à 0. Description Crée une géométrie à partir de WKT avec le SRID donné. Si le SRID n’est pas donné, la valeur
par défaut est 0. Retourne null si WKT n’est pas un polygone. OGC SPEC 3.2.6.2 - l’option SRID est issue des tests de
conformité Si vous êtes absolument sûrs que toutes les géométries WKT sont des polygones, ne pas utiliser cette fonction. Elle
est plus lente que ST_GeomFromText à cause d’une étape de validation supplémentaire. Cette méthode implémente la spéci-
fication OGC Simple Features Implementation Specification for SQL 1.1. s3.2.6.2 Cette méthode implémente la spécification
SQL/MM. SQL-MM 3 : 8.3.6
• ST_Relate - Teste si deux géométries ont une relation topologique correspondant à un modèle de matrice d’intersection, ou
calcule leur matrice d’intersection Description Ces fonctions permettent de tester et d’évaluer la relation spatiale (topologique)
entre deux géométries, telle que définie par le Dimensionally Extended 9-Intersection Model (DE-9IM). Le DE-9IM est une
matrice à 9 éléments indiquant la dimension des intersections entre l’intérieur, la frontière et l’extérieur de deux géométries.
Elle est représentée par une chaîne de texte de 9 caractères utilisant les symboles "F", "0", "1", "2" (par exemple, ’FF1FF0102’).
Un type spécifique de relation spatiale peut être testé en faisant correspondre la matrice d’intersection à un motif de matrice
d’intersection. Les motifs peuvent inclure les symboles supplémentaires "T" (signifiant "l’intersection est non vide") et "*"
(signifiant "n’importe quelle valeur"). Les relations spatiales communes sont fournies par les fonctions nommées , , , , , , ,
, , , et . L’utilisation d’un modèle explicite permet de tester plusieurs conditions d’intersection, de croisement, etc. en une
seule étape. Elle permet également de tester des relations spatiales qui n’ont pas de fonction de relation spatiale nommée. Par
exemple, la relation "Interior-Intersects" possède le motif DE-9IM T********, qui n’est évalué par aucun prédicat nommé.
Pour plus d’informations, voir . Variante 1: Teste si deux géométries sont spatialement liées selon le intersectionMatrixPattern
donné. Contrairement à la plupart des prédicats de relations spatiales nommées, ce prédicat n’inclut PAS automatiquement un
appel d’index. La raison en est que certaines relations sont vraies pour des géométries qui ne s’intersectent PAS (par exemple
Disjoint). Si vous utilisez un modèle de relation qui nécessite une intersection, incluez l’appel à l’index &&. Il est préférable
d’utiliser une fonction de relation nommée si elle est disponible, car elle utilise automatiquement un index spatial lorsqu’il
existe. En outre, elles peuvent mettre en œuvre des optimisations de performance qui ne sont pas disponibles avec l’évaluation
de la relation complète. Variante 2: Renvoie la chaîne matricielle DE-9IM pour la relation spatiale entre les deux géométries
d’entrée. La chaîne matricielle peut être testée pour vérifier si elle correspond à un modèle DE-9IM en utilisant . Variante
3: Comme la variante 2, mais permet de spécifier une Boundary Node Rule. Une boundary node rule permet de contrôler
plus finement si les extrémités des multilignes sont considérées comme se situant à l’intérieur ou à la limite du DE-9IM. Les
valeurs de boundaryNodeRule sont les suivantes : 1 : OGC-Mod2 - les extrémités des lignes sont dans la frontière si elles
apparaissent un nombre impair de fois. C’est la règle définie par la norme SFS de l’OGC, et c’est la valeur par défaut de la
ST_Relate. 2 : Endpoint - tous les points d’extrémité sont dans la frontière. 3 : MultivalentEndpoint - les points d’extrémité
sont dans la frontière s’ils apparaissent plus d’une fois. En d’autres termes, la frontière est constituée de tous les points
d’extrémité "attachés" ou "internes" (mais pas des points d’extrémité "non attachés/externes"). 4 : MonovalentEndpoint - les
points d’extrémité sont dans la frontière s’ils n’apparaissent qu’une seule fois. En d’autres termes, la frontière est constituée de
tous les points d’extrémité "non attachés" ou "extérieurs". Cette fonction ne figure pas dans la spécification de l’OGC, mais elle
est implicite. voir s2.1.13.2 Cette méthode implémente la spécification OGC Simple Features Implementation Specification
for SQL 1.1. s2.1.1.2 // s2.1.13.3 Cette méthode implémente la spécification SQL/MM. SQL-MM 3 : 5.1.25 Effectué
par le module GEOS Amélioration : 2.0.0 - ajout de la prise en charge de la spécification de boundary node rule. Amélioration
: 3.0.0 a permis la prise en charge de GEOMETRYCOLLECTION
• ST_RemEdgeModFace - Supprime une arête et, si l’arête sépare deux faces, supprime une face et modifie l’autre face pour
couvrir l’espace des deux. Description Supprime une arête et, si l’arête supprimée sépare deux faces, supprime une face et
modifie l’autre face pour couvrir l’espace des deux. La face de droite est conservée de préférence, par souci de cohérence
avec . Renvoie l’identifiant de la face conservée. Met à jour toutes les arêtes jointes existantes et les relations en conséquence.
Refuse de supprimer une arête participant à la définition d’une TopoGeometry existante. Refuse de recoller deux faces si une
TopoGeometry n’est définie que par l’une d’entre elles (et non par l’autre). Si l’un des arguments est nul, si l’arête donnée
est inconnue (elle doit déjà exister dans la table edge du schéma topologique), si le nom de la topologie n’est pas valide, une
erreur est générée. Disponibilité : 2.0 Cette méthode implémente la spécification SQL/MM. SQL-MM: Topo-Geo et Topo-Net
3: Routine Details: X.3.15
• ST_RemEdgeNewFace - Enlève une arête et, si l’arête enlevée séparait deux faces, supprime les faces originales et les remplace
par une nouvelle face. Description Supprime une arête et, si l’arête supprimée séparait deux faces, supprime les faces originales
et les remplace par une nouvelle face. Renvoie l’identifiant d’une face nouvellement créée ou NULL, si aucune nouvelle face
n’est créée. Aucune nouvelle face n’est créée lorsque l’arête supprimée est pendante, isolée ou confinée avec la face de l’univers
(ce qui peut entraîner "l’inondation de la face" de l’autre côté de l’univers). Met à jour toutes les arêtes jointes existantes et les
relations en conséquence. Refuse de supprimer une arête participant à la définition d’une TopoGeometry existante. Refuse de
recoller deux faces si une TopoGeometry n’est définie que par l’une d’entre elles (et non par l’autre). Si l’un des arguments est
Manuel PostGIS 3.4.0dev 813 / 870
nul, si l’arête donnée est inconnue (elle doit déjà exister dans la table edge du schéma topologique), si le nom de la topologie
n’est pas valide, une erreur est générée. Disponibilité : 2.0 Cette méthode implémente la spécification SQL/MM. SQL-MM:
Topo-Geo et Topo-Net 3: Routine Details: X.3.14
• ST_RemoveIsoEdge - Supprime une arête isolée et renvoie la description de l’action. Si l’arête n’est pas isolée, une exception
est levée. Description Supprime une arête isolée et renvoie la description de l’action. Si l’arête n’est pas isolée, une exception
est levée. DIsponibilité : 1.1 Cette méthode implémente la spécification SQL/MM. SQL-MM: Topo-Geo et Topo-Net 3:
Routine Details: X+1.3.3
• ST_RemoveIsoNode - Supprime un noeud isolé et renvoie la description de l’action. Si le noeud n’est pas isolé (début ou fin
d’une arête), une exception est levée. Description Supprime un noeud isolé et renvoie la description de l’action. Si le nœud
n’est pas isolé (est le début ou la fin d’une arête), une exception est levée. DIsponibilité : 1.1 Cette méthode implémente la
spécification SQL/MM. SQL-MM: Topo-Geo et Topo-Net 3: Routine Details: X+1.3.3
• ST_SRID - Renvoie l’identifiant de référence spatiale d’une géométrie. Description Renvoie l’identifiant de référence spatiale
pour la ST_Geometry tel que défini dans la table spatial_ref_sys. La table spatial_ref_sys est une table qui répertorie tous les
systèmes de référence spatiale connus de PostGIS et qui est utilisée pour les transformations d’un système de référence spatiale
à un autre. Il est donc important de vérifier que vous disposez du bon identifiant de système de référence spatiale si vous
envisagez de transformer vos géométries. Cette méthode implémente la spécification OGC Simple Features Implementation
Specification for SQL 1.1. s2.1.1.1 Cette méthode implémente la spécification SQL/MM. SQL-MM 3 : 5.1.5 Cette
méthode prend en charge les types Circular String et Curve.
• ST_StartPoint - Renvoie le premier point d’une LineString. Description Renvoie le premier point d’une géométrie LINESTRING
ou CIRCULARLINESTRING comme un POINT. Renvoie NULL si l’entrée n’est pas une LINESTRING ou CIRCULAR-
LINESTRING. Cette méthode implémente la spécification SQL/MM. SQL-MM 3 : 7.1.3 Cette fonction prend en
charge la 3D et ne supprime pas l’indice z. Cette méthode prend en charge les types Circular String et Curve. Amélioré :
3.2.0 renvoie un point pour toutes les géométries. Le comportement précédent renvoyait NULL si l’entrée n’était pas une
LineString. Modifié : 2.0.0 ne fonctionne plus avec les MultiLineStrings à géométrie unique. Dans les anciennes versions
de PostGIS, une MultiLineString à géométrie unique fonctionnait sans problème avec cette fonction et renvoyait le point de
départ. Dans la version 2.0.0, elle renvoie simplement NULL comme toute autre MultiLineString. L’ancien comportement
était une fonctionnalité non documentée, mais les personnes qui supposaient que leurs données étaient stockées en tant que
LINESTRING peuvent voir ces données retourner NULL dans la version 2.0.0.
• ST_SymDifference - Calcule une géométrie représentant les parties des géométries A et B qui ne s’intersectent pas. De-
scription Renvoie une géométrie représentant les parties des géométries A et B qui ne s’intersectent pas. Ceci est équivalent à
ST_Union(A,B) - ST_Intersection(A,B). On parle de différence symétrique car ST_SymDifférence(A,B) = ST_SymDifférence(B,A).
Si l’argument optionnel gridSize est fourni, les entrées sont placées sur une grille de la taille donnée, et les sommets du résultat
sont calculés sur cette même grille. (Nécessite GEOS-3.9.0 ou plus) Effectué par le module GEOS Enhanced: 3.1.0 accept a
gridSize parameter. Requires GEOS >= 3.9.0 to use the gridSize parameter Cette méthode implémente la spécification OGC
Simple Features Implementation Specification for SQL 1.1. s2.1.1.3 Cette méthode implémente la spécification SQL/MM.
SQL-MM 3: 5.1.21 Cette fonction prend en charge la 3D et ne supprime pas l’indice z. Cependant, le résultat est calculé en
utilisant uniquement XY. Les valeurs Z résultantes sont copiées, moyennées ou interpolées.
• ST_Touches - Teste si deux géométries ont au moins un point en commun, mais que leurs intérieurs ne se croisent pas De-
scription Retourne TRUE si A et B se croisent, mais que leurs intérieurs ne se croisent pas. De manière équivalente, A et B ont
au moins un point en commun, et les points communs se situent dans au moins une frontière. Pour les entrées point/point, la
relation est toujours FALSE, puisque les points n’ont pas de frontière. In mathematical terms: ST_Touches(A, B) ⇔ (Int(A)
T
Int(B) 6= ∅) ∧ (A B 6= ∅) Cette relation est valable si la matrice d’intersection DE-9IM pour les deux géométries correspond
T
à l’une d’entre elles : FT******* F**T***** F***T**** Cette fonction inclut une comparaison de la boîte englobante qui
utilise tous les index disponibles sur les géométries. Pour éviter d’utiliser un index, utilisez plutôt la _ST_Touches. Amélio-
ration : 3.0.0 a permis la prise en charge de GEOMETRYCOLLECTION Cette méthode implémente la spécification OGC
Simple Features Implementation Specification for SQL 1.1. s2.1.1.2 // s2.1.13.3 Cette méthode implémente la spécification
SQL/MM. SQL-MM 3: 5.1.28
• ST_Transform - Renvoie une nouvelle géométrie dont les coordonnées ont été transformées dans un système de référence
spatial différent. Description Renvoie une nouvelle géométrie dont les coordonnées ont été transformées dans un système de
référence spatiale différent. La référence spatiale de destination to_srid peut être identifiée par un paramètre entier SRID valide
(c’est-à-dire qu’elle doit exister dans la table spatial_ref_sys). Il est également possible d’utiliser une référence spatiale définie
comme une chaîne PROJ.4 pour to_proj et/ou from_proj, mais ces méthodes ne sont pas optimisées. Si le système de référence
Manuel PostGIS 3.4.0dev 814 / 870
spatiale de destination est exprimé avec une chaîne PROJ.4 au lieu d’un SRID, le SRID de la géométrie de sortie sera mis à zéro.
A l’exception des fonctions avec from_proj, les géométries d’entrée doivent avoir un SRID défini. ST_Transform est souvent
confondu avec . ST_Transform modifie en fait les coordonnées d’une géométrie d’un système de référence spatiale à un autre,
tandis que ST_SetSRID() modifie simplement l’identifiant SRID de la géométrie. ST_Transform sélectionne automatiquement
un pipeline de conversion approprié en fonction des systèmes de référence spatiale source et cible. Pour utiliser une méthode de
conversion spécifique, utilisez . PostGIS doit être compilé avec le support PROJ. Utilisez pour confirmer que vous avez compilé
le support PROJ. Si l’on utilise plus d’une transformation, il est utile de disposer d’un index fonctionnel sur les transformations
les plus couramment utilisées afin de tirer parti de l’utilisation de l’index. Avant la version 1.3.4, cette fonction se bloquait si
elle était utilisée avec des géométries contenant des CURVES. Ce problème est corrigé dans la version 1.3.4+ Amélioration :
2.0.0 introduction du support des surfaces polyédriques. Amélioration : la version 2.3.0 a introduit la prise en charge du texte
PROJ.4 direct. Cette méthode implémente la spécification SQL/MM. SQL-MM 3: 5.1.6 Cette méthode prend en charge les
types Circular String et Curve. Cette fonction prend en charge les surfaces Polyhedral.
• ST_Union - Calcule une géométrie représentant l’union des ensembles de points des géométries d’entrée. Description Unifie
les géométries d’entrée, fusionne les géométries pour produire une géométrie de résultat sans chevauchement. Le résultat
peut être une géométrie atomique, une MultiGeometry ou une Geometry Collection. Il existe plusieurs variantes : Vari-
ante à deux entrées: renvoie une géométrie qui est l’union de deux géométries d’entrée. Si l’une des entrées est NULL,
NULL est renvoyé. Variante tableau: renvoie une géométrie qui est l’union d’un tableau de géométries. Variante agrégée:
renvoie une géométrie qui est l’union d’un ensemble de géométries. La fonction ST_Union() est une fonction "agrégée"
dans la terminologie de PostgreSQL. Cela signifie qu’elle opère sur des lignes de données, de la même manière que les
fonctions SUM() et AVG() et, comme la plupart des agrégats, elle ignore les géométries NULL. Voir pour une variante non
agrégée, à entrée unique. Le tableau ST_Union et ses variantes utilisent l’algorithme rapide d’union en cascade décrit dans
http://blog.cleverelephant.ca/2009/01/must-faster-unions-in-postgis-14.html. Un gridSize peut être spécifiée pour travailler
dans un espace de précision fixe. Les entrées sont placées sur une grille de la taille donnée, et les sommets du résultat sont
calculés sur cette même grille. (Nécessite GEOS-3.9.0 ou plus) peut parfois être utilisé à la place de ST_Union, si le résultat
n’a pas besoin d’être non chevauchant. ST_Collect est généralement plus rapide que ST_Union car il n’effectue aucun traite-
ment sur les géométries collectées. Effectué par le module GEOS. ST_Union crée une MultiLineString et ne fusionne pas
les LineStrings en une seule LineString. Utilisez pour fusionner les LineStrings. NOTE : cette fonction s’appelait auparavant
GeomUnion(), qui a été renommée "Union" car UNION est un mot réservé de SQL. Enhanced: 3.1.0 accept a gridSize pa-
rameter. Requires GEOS >= 3.9.0 to use the gridSize parameter Modifié : 3.0.0 ne dépend pas de SFCGAL. Disponibilité :
1.4.0 - ST_Union a été amélioré. ST_Union(geomarray) a été introduit ainsi qu’une collecte d’agrégats plus rapide dans Post-
greSQL. Cette méthode implémente la spécification OGC Simple Features Implementation Specification for SQL 1.1. s2.1.1.3
La version agrégée n’est pas explicitement définie dans l’OGC SPEC. Cette méthode implémente la spécification SQL/MM.
SQL-MM 3 : 5.1.19 l’indice z (élévation) lorsque des polygones sont impliqués. Cette fonction prend en charge la 3D et ne
supprime pas l’indice z. Cependant, le résultat est calculé en utilisant uniquement XY. Les valeurs Z résultantes sont copiées,
moyennées ou interpolées.
• ST_Volume - Calcule le volume d’un solide 3D. S’il est appliqué à des géométries de surface (même fermées), il renvoie 0.
Description Disponibilité : 2.2.0 Cette méthode nécessite le backend SFCGAL. Cette fonction prend en charge la 3D et ne
supprime pas l’indice z. Cette fonction prend en charge les surfaces Polyhedral. Cette fonction prend en charge les triangles
et les réseaux irréguliers triangulés (TIN). Cette méthode implémente la spécification SQL/MM. SQL-MM IEC 13249-3 : 9.1
(identique à ST_3DVolume)
• ST_WKBToSQL - Retourne un objet ST_Geometry à partir de sa représentation textuelle Well-Known Binary (WKB). Alias
pour ST_GeomFromWKB sans SRID Description Cette méthode implémente la spécification SQL/MM. SQL-MM 3 :
5.1.36
• ST_WKTToSQL - Retourne un objet ST_Geometry à partir de sa représentation textuelle Well-Known Text (WKT). Alias
pour ST_GeomFromText Description Cette méthode implémente la spécification SQL/MM. SQL-MM 3 : 5.1.34
• ST_Within - Tests si chaque point de A se trouve dans B, et que leurs intérieurs ont un point commun Description Renvoie
TRUE si la géométrie A est à l’intérieur de la géométrie B. A est à l’intérieur de B si et seulement si tous les points de A se
trouvent à l’intérieur (c’est-à-dire à l’intérieur ou à la limite) de B (ou de manière équivalente, aucun point de A ne se trouve
à l’extérieur de B), et si les intérieurs de A et de B ont au moins un point en commun. Pour que cette fonction ait un sens, les
géométries sources doivent toutes deux avoir la même projection de coordonnées et le même SRID. In mathematical terms:
ST_Within(A, B) ⇔ (A B = A) ∧ (Int(A) Int(B) 6= ∅) The within relation is reflexive: every geometry is within itself. The
T T
relation is antisymmetric: if ST_Within(A,B) = true and ST_Within(B,A) = true, then the two geometries must be topologically
equal (ST_Equals(A,B) = true). ST_Within est le contraire de . Ainsi, ST_Within(A,B) = ST_Contains(B,A). Comme les
intérieurs doivent avoir un point commun, une subtilité de la définition est que les lignes et les points situés entièrement dans
Manuel PostGIS 3.4.0dev 815 / 870
la limite des polygones ou des lignes ne sont pas à l’intérieur de la géométrie. Pour plus de détails, voir Subtleties of OGC
Covers, Contains, Within. Le prédicat fournit une relation plus inclusive. Cette fonction inclut une comparaison de la boîte
englobante qui utilise tous les index disponibles sur les géométries. Pour éviter l’utilisation d’un index, utilisez la fonction
_ST_Within. Effectué par le module GEOS Amélioration : 2.3.0 Amélioration du court-circuit PIP pour la géométrie étendue
à la prise en charge des multipoints avec peu de points. Les versions précédentes ne prenaient en charge que les points dans les
polygones. Amélioration : 3.0.0 a permis la prise en charge de GEOMETRYCOLLECTION N’utilisez pas cette fonction avec
des géométries non valides. Vous obtiendrez des résultats inattendus. NOTE : il s’agit de la version "autorisée" qui renvoie un
booléen et non un entier. Cette méthode implémente la spécification OGC Simple Features Implementation Specification for
SQL 1.1. s2.1.1.2 // s2.1.13.3 - a.Relate(b, ’T*F**F***’) Cette méthode implémente la spécification SQL/MM. SQL-MM 3:
5.1.30
• ST_X - Renvoie la coordonnée X d’un point. Description Renvoie la coordonnée X du point, ou NULL si elle n’est pas
disponible. L’entrée doit être un point. Pour obtenir les valeurs X minimale et maximale des coordonnées géométriques,
utilisez les fonctions et . Cette méthode implémente la spécification SQL/MM. SQL-MM 3 : 6.1.3 Cette fonction
prend en charge la 3D et ne supprime pas l’indice z.
• ST_Y - Renvoie la coordonnée Y d’un point. Description Renvoie la coordonnée Y du point, ou NULL si elle n’est pas
disponible. L’entrée doit être un point. Pour obtenir les valeurs minimale et maximale en Y des coordonnées géométriques,
utilisez les fonctions et . Cette méthode implémente la spécification OGC Simple Features Implementation Specification for
SQL 1.1. Cette méthode implémente la spécification SQL/MM. SQL-MM 3 : 6.1.4 Cette fonction prend en charge la
3D et ne supprime pas l’indice z.
• ST_Z - Renvoie la coordonnée Z d’un point. Description Renvoie la coordonnée Z du point, ou NULL si elle n’est pas
disponible. L’entrée doit être un point. Pour obtenir les valeurs minimale et maximale de Z des coordonnées géométriques,
utilisez les fonctions et . Cette méthode implémente la spécification SQL/MM. Cette fonction prend en charge la 3D et ne
supprime pas l’indice z.
• TG_ST_SRID - Renvoie l’identifiant de référence spatiale d’une topogeometry. Description Renvoie l’identifiant de référence
spatiale pour la ST_Geometry tel que défini dans la table spatial_ref_sys. La table spatial_ref_sys est une table qui répertorie
tous les systèmes de référence spatiale connus de PostGIS et qui est utilisée pour les transformations d’un système de référence
spatiale à un autre. Il est donc important de vérifier que vous disposez du bon identifiant de système de référence spatiale
si vous envisagez de transformer vos géométries. Disponibilité : 3.2.0 Cette méthode implémente la spécification SQL/MM.
SQL-MM 3: 14.1.5
Les fonctions et opérateurs ci-dessous sont des fonctions/opérateurs PostGIS qui prennent en entrée ou renvoient en sortie un
objet de type geography.
Note
Les fonctions avec un (T) ne sont pas des fonctions géodésiques natives, et utilisent un appel ST_Transform vers
et depuis la géométrie pour effectuer l’opération. Par conséquent, elles peuvent ne pas se comporter comme prévu
lorsque l’on passe au-dessus de la ligne de base, des pôles, et pour les grandes géométries ou les paires de géométries
qui couvrent plus d’une zone UTM. Transformation de base - (favorisant l’UTM, l’azimut Lambert (Nord/Sud), et se
rabattant sur le mercator dans le pire des cas)
• ST_AsEWKT - Renvoie la représentation Well-Known Text (WKT) de la géométrie avec les métadonnées SRID.
• ST_AsGML - Renvoyer la géométrie en tant qu’élément GML version 2 ou 3.
• ST_AsGeoJSON - Renvoie une géométrie sous la forme d’un élément GeoJSON.
Manuel PostGIS 3.4.0dev 816 / 870
• ST_Azimuth - Renvoie l’azimut basé sur le nord d’une ligne entre deux points.
• ST_Buffer - Calcule une géométrie couvrant tous les points situés à une distance donnée d’une géométrie.
• ST_Centroid - Renvoie le centre géométrique d’une géométrie.
• ST_ClosestPoint - Renvoie le point 2D sur g1 qui est le plus proche de g2. Il s’agit du premier point de la ligne la plus courte
d’une géométrie à l’autre.
• ST_CoveredBy - Tests si chaque point de A se trouve dans B
• ST_Covers - Tests si chaque point de B est situé dans A
Les fonctions et opérateurs ci-dessous sont des fonctions/opérateurs PostGIS qui prennent en entrée ou renvoient en sortie un
objet de type raster. Ils sont classés par ordre alphabétique.
• = - Retourne TRUE si la boîte englobante de A est la même que celle de B. Utilise des boîtes englobantes en double précision.
• && - Retourne TRUE si la boite englobante de A intersecte la boite englobante de B.
• &< - Retourne TRUE si la boîte englobante de A est à gauche de celle de B.
• ST_AsPNG - Retourne les bandes sélectionnées du raster sous la forme d’une image PNG (sous forme de tableau d’octets). Si
aucune bande n’est spécifiée et que le raster a 1, 3 ou 4 bandes, toutes les bandes sont utilisées. Si aucune bande n’est spécifiée
et que le raster a 2 ou plus de 4 bandes, seule la bande 1 est utilisée. Les bandes sont mappées en RGB ou RGBA.
• ST_AsRaster - Convertit une géométrie PostGIS en un raster PostGIS.
• ST_AsTIFF - Retourne les bandes sélectionnées du raster sous la forme d’une seule image TIFF (sous forme de tableau
d’octets). Si aucune bande n’est spécifiée ou si l’une des bandes spécifiées n’existe pas dans le raster, toutes les bandes sont
utilisées.
• ST_Aspect - Retourne l’exposition (par défaut, en degrés) d’une bande raster d’élévation. Utile pour l’analyse de terrain.
• ST_Band - Retourne une ou plusieurs bandes d’un raster existant en tant que nouveau raster. Utile pour construire de nouveaux
rasters à partir de rasters existants.
• ST_BandFileSize - Retourne la taille du fichier d’une bande stockée sur le système de fichier. Si aucune bande n’est spécifiée,
la bande 1 est utilisée.
• ST_BandFileTimestamp - Retourne le timestamp du fichier d’une bande stockée sur le système de fichier. Si aucune bande
n’est spécifiée, la bande 1 est utilisée.
• ST_BandIsNoData - Retourne true si la bande ne contient que des valeurs nodata.
• ST_BandMetaData - Retourne les méta-données de base d’une bande raster spécifique. Si aucune bande n’est spécifiée, la
bande 1 est utilisée.
Manuel PostGIS 3.4.0dev 818 / 870
• ST_BandNoDataValue - Retourne la valeur qui représente l’absence de valeur (nodata) pour cette bande. Si aucune bande n’est
spécifiée, la bande 1 est utilisée.
• ST_BandPath - Retourne le chemin système du fichier d’une bande stockée sur le système de fichier. Si aucune bande n’est
spécifiée, la bande 1 est utilisée.
• ST_BandPixelType - Retourne le type de pixel d’une bande. Si aucune bande n’est spécifiée, la bande 1 est utilisée.
• ST_Clip - Retourne le raster coupé par la géométrie d’entrée. Si le numéro de bande n’est pas spécifié, toutes les bandes sont
traitées. Si crop n’est pas spécifié ou est TRUE, le raster de sortie est recadré.
• ST_ColorMap - Crée un nouveau raster comprenant jusqu’à quatre bandes 8BUI (niveaux de gris, RGB, RGBA) à partir du
raster source et d’une bande spécifiée. Si aucune bande n’est spécifiée, la bande 1 est utilisée.
• ST_Contains - Retourne true si aucun point du raster rastB ne se trouve à l’extérieur du raster rastA et si au moins un point de
l’intérieur du raster rastB se trouve à l’intérieur du raster rastA.
• ST_ContainsProperly - Retourne true si rastB intersecte l’intérieur de rastA, mais pas la frontière ou l’extérieur de rastA.
• ST_Contour - Génère un ensemble de courbes de niveau vectorielles depuis la bande raster spécifiée, en utilisant l’algorithme
de contour GDAL.
• ST_ConvexHull - Retourne l’enveloppe convexe du raster, en incluant les valeurs de pixels égales à BandNoDataValue. Pour
les données raster de forme régulière et sans obliquité, cette fonction donne le même résultat que ST_Envelope ; elle n’est donc
utile que pour les données raster de forme irrégulière ou inclinée.
• ST_Count - Renvoie le nombre de pixels dans une bande donnée d’un raster ou d’une couverture raster. Si aucune bande n’est
spécifiée, la valeur par défaut est la bande 1. Si exclude_nodata_value est true, seuls les pixels dont la valeur est différente de
la valeur nodata seront comptés.
• ST_CountAgg - Agrégat. Renvoie le nombre de pixels dans une bande donnée d’un ensemble de rasters. Si aucune bande n’est
spécifiée, la valeur par défaut est la bande 1. Si exclude_nodata_value est true, seuls les pixels différents de la valeur NODATA
seront comptés.
• ST_CoveredBy - Retourne true si aucun point du raster rastA ne se trouve à l’extérieur du raster rastB.
• ST_Covers - Retourne true si aucun point du raster rastB ne se trouve à l’extérieur du raster rastA.
• ST_DFullyWithin - Retourne true si les rasters rastA et rastB se trouvent entièrement à une distance donnée l’un de l’autre.
• ST_DWithin - Retourne true si les rasters rastA et rastB se trouvent à une distance donnée l’un de l’autre.
• ST_Disjoint - Retourne true si le raster rastA n’intersecte pas spatialement le rastB.
• ST_DumpAsPolygons - Retourne un ensemble d’enregistrements de type geomval (geom, val), à partir d’une bande raster
donnée. Si aucune bande bandnum n’est spécifiée, la bande 1 est utilisée.
• ST_DumpValues - Retourne les valeurs d’une bande raster spécifiée, sous forme d’un tableau à deux dimensions.
• ST_Envelope - Retourne la représentation polygonale de l’étendue du raster.
• ST_FromGDALRaster - Retourne un raster depuis un fichier raster supporté par GDAL.
• ST_GeoReference - Retourne les méta-données de géo-référencement au format GDAL (par défaut) ou ESRI, tel qu’utilisé
généralement dans les fichiers world file.
• ST_Grayscale - Crée un nouveau raster à 1 bande 8BUI à partir du raster source et des bandes spécifiées représentant les
composantes rouge, vert et bleu
• ST_HasNoBand - Retourne true si le raster n’a pas la bande spécifiée. Si aucune bande n’est spécifiée, la bande 1 est utilisée.
• ST_Height - Retourne la hauteur du raster en pixels.
• ST_HillShade - Retourne l’hypothétique éclairage d’une bande raster d’élévation en utilisant les valeurs d’azimut, d’altitude,
de luminosité et d’échelle fournies.
Manuel PostGIS 3.4.0dev 819 / 870
• ST_Histogram - Retourne un ensemble d’enregistrements résumant une distribution de données raster ou de couverture raster,
dans des classes distinctes. Le nombre de classes est calculé automatiquement s’il n’est pas spécifié.
• ST_InterpolateRaster - Interpole une surface quadrillée à partir d’un ensemble de points 3-d, en utilisant les coordonnées X et
Y des points sur la grille et la coordonnée Z des points pour l’élévation des points.
• ST_Intersection - Retourne un raster ou un ensemble de paires (géométrie, valeur de pixel) représentant la partie partagée de
deux rasters ou l’intersection géométrique d’une vectorisation du raster et d’une géométrie.
• ST_Intersects - Retourne vrai si le raster rastA intersecte spatialement le raster rastB.
• ST_IsEmpty - Retourne true si le raster est vide (largeur = 0 et hauteur = 0). Sinon, retourne false.
• ST_MakeEmptyCoverage - Couvre une zone géo-référencée avec une grille raster de tuiles vides.
• ST_MakeEmptyRaster - Retourne un raster vide (sans aucune bande) de dimension donnée (width & height), de coin supérieur
gauche à X et Y, de paramètres de taille de pixel données (scalex, scaley, skewx & skewy) et de système de référence spatial
(srid) donné. Si un raster est spécifié, retourne un nouveau raster de même taille, alignement et SRID. Si srid n’est pas spécifié,
le système de référence spatial est défini à inconnu (0).
• ST_MapAlgebra (callback function version) - Version avec fonction de rappel - Retourne un raster à une bande à partir d’un
ou plusieurs rasters d’entrée, d’index de bandes et d’une fonction de rappel spécifiée par l’utilisateur.
• ST_MapAlgebraExpr - Version avec raster à 1 bande : Crée un nouveau raster à une bande formé par l’application d’une
opération algébrique PostgreSQL valide sur la bande d’entrée du raster et du type de pixel fourni. Si aucune bande n’est
spécifiée, la bande 1 est utilisée.
• ST_MapAlgebraExpr - Version avec 2 bandes : Crée un nouveau raster à une bande formé en appliquant une opération al-
gébrique PostgreSQL valide sur les deux bandes du raster d’entrée et du type de pixel fourni. La bande 1 de chaque raster
est utilisée si aucun numéro de bande n’est spécifié. Le raster résultant sera aligné (échelle, obliquité et coins) sur la grille
définie par le premier raster et aura son étendue définie par le paramètre "extenttype". Les valeurs de "extenttype" peuvent être
: INTERSECTION, UNION, FIRST, SECOND.
• ST_MapAlgebraFct - Version à 1 bande - Crée un nouveau raster à une bande formé par l’application d’une fonction Post-
greSQL valide sur la bande d’entrée du raster et sur le type de pixel fourni. La bande 1 est utilisée si aucune bande n’est
spécifiée.
• ST_MapAlgebraFct - Version à 2 bandes - Crée un nouveau raster à une bande formé par l’application d’une fonction Post-
greSQL valide sur les 2 bandes d’entrée du raster et sur le type de pixel fourni. La bande 1 est utilisée si aucune bande n’est
spécifiée. Le type d’étendue INTERSECTION est utilisé si non spécifié.
• ST_MapAlgebraFctNgb - Version à 1 bande : Algèbre cartographique Plus proche voisin en utilisant une fonction PostgreSQL
définie par l’utilisateur. Retourne un raster dont les valeurs sont le résultat d’une fonction utilisateur PLPGSQL prenant un
voisinage des valeurs de la bande raster d’entrée.
• ST_MapAlgebra (expression version) - Version avec expression - Retourne un raster à une bande à partir d’un ou deux rasters
d’entrée, d’index de bandes et d’une ou plusieurs expressions SQL spécifiées par l’utilisateur.
• ST_MemSize - Retourne l’espace utilisé par le raster (en octets).
• ST_MetaData - Retourne les méta-données de base de l’objet raster : taille des pixels, rotation, coin haut/bas gauche, etc.
• ST_MinConvexHull - Retourne la géométrie de l’enveloppe convexe du raster en excluant les pixels NODATA.
• ST_NearestValue - Retourne la valeur la plus proche différent de NODATA pour une bande raster spécifiée au pixel donné par
columnx et rowy, ou à un point géométrique spécifié dans le même système de référence spatial que le raster.
• ST_Neighborhood - Retourne un tableau 2-D de double avec les valeurs non NODATA autour du pixel de la bande spécifiée,
aux coordonnées spécifiées par columnX & rowY ou par un point géométrique dans le même système de référence spatial que
le raster.
• ST_NotSameAlignmentReason - Retourne un texte indiquant si les rasters sont alignés et, s’ils ne le sont pas, la raison du
problème.
Manuel PostGIS 3.4.0dev 820 / 870
• ST_SameAlignment - Retourne true si les rasters ont les mêmes skew, scale, spatial ref, et offset (les pixels peuvent être placés
sur la même grille sans être coupés) et false si ce n’est pas le cas, avec une NOTICE détaillant le problème.
• ST_ScaleX - Renvoie la composante X de la largeur du pixel dans l’unité du système de référence spatial.
• ST_ScaleY - Renvoie la composante Y de la hauteur du pixel dans l’unité du système de référence spatial.
• ST_SetBandIndex - Met à jour le numéro de bande externe d’une bande out-db
• ST_SetBandIsNoData - Définit la valeur du flag isnodata de la bande à TRUE.
• ST_SetBandNoDataValue - Définit la valeur pour l’absence de données (nodata) pour la bande spécifiée. Si aucune bande n’est
spécifiée, la bande 1 est utilisée. Pour indiquer qu’une bande n’a pas de valeur nodata, définir la valeur nodata = NULL.
• ST_SetBandPath - Met à jour le chemin externe et le numéro de bande d’une bande out-db
• ST_SetGeoReference - Définit les 6 paramètres de géo-référencement en un seul appel. Les nombres doivent être séparés par
un espace. Accepte les formats GDAL (par défaut) ou ESRI.
• ST_SetM - Retourne une géométrie avec les mêmes coordonnées X/Y que la géométrie d’entrée, et avec la coordonnée M
copiée depuis les valeurs du raster selon l’algorithme d’interpolation en paramètre.
• ST_SetRotation - Définit la rotation du raster en radians.
• ST_SetSRID - Modifie le SRID d’un raster à une valeur définie dans la table spatial_ref_sys.
• ST_SetScale - Définit la résolution des pixels en X et Y en unité du système de référence spatial : nombre d’unités/pixel en
largeur/hauteur.
• ST_SetSkew - Définit l’obliquité X et Y (skew, ou paramètre de rotation). Si une seule valeur est spécifiée, la même valeur est
utilisée pour X et pour Y.
• ST_SetUpperLeft - Modifie les coordonnées du pixel du coin supérieur gauche du raster, selon les coordonnées X et Y pro-
jetées.
• ST_SetValue - Retourne un nouveau raster en modifiant la valeur du pixel pour la bande spécifiée et aux coordonnées columnx,
rowy, ou pour tous les pixels qui intersectent une géométrie spécifiée. Le numéro de bande démarre à 1, et la bande 1 est
utilisée si non spécifié.
• ST_SetValues - Retourne un nouveau raster en modifiant les valeurs de certains pixels d’une bande spécifiée.
• ST_SetZ - Retourne une géométrie avec les mêmes coordonnées X/Y que la géométrie d’entrée, et avec la coordonnée Z copiée
depuis les valeurs du raster selon l’algorithme d’interpolation en paramètre.
• ST_SkewX - Retourne l’obliquité géo-référencée X (paramètre de rotation).
• ST_SummaryStatsAgg - Agrégat. Retourne des résumés statistiques (count, sum, mean, stddev, min, max) pour une bande
raster spécifiée pour une ensemble de rasters. Si aucune bande n’est spécifiée, la bande 1 est utilisée.
• ST_TPI - Retourne un raster avec l’index de position topographique (TPI) calculé.
• ST_TRI - Retourne un raster avec l’indice de rugosité du terrain (TRI) calculé.
Manuel PostGIS 3.4.0dev 822 / 870
• ST_Tile - Retourne un ensemble de rasters issus de la division d’un raster d’entrée selon les dimensions spécifiées pour les
rasters de sortie.
• ST_Touches - Retourne true si les raster rastA et rastB ont au moins un point en commun mais que leurs intérieurs n’intersectent
pas.
• ST_Transform - Reprojette un raster depuis un système de référence spatial vers un autre, en utilisant l’algorithme de rééchantil-
lonnage spécifié. Les algorithmes possibles sont NearestNeighbor (plus proche voisin), Bilinear (Bilinéaire), Cubic (Cubique),
CubicSpline (Cubique Spline) ou Lanczos. La valeur par défaut est NearestNeighbor.
• ST_Union - Retourne l’union d’un ensemble de tuiles raster, en un seul raster composé de 1 ou plusieurs bandes.
• ST_UpperLeftX - Retourne la coordonnée X du coin supérieur gauche du raster projeté dans le système de référence spatial.
• ST_UpperLeftY - Retourne la coordonnée Y du coin supérieur gauche du raster projeté dans le système de référence spatial.
• ST_Value - Retourne la valeur d’une bande raster spécifiée au pixel donné par columnx, rowy, ou à un point géométrique
spécifié. Le numéro de bande démarre à 1, et la bande 1 est utilisée si non spécifié. Si exclude_nodata_value vaut false,
tous les pixels y compris ceux ayant la valeur nodata sont considérés comme intersectés et leur valeur sera retournée. Si
exclude_nodata_value n’est pas spécifié, la valeur est lue depuis les méta-données du raster.
• ST_ValueCount - Retourne un ensemble d’enregistrements contenant une valeur de pixels et le nombre de pixels ayant cette
valeur dans la bande du raster spécifié (ou de la couverture raster). Si aucune bande n’est spécifiée, la bande 1 est utilisée. Par
défaut, les pixels de valeur nodata ne sont pas comptés, et toutes les autres valeurs sont retournées, avec leur valeur arrondies
à l’entier le plus proche.
• ST_Width - Retourne la largeur du raster en pixels.
• ST_Within - Retourne true si aucun point du raster rastA ne se trouve à l’extérieur du raster rastB et si au moins un point de
l’intérieur du raster rastA se trouve à l’intérieur du raster rastB.
• ST_WorldToRasterCoord - Retourne le coin supérieur gauche comme colonne et ligne, en fonction de coordonnées géométriques
X et Y (longitude et latitude) ou un point géométrique dans le système de référence spatial du raster.
• ST_WorldToRasterCoordX - Retourne la colonne dans le raster du point géométrique (pt) ou des coordonnées X et Y (xw, yw)
exprimés dans le système de référence spatial du raster.
• ST_WorldToRasterCoordY - Retourne la ligne dans le raster du point géométrique (pt) ou des coordonnées X et Y (xw, yw)
exprimés dans le système de référence spatial du raster.
• UpdateRasterSRID - Change le SRID de tous les rasters dans la table et colonne en paramètres.
Les fonctions ci-dessous sont des fonctions PostGIS qui prennent en entrée ou renvoient en sortie un ensemble ou un seul objet
de type geometry_dump ou geomval.
• ST_DumpAsPolygons - Retourne un ensemble d’enregistrements de type geomval (geom, val), à partir d’une bande raster
donnée. Si aucune bande bandnum n’est spécifiée, la bande 1 est utilisée.
• ST_Intersection - Retourne un raster ou un ensemble de paires (géométrie, valeur de pixel) représentant la partie partagée de
deux rasters ou l’intersection géométrique d’une vectorisation du raster et d’une géométrie.
• ST_Dump - Renvoie un ensemble de lignes geometry_dump pour les composants d’une géométrie.
• ST_DumpPoints - Renvoie un ensemble de lignes geometry_dump pour les coordonnées dans une géométrie.
• ST_DumpRings - Renvoie un ensemble de lignes geometry_dump pour les anneaux extérieurs et intérieurs d’un polygone.
• ST_DumpSegments - Renvoie un ensemble de lignes geometry_dump pour les segments d’une géométrie.
Manuel PostGIS 3.4.0dev 823 / 870
Les fonctions ci-dessous sont des fonctions PostGIS qui prennent en entrée ou renvoient en sortie la famille box* des types
spatiaux PostGIS. La famille de types box comprend box2d, et box3d
• &&(box2df,box2df) - Renvoie TRUE si deux boîtes de délimitation 2D à précision flottante (BOX2DF) se croisent.
• &&(box2df,geometry) - Renvoie TRUE si une boîte de délimitation 2D de précision flottante (BOX2DF) intersecte la boîte de
délimitation 2D (mise en cache) d’une géométrie.
• &&(geometry,box2df) - Renvoie TRUE si la boîte de délimitation 2D (en cache) d’une géométrie intersecte une boîte de
délimitation 2D de précision flottante (BOX2DF).
Les fonctions ci-dessous sont des fonctions PostGIS qui n’éliminent pas l’indice Z.
• ST_3DClosestPoint - Renvoie le point 3D sur g1 qui est le plus proche de g2. Il s’agit du premier point de la ligne 3D la plus
courte.
• ST_3DConvexHull - Calcule l’enveloppe convexe 3D d’une géométrie.
• ST_3DDFullyWithin - Teste si deux géométries 3D sont entièrement comprises dans une distance 3D donnée
• ST_AsEWKB - Renvoie la représentation Extended Well-Known Binary (EWKB) de la géométrie avec les métadonnées SRID.
• ST_AsEWKT - Renvoie la représentation Well-Known Text (WKT) de la géométrie avec les métadonnées SRID.
• ST_AsGML - Renvoyer la géométrie en tant qu’élément GML version 2 ou 3.
• ST_AsGeoJSON - Renvoie une géométrie sous la forme d’un élément GeoJSON.
• ST_AsHEXEWKB - Renvoie une géométrie au format HEXEWKB (en tant que texte) en utilisant l’encodage little-endian
(NDR) ou big-endian (XDR).
• ST_AsKML - Renvoyer la géométrie sous forme d’élément KML.
• ST_AsX3D - Renvoie une géométrie au format X3D xml node element : ISO-IEC-19776-1.2-X3DEncodings-XML
• ST_ChaikinSmoothing - Renvoie une version lissée d’une géométrie, en utilisant l’algorithme Chaikin
• ST_ClosestPointOfApproach - Renvoie une mesure au point d’approche le plus proche de deux trajectoires.
• ST_Collect - Crée une géométrie GeometryCollection ou Multi à partir d’un ensemble de géométries.
• ST_ConstrainedDelaunayTriangles - Renvoie une triangulation de Delaunay contrainte autour de la géométrie d’entrée donnée.
• ST_DumpPoints - Renvoie un ensemble de lignes geometry_dump pour les coordonnées dans une géométrie.
• ST_DumpRings - Renvoie un ensemble de lignes geometry_dump pour les anneaux extérieurs et intérieurs d’un polygone.
• ST_DumpSegments - Renvoie un ensemble de lignes geometry_dump pour les segments d’une géométrie.
• ST_ForcePolygonCCW - Oriente tous les anneaux extérieurs dans le sens inverse des aiguilles d’une montre et tous les anneaux
intérieurs dans le sens des aiguilles d’une montre.
• ST_ForcePolygonCW - Oriente tous les anneaux extérieurs dans le sens des aiguilles d’une montre et tous les anneaux in-
térieurs dans le sens inverse des aiguilles d’une montre.
• ST_ForceRHR - Force l’orientation des sommets d’un polygone à suivre la règle de la main droite.
• ST_ForceSFS - Forcer les géométries à utiliser uniquement les types de géométrie SFS 1.1.
• ST_Force_3D - Force les géométries en mode XYZ. Il s’agit d’un alias de ST_Force3DZ.
• ST_Force_3DZ - Forcer les géométries en mode XYZ.
• ST_Force_4D - Forcer les géométries en mode XYZM.
• ST_Force_Collection - Convertir la géométrie en une GEOMETRYCOLLECTION.
• ST_GeomFromEWKB - Retourne un objet ST_Geometry à partir de sa représentation binaire étendue (Extended Well-Known
Binary representation, EWKB).
• ST_GeomFromEWKT - Retourne un objet ST_Geometry à partir de sa représentation textuelle étendue (Extended Well-Known
Text representation, EWKT).
• ST_GeomFromGML - Prend en paramètre une représentation GML d’une géométrie et renvoie un objet PostGIS de type
geometry.
• ST_GeomFromGeoJSON - Prend en entrée une géométrie au format geojson et renvoie un objet Postgis de type geometry.
• ST_GeomFromKML - Prend en entrée une géométrie au format KML et renvoie un objet Postgis de type geometry.
• ST_GeometricMedian - Renvoie la médiane géométrique d’un MultiPoint.
• ST_GeometryN - Renvoie un élément d’une collection de géométries.
• ST_GeometryType - Renvoie le type SQL-MM d’une géométrie sous forme de texte.
• ST_HasArc - Teste si une géométrie contient un arc de cercle
• ST_InteriorRingN - Renvoie le Nième anneau intérieur (trou) d’un polygone.
• ST_InterpolatePoint - Renvoie la mesure interpolée d’une géométrie la plus proche d’un point.
• ST_Intersection - Calcule une géométrie représentant la partie partagée des géométries A et B.
• ST_IsClosed - Teste si les points de départ et d’arrivée d’une LineString coïncident. Pour une PolyhedralSurface, teste si elle
est fermée (volumétrique).
• ST_IsCollection - Teste si une géométrie est un type de collection de géométrie.
• ST_IsPlanar - Vérifie si une surface est planaire ou non
• ST_IsPolygonCCW - Teste si les polygones ont des anneaux extérieurs orientés dans le sens inverse des aiguilles d’une montre
et des anneaux intérieurs orientés dans le sens des aiguilles d’une montre.
• ST_IsPolygonCW - Teste si les polygones ont des anneaux extérieurs orientés dans le sens des aiguilles d’une montre et des
anneaux intérieurs orientés dans le sens inverse des aiguilles d’une montre.
• ST_IsSimple - Teste si une géométrie n’a pas de points d’auto-intersection ou d’auto-tangente.
• ST_IsSolid - Teste si la géométrie est un solide. Aucun contrôle de validité n’est effectué.
• ST_IsValidTrajectory - Teste si la géométrie est une trajectoire valide.
• ST_Length_Spheroid - Renvoie la longueur/périmètre 2D ou 3D d’une géométrie lon/lat sur un sphéroïde.
• ST_LineFromMultiPoint - Crée une LineString à partir d’une géométrie MultiPoint.
Manuel PostGIS 3.4.0dev 827 / 870
Les fonctions ci-dessous sont des fonctions PostGIS qui peuvent utiliser CIRCULARSTRING, CURVEPOLYGON et d’autres
types de géométrie courbe
• ST_ForceCurve - Retransformation d’une géométrie dans son type de courbure, le cas échéant.
• ST_ForceSFS - Forcer les géométries à utiliser uniquement les types de géométrie SFS 1.1.
• ST_Force3D - Force les géométries en mode XYZ. Il s’agit d’un alias de ST_Force3DZ.
• ST_GeomFromEWKB - Retourne un objet ST_Geometry à partir de sa représentation binaire étendue (Extended Well-Known
Binary representation, EWKB).
• ST_GeomFromEWKT - Retourne un objet ST_Geometry à partir de sa représentation textuelle étendue (Extended Well-Known
Text representation, EWKT).
• ST_GeomFromText - Retourne un objet ST_Geometry à partir de sa représentation textuelle Well-Known Text (WKT).
• ST_GeomFromWKB - Retourne un objet de type geometry à partir de sa représentation binaire Well-Know Binary (WKB) et
d’un SRID optionnel.
• ST_GeometryN - Renvoie un élément d’une collection de géométries.
• = - Renvoie TRUE si les coordonnées et l’ordre des coordonnées de la géométrie/géographie A sont les mêmes que les coor-
données et l’ordre des coordonnées de la géométrie/géographie B.
• &<| - Renvoie TRUE si la boîte englobante de A chevauche ou est inférieure à celle de B.
• ST_HasArc - Teste si une géométrie contient un arc de cercle
• ST_Intersects - Teste si deux géométries se croisent (elles ont au moins un point en commun)
• ST_IsClosed - Teste si les points de départ et d’arrivée d’une LineString coïncident. Pour une PolyhedralSurface, teste si elle
est fermée (volumétrique).
• ST_IsCollection - Teste si une géométrie est un type de collection de géométrie.
Les fonctions ci-dessous sont des fonctions PostGIS qui peuvent utiliser les géométries POLYHEDRALSURFACE, POLYHE-
DRALSURFACEM
• ST_ForceCurve - Retransformation d’une géométrie dans son type de courbure, le cas échéant.
• ST_ForceSFS - Forcer les géométries à utiliser uniquement les types de géométrie SFS 1.1.
• ST_Force3D - Force les géométries en mode XYZ. Il s’agit d’un alias de ST_Force3DZ.
• ST_GeomFromEWKB - Retourne un objet ST_Geometry à partir de sa représentation binaire étendue (Extended Well-Known
Binary representation, EWKB).
• ST_GeomFromEWKT - Retourne un objet ST_Geometry à partir de sa représentation textuelle étendue (Extended Well-Known
Text representation, EWKT).
• ST_GeomFromText - Retourne un objet ST_Geometry à partir de sa représentation textuelle Well-Known Text (WKT).
• ST_GeomFromWKB - Retourne un objet de type geometry à partir de sa représentation binaire Well-Know Binary (WKB) et
d’un SRID optionnel.
• ST_GeometryN - Renvoie un élément d’une collection de géométries.
• = - Renvoie TRUE si les coordonnées et l’ordre des coordonnées de la géométrie/géographie A sont les mêmes que les coor-
données et l’ordre des coordonnées de la géométrie/géographie B.
• &<| - Renvoie TRUE si la boîte englobante de A chevauche ou est inférieure à celle de B.
• ST_HasArc - Teste si une géométrie contient un arc de cercle
• ST_Intersects - Teste si deux géométries se croisent (elles ont au moins un point en commun)
• ST_IsClosed - Teste si les points de départ et d’arrivée d’une LineString coïncident. Pour une PolyhedralSurface, teste si elle
est fermée (volumétrique).
• ST_IsCollection - Teste si une géométrie est un type de collection de géométrie.
Vous trouverez ci-dessous une liste alphabétique des fonctions spatiales spécifiques de PostGIS et des types de données spatiales
qu’elles utilisent ou de la conformité OGC/SQL à laquelle elles tentent de se conformer.
• Un signifie qu’il fonctionne mais avec une transformation intégrée utilisant la géométrie, la transformation vers une
référence spatiale "meilleur srid", puis la transformation à nouveau. Les résultats peuvent ne pas être conformes aux attentes
pour les grandes zones ou les zones aux pôles et peuvent accumuler des erreurs en virgule flottante.
• Un signifie que la fonction fonctionne avec le type en raison d’un transfert automatique vers un autre type, tel que box3d,
plutôt que d’une prise en charge directe du type.
• Un signifie que la fonction n’est disponible que si PostGIS a été compilé avec le support SFCGAL.
• Un signifie que le support de la fonction est fourni par SFCGAL si PostGIS a été compilé avec le support SFCGAL,
sinon le support GEOS/intégré.
• geom - Support géométrique 2D de base (x,y).
ST_3DArea
ST_3DClosestPoint
ST_3DConvexHull
ST_3DDFullyWithin
ST_3DDWithin
ST_3DDifference
ST_3DDistance
Manuel PostGIS 3.4.0dev 836 / 870
ST_3DIntersection
ST_3DIntersects
ST_3DLength
ST_3DLineInterpolatePoint
ST_3DLongestLine
ST_3DMakeBox
ST_3DMaxDistance
ST_3DPerimeter
ST_3DShortestLine
ST_3DUnion
ST_AddMeasure
ST_AddPoint
ST_Affine
ST_AlphaShape
ST_Angle
ST_ApproximateMedialAxis
ST_Area
ST_AsBinary
ST_AsEWKB
ST_AsEWKT
ST_AsEncodedPolyline
ST_AsFlatGeobuf
ST_AsGML
ST_AsGeoJSON
ST_AsGeobuf
ST_AsHEXEWKB
ST_AsKML
ST_AsLatLonText
ST_AsMARC21
ST_AsMVT
ST_AsMVTGeom
Manuel PostGIS 3.4.0dev 837 / 870
ST_Buffer
ST_BuildArea
ST_CPAWithin
ST_Centroid
ST_ChaikinSmoothing
ST_ClipByBox2D
ST_ClosestPoint
ST_ClosestPointOfApproach
ST_ClusterDBSCAN
ST_ClusterIntersecting
ST_ClusterIntersectingWin
ST_ClusterKMeans
ST_ClusterWithin
ST_ClusterWithinWin
ST_Collect
ST_CollectionExtract
ST_CollectionHomogenize
ST_ConcaveHull
ST_ConstrainedDelaunayTriangles
ST_Contains
ST_ContainsProperly
ST_ConvexHull
ST_CoordDim
Manuel PostGIS 3.4.0dev 838 / 870
ST_Extrude
ST_FilterByM
ST_FlipCoordinates
ST_Force2D
ST_ForceCurve
Manuel PostGIS 3.4.0dev 839 / 870
ST_ForcePolygonCCW
ST_ForcePolygonCW
ST_ForceRHR
ST_ForceSFS
ST_Force3D
ST_Force3DM
ST_Force3DZ
ST_Force4D
ST_ForceCollection
ST_FrechetDistance
ST_FromFlatGeobuf
ST_FromFlatGeobufToTable
ST_GMLToSQL
ST_GeneratePoints
ST_GeoHash
ST_GeogFromText
ST_GeogFromWKB
ST_GeographyFromText
ST_GeomCollFromText
ST_GeomFromEWKB
ST_GeomFromEWKT
ST_GeomFromGML
ST_GeomFromGeoHash
ST_GeomFromGeoJSON
ST_GeomFromKML
ST_GeomFromMARC21
ST_GeomFromTWKB
ST_GeomFromText
ST_GeomFromWKB
ST_GeometricMedian
ST_GeometryFromText
ST_GeometryN
ST_GeometryType
Manuel PostGIS 3.4.0dev 840 / 870
ST_Intersection
ST_Intersects
ST_InverseTransformPipeline
ST_IsClosed
ST_IsCollection
ST_IsEmpty
ST_IsPlanar
ST_IsPolygonCCW
ST_IsPolygonCW
ST_IsRing
ST_IsSimple
ST_IsSolid
ST_IsValid
ST_IsValidDetail
ST_IsValidReason
Manuel PostGIS 3.4.0dev 841 / 870
ST_MakeValid
ST_MaxDistance
ST_MaximumInscribedCircle
ST_MemSize
ST_MemUnion
ST_MinimumBoundingCircle
ST_MinimumBoundingRadius
ST_MinimumClearance
ST_MinimumClearanceLine
ST_MinkowskiSum
ST_Multi
ST_NDims
ST_NPoints
ST_NRings
ST_Node
ST_Normalize
ST_NumGeometries
ST_NumInteriorRing
ST_NumInteriorRings
ST_NumPatches
ST_NumPoints
ST_OffsetCurve
ST_OptimalAlphaShape
ST_OrderingEquals
ST_Orientation
ST_OrientedEnvelope
ST_Overlaps
ST_PatchN
ST_Perimeter
ST_Perimeter2D
ST_Point
ST_PointFromGeoHash
Manuel PostGIS 3.4.0dev 843 / 870
ST_StraightSkeleton
ST_Subdivide
ST_Summary
ST_SwapOrdinates
ST_SymDifference
ST_Tesselate
ST_TileEnvelope
ST_Touches
ST_TransScale
ST_Transform
ST_TransformPipeline
ST_Translate
ST_TriangulatePolygon
ST_UnaryUnion
ST_Union
ST_Volume
ST_VoronoiLines
ST_VoronoiPolygons
ST_WKBToSQL
ST_WKTToSQL
ST_Within
ST_WrapX
ST_X
Manuel PostGIS 3.4.0dev 845 / 870
postgis_sfcgal_version
Manuel PostGIS 3.4.0dev 846 / 870
Les fonctions indiquées ci-dessous sont des fonctions PostGIS qui ont été ajoutées ou améliorées.
Fonctions nouvelles dans PostGIS 3.4
• PostGIS_GEOS_Compiled_Version - Disponibilité : 3.4.0 Renvoie le numéro de version de la librairie GEOS avec laquelle
PostGIS a été construit.
• ST_ClusterIntersectingWin - Disponibilité : 3.4.0 Fonction Window qui renvoie un identifiant de cluster pour chaque géométrie
en entrée, en regroupant les géométries en entrée en ensembles connectés.
• ST_ClusterWithinWin - Disponibilité : 3.4.0 Fonction Window qui renvoie un identifiant de cluster pour chaque géométrie en
entrée, regroupement en utilisant la distance de séparation.
• ST_CoverageInvalidEdges - Disponibilité : 3.4.0 - nécessite GEOS >= 3.12.0 Fonction window qui trouve les endroits où les
polygones ne forment pas une couverture valide.
• ST_CoverageSimplify - Disponibilité : 3.4.0 - nécessite GEOS >= 3.12.0 Fonction window qui simplifie les bords d’une
couverture polygonale.
• ST_CoverageUnion - Disponibilité : 3.4.0 - nécessite GEOS >= 3.8.0 Calcule l’union d’un ensemble de polygones formant
une couverture en supprimant les arêtes communes.
• ST_InverseTransformPipeline - Disponibilité : 3.4.0 Renvoie une nouvelle géométrie dont les coordonnées ont été transformées
dans un système de référence spatial différent en utilisant l’inverse d’un pipeline de transformation de coordonnées défini.
• ST_LargestEmptyCircle - Availability: 3.4.0. Calcule le plus grand cercle ne recouvrant pas une géométrie.
• ST_LineExtend - Availability: 3.4.0 Returns a line with the last and first segments extended the specified distance(s).
• ST_TransformPipeline - Disponibilité : 3.4.0 Retourner une nouvelle géométrie avec des coordonnées transformées dans un
système de référence spatial différent à l’aide d’un pipeline de transformation de coordonnées défini.
• postgis_srs - Disponibilité : 3.4.0 Renvoyer une fiche de métadonnées pour l’autorité et le srid demandés.
• postgis_srs_all - Disponibilité : 3.4.0 Renvoie des enregistrements de métadonnées pour chaque système de référence spatiale
dans la base de données Proj sous-jacente.
• postgis_srs_codes - Disponibilité : 3.4.0 Renvoie la liste des codes SRS associés à l’autorité donnée.
• postgis_srs_search - Disponibilité : 3.4.0 Renvoyer les enregistrements de métadonnées pour les systèmes de coordonnées
projetées dont les zones d’utilisation contiennent entièrement le paramètre bounds.
• PostGIS_Full_Version - Amélioration : 3.4.0 inclut désormais les configurations supplémentaires PROJ NETWORK_ENABLED,
URL_ENDPOINT et DATABASE_PATH pour l’emplacement proj.db Donne des informations complètes sur la version de
PostGIS et la configuration du packaging.
• PostGIS_PROJ_Version - Amélioration : 3.4.0 inclut désormais PROJ NETWORK_ENABLED, URL_ENDPOINT et DATABASE_PA
pour l’emplacement proj.db Renvoie le numéro de version de la librairie PROJ4.
Manuel PostGIS 3.4.0dev 847 / 870
• ST_AsSVG - Enhanced: 3.4.0 to support all curve types Renvoie les données de chemin SVG pour une géométrie.
• ST_ClosestPoint - Enhanced: 3.4.0 - Support for geography. Renvoie le point 2D sur g1 qui est le plus proche de g2. Il s’agit
du premier point de la ligne la plus courte d’une géométrie à l’autre.
• ST_LineSubstring - Enhanced: 3.4.0 - Support for geography was introduced. Renvoie la partie d’une ligne située entre deux
emplacements fractionnaires.
• ST_Project - Enhanced: 3.4.0 Allow geometry arguments and two-point form omitting azimuth. Returns a point projected
from a start point by a distance and bearing (azimuth).
• ST_ShortestLine - Enhanced: 3.4.0 - support for geography. Renvoie la ligne 2D la plus courte entre deux géométries
• PostGIS_Extensions_Upgrade - Modifié : 3.4.0 pour ajouter l’argument target_version. Packages et mises à jour des extensions
PostGIS (par exemple postgis_raster, postgis_topology, postgis_sfcgal) vers la version donnée ou la plus récente.
Les fonctions indiquées ci-dessous sont des fonctions PostGIS qui ont été ajoutées ou améliorées.
Fonctions nouvelles dans PostGIS 3.3
• ST_ConcaveHull - Amélioré : 3.3.0, implémentation native de GEOS activée pour GEOS 3.11+ Calcule une géométrie
éventuellement concave qui contient tous les sommets de la géométrie d’entrée
• ST_LineMerge - Enhanced: 3.3.0 accept a directed parameter. Renvoie les lignes formées par la couture d’une MultiLineString.
• PostGIS_Extensions_Upgrade - Modifié : 3.3.0 support pour les mises à jour à partir de n’importe quelle version de Post-
GIS. Ne fonctionne pas sur tous les systèmes. Packages et mises à jour des extensions PostGIS (par exemple postgis_raster,
postgis_topology, postgis_sfcgal) vers la version donnée ou la plus récente.
Manuel PostGIS 3.4.0dev 848 / 870
Les fonctions indiquées ci-dessous sont des fonctions PostGIS qui ont été ajoutées ou améliorées.
Fonctions nouvelles dans PostGIS 3.2
• ST_AsFlatGeobuf - Disponibilité : 3.2.0 Renvoie une représentation FlatGeobuf d’un ensemble de lignes.
• ST_DumpSegments - Disponibilité : 3.2.0 Renvoie un ensemble de lignes geometry_dump pour les segments d’une géométrie.
• ST_FromFlatGeobuf - Disponibilité : 3.2.0 Lit les données FlatGeobuf.
• ST_FromFlatGeobufToTable - Disponibilité : 3.2.0 Crée une table basée sur la structure des données FlatGeobuf.
• ST_Scroll - Disponibilité : 3.2.0 Modifier le point de départ d’une LineString fermée.
• postgis.gdal_config_options - Disponibilité : 3.2.0 Une chaîne de configuration pour définir les options utilisées lors de
l’utilisation d’un raster out-db.
• ST_ClusterKMeans - Amélioré : 3.2.0 Support pour max_radius Fonction Window qui renvoie un identifiant de cluster pour
chaque géométrie en entrée en utilisant l’algorithme K-means.
• ST_MakeValid - Amélioration : 3.2.0, ajout d’options d’algorithme, ’linework’ et ’structure’ qui nécessite GEOS >= 3.10.0.
Tente de rendre valide une géométrie invalide sans perdre de sommets.
• ST_Point - Amélioration : 3.2.0 srid a été ajouté comme argument optionnel supplémentaire. Les anciennes installations
nécessitent une combinaison avec ST_SetSRID pour marquer le srid sur la géométrie. Crée un point avec des valeurs X, Y et
SRID.
• ST_PointM - Amélioration : 3.2.0 srid a été ajouté comme argument optionnel supplémentaire. Les anciennes installations
nécessitent une combinaison avec ST_SetSRID pour marquer le srid sur la géométrie. Crée un point avec des valeurs X, Y, M
et SRID.
• ST_PointZ - Amélioration : 3.2.0 srid a été ajouté comme argument optionnel supplémentaire. Les anciennes installations
nécessitent une combinaison avec ST_SetSRID pour marquer le srid sur la géométrie. Crée un point avec des valeurs X, Y, Z
et SRID.
• ST_PointZM - Amélioration : 3.2.0 srid a été ajouté comme argument optionnel supplémentaire. Les anciennes installations
nécessitent une combinaison avec ST_SetSRID pour marquer le srid sur la géométrie. Crée un point avec des valeurs X, Y, Z,
M et SRID.
• ST_Boundary - Modifié : 3.2.0 support pour TIN, n’utilise pas geos, ne linéarise pas les courbes Renvoie la limite d’une
géométrie.
Manuel PostGIS 3.4.0dev 849 / 870
Les fonctions indiquées ci-dessous sont des fonctions PostGIS qui ont été ajoutées ou améliorées.
Fonctions nouvelles dans PostGIS 3.1
• ST_Hexagon - Disponibilité : 3.1.0 Renvoie un seul hexagone, en utilisant la taille du bord et les coordonnées de la
cellule fournies dans l’espace de la grille de l’hexagone.
• ST_HexagonGrid - Disponibilité : 3.1.0 Renvoie un ensemble d’hexagones et d’indices de cellules qui couvrent
complètement les limites de l’argument géométrie.
• ST_MaximumInscribedCircle - Availability: 3.1.0. Calcule le plus grand cercle contenu dans une géométrie.
• ST_ReducePrecision - Availability: 3.1.0. Renvoie une géométrie valide dont les points sont arrondis en fonction de la
tolérance de la grille.
• ST_Square - Disponibilité : 3.1.0 Renvoie un seul carré, en utilisant la taille du bord et la coordonnée de la cellule
fournies dans l’espace de la grille du carré.
• ST_SquareGrid - Disponibilité : 3.1.0 Renvoie un ensemble de carrés de grille et d’indices de cellules qui couvrent
complètement les limites de l’argument géométrie.
• ST_AsEWKT - Amélioré : support du paramètre optionnel de précision dans la version 3.1.0. Renvoie la représentation
Well-Known Text (WKT) de la géométrie avec les métadonnées SRID.
• ST_ClusterKMeans - Amélioration : 3.1.0 Prise en charge des géométries et des poids en 3D Fonction Window qui renvoie un
identifiant de cluster pour chaque géométrie en entrée en utilisant l’algorithme K-means.
• ST_Difference - Enhanced: 3.1.0 accept a gridSize parameter. Calcule une géométrie représentant la partie de la géométrie A
qui n’intersecte pas la géométrie B.
• ST_Intersection - Enhanced: 3.1.0 accept a gridSize parameter Calcule une géométrie représentant la partie partagée des
géométries A et B.
• ST_MakeValid - Amélioration : 3.1.0, suppression des coordonnées avec des valeurs NaN. Tente de rendre valide une
géométrie invalide sans perdre de sommets.
• ST_Subdivide - Enhanced: 3.1.0 accept a gridSize parameter. Calcule une subdivision rectiligne d’une géométrie.
• ST_SymDifference - Enhanced: 3.1.0 accept a gridSize parameter. Calcule une géométrie représentant les parties des géométries
A et B qui ne s’intersectent pas.
• ST_TileEnvelope - Amélioré : 3.1.0 Ajout d’un paramètre de marge. Crée un polygone rectangulaire dans Web Mercator
(SRID:3857) en utilisant le système de tuiles XYZ.
• ST_UnaryUnion - Enhanced: 3.1.0 accept a gridSize parameter. Calcule l’union des composantes d’une seule géométrie.
• ST_Union - Enhanced: 3.1.0 accept a gridSize parameter. Calcule une géométrie représentant l’union des ensembles de points
des géométries d’entrée.
• ST_Force3D - Modifié : 3.1.0. Ajout de la prise en charge pour pouvoir passer une valeur Z non nulle. Force les géométries
en mode XYZ. Il s’agit d’un alias de ST_Force3DZ.
• ST_Force3DM - Modifié : 3.1.0. Ajout de la prise en charge de pouvoir passer une valeur M non nulle. Forcer les géométries
en mode XYM.
• ST_Force3DZ - Modifié : 3.1.0. Ajout de la prise en charge pour pouvoir passer une valeur Z non nulle. Forcer les géométries
en mode XYZ.
• ST_Force4D - Modifié : 3.1.0. Ajout de la prise en charge de pouvoir passer des valeurs Z et M non nulles. Forcer les
géométries en mode XYZM.
Manuel PostGIS 3.4.0dev 850 / 870
Les fonctions indiquées ci-dessous sont des fonctions PostGIS qui ont été ajoutées ou améliorées.
Fonctions nouvelles dans PostGIS 3.0
• ST_3DLineInterpolatePoint - Disponibilité : 3.0.0 Renvoie un point interpolé le long d’une ligne 3D à un emplace-
ment fractionnaire.
• ST_ConstrainedDelaunayTriangles - Disponibilité : 3.0.0 Renvoie une triangulation de Delaunay contrainte autour
de la géométrie d’entrée donnée.
• ST_TileEnvelope - Disponibilité : 3.0.0 Crée un polygone rectangulaire dans Web Mercator (SRID:3857) en utilisant
le système de tuiles XYZ.
• ST_AsMVT - Amélioration : 3.0 - ajout de la prise en charge du Feature ID. Fonction d’agrégation renvoyant une représentation
MVT d’un ensemble de lignes.
• ST_Contains - Amélioration : 3.0.0 a permis la prise en charge de GEOMETRYCOLLECTION Tests si chaque point de B est
situé dans A, et que leurs intérieurs ont un point commun
• ST_ContainsProperly - Amélioration : 3.0.0 a permis la prise en charge de GEOMETRYCOLLECTION Tests si chaque point
de B se trouve à l’intérieur de A
• ST_CoveredBy - Amélioration : 3.0.0 a permis la prise en charge de GEOMETRYCOLLECTION Tests si chaque point de A
se trouve dans B
• ST_Covers - Amélioration : 3.0.0 a permis la prise en charge de GEOMETRYCOLLECTION Tests si chaque point de B est
situé dans A
• ST_Crosses - Amélioration : 3.0.0 a permis la prise en charge de GEOMETRYCOLLECTION Teste si deux géométries ont
en commun certains points intérieurs, mais pas tous
• ST_CurveToLine - Amélioration : la version 3.0.0 a mis en place un nombre minimum de segments par arc linéarisé afin
d’éviter une rupture topologique. Convertit une géométrie contenant des courbes en une géométrie linéaire.
• ST_Disjoint - Amélioration : 3.0.0 a permis la prise en charge de GEOMETRYCOLLECTION Teste si deux géométries n’ont
pas de points communs
• ST_Equals - Amélioration : 3.0.0 a permis la prise en charge de GEOMETRYCOLLECTION Teste si deux géométries com-
prennent le même ensemble de points
• ST_GeneratePoints - Amélioration : 3.0.0, ajout du paramètre seed Génère des points aléatoires contenus dans un polygone ou
un multipolygone.
• ST_GeomFromGeoJSON - Amélioré : 3.0.0 La géométrie parsée prend par défaut la valeur SRID=4326 si elle n’est pas
spécifiée autrement. Prend en entrée une géométrie au format geojson et renvoie un objet Postgis de type geometry.
• ST_LocateBetween - Amélioration : 3.0.0 - ajout de la prise en charge du POLYGONE, du TIN et du TRIANGLE. Renvoie
les parties d’une géométrie qui correspondent à un intervalle de mesure.
• ST_LocateBetweenElevations - Amélioration : 3.0.0 - ajout de la prise en charge du POLYGONE, du TIN et du TRIANGLE.
Renvoie les parties d’une géométrie qui se trouvent dans un intervalle d’élévation (Z).
• ST_Overlaps - Amélioration : 3.0.0 a permis la prise en charge de GEOMETRYCOLLECTION Teste si deux géométries ont
la même dimension et se croisent, mais si chacune a au moins un point qui n’est pas dans l’autre
• ST_Relate - Amélioration : 3.0.0 a permis la prise en charge de GEOMETRYCOLLECTION Teste si deux géométries ont une
relation topologique correspondant à un modèle de matrice d’intersection, ou calcule leur matrice d’intersection
Manuel PostGIS 3.4.0dev 851 / 870
• ST_Segmentize - Amélioration : 3.0.0 La segmentation de géométrie produit désormais des sous-segments de longueur égale
Renvoie une geometry/geography modifiée dont aucun segment ne dépasse une distance donnée.
• ST_Touches - Amélioration : 3.0.0 a permis la prise en charge de GEOMETRYCOLLECTION Teste si deux géométries ont
au moins un point en commun, mais que leurs intérieurs ne se croisent pas
• ST_Within - Amélioration : 3.0.0 a permis la prise en charge de GEOMETRYCOLLECTION Tests si chaque point de A se
trouve dans B, et que leurs intérieurs ont un point commun
• PostGIS_Extensions_Upgrade - Modifié : 3.0.0 pour repackager les extensions libres et supporter postgis_raster. Packages et
mises à jour des extensions PostGIS (par exemple postgis_raster, postgis_topology, postgis_sfcgal) vers la version donnée ou
la plus récente.
• ST_3DDistance - Modifié : 3.0.0 - Version SFCGAL supprimée Renvoie la distance cartésienne minimale en 3D (basée sur la
référence spatiale) entre deux géométries en unités projetées.
• ST_3DIntersects - Modifié : 3.0.0 SFCGAL backend supprimé, GEOS backend supporte les TINs. Teste si deux géométries
se croisent dans l’espace en 3D - uniquement pour les points, les lignes, les polygones, les surfaces polyédriques (aire)
• ST_Area - Modifié : 3.0.0 - ne dépend plus de SFCGAL. Renvoie l’aire d’une géométrie polygonale.
• ST_AsGeoJSON - Modifié : la version 3.0.0 prend en charge les enregistrements en tant que données d’entrée Renvoie une
géométrie sous la forme d’un élément GeoJSON.
• ST_AsGeoJSON - Modifié : 3.0.0 SRID de sortie si ce n’est pas EPSG:4326. Renvoie une géométrie sous la forme d’un
élément GeoJSON.
• ST_AsKML - Modifié : 3.0.0 - Suppression de la signature de la variante "versioned" Renvoyer la géométrie sous forme
d’élément KML.
• ST_Distance - Modifié : 3.0.0 - ne dépend plus de SFCGAL. Renvoie la distance entre deux valeurs de geometry ou geography.
• ST_Intersection - Modifié : 3.0.0 ne dépend pas de SFCGAL. Calcule une géométrie représentant la partie partagée des
géométries A et B.
• ST_Intersects - Modifié : 3.0.0 La version SFCGAL a été supprimée et la prise en charge native des TINS 2D a été ajoutée.
Teste si deux géométries se croisent (elles ont au moins un point en commun)
• ST_Union - Modifié : 3.0.0 ne dépend pas de SFCGAL. Calcule une géométrie représentant l’union des ensembles de points
des géométries d’entrée.
Les fonctions indiquées ci-dessous sont des fonctions PostGIS qui ont été ajoutées ou améliorées.
Fonctions nouvelles dans PostGIS 2.5
• PostGIS_Extensions_Upgrade - Disponibilité : 2.5.0 Packages et mises à jour des extensions PostGIS (par exemple post-
gis_raster, postgis_topology, postgis_sfcgal) vers la version donnée ou la plus récente.
• ST_Angle - Disponibilité : 2.5.0 Renvoie l’angle entre deux vecteurs définis par 3 ou 4 points, ou 2 lignes.
• ST_ChaikinSmoothing - Disponibilité : 2.5.0 Renvoie une version lissée d’une géométrie, en utilisant l’algorithme Chaikin
• ST_FilterByM - Disponibilité : 2.5.0 Supprime les vertices en fonction de leur valeur M
• ST_LineInterpolatePoints - Disponibilité : 2.5.0 Renvoie des points interpolés le long d’une ligne à un intervalle fractionnaire.
• ST_OrientedEnvelope - Availability: 2.5.0. Renvoie un rectangle de surface minimale contenant une géométrie.
• ST_QuantizeCoordinates - Disponibilité : 2.5.0 Met à zéro les bits de poids faible des coordonnées
Manuel PostGIS 3.4.0dev 852 / 870
• ST_AsMVT - Amélioration : 2.5.0 - ajout de la prise en charge des requêtes parallèles. Fonction d’agrégation renvoyant une
représentation MVT d’un ensemble de lignes.
• ST_AsText - Amélioration : 2.5 - introduction de la précision des paramètres optionnels. Renvoie la représentation Well-
Known Text (WKT) de la géométrie/geography sans métadonnées SRID.
• ST_Buffer - Amélioration : 2.5.0 - La prise en charge de la géométrie ST_Buffer a été améliorée pour permettre la spécification
de la mise en mémoire tampon latérale side=both|left|right. Calcule une géométrie couvrant tous les points situés à une distance
donnée d’une géométrie.
• ST_GeomFromGeoJSON - Amélioration : 2.5.0 peut maintenant accepter json et jsonb comme entrées. Prend en entrée une
géométrie au format geojson et renvoie un objet Postgis de type geometry.
• ST_GeometricMedian - Amélioré : 2.5.0 Ajout de la prise en charge de M comme poids des points. Renvoie la médiane
géométrique d’un MultiPoint.
• ST_Intersects - Amélioré : 2.5.0 Supporte GEOMETRYCOLLECTION. Teste si deux géométries se croisent (elles ont au
moins un point en commun)
• ST_Split - Amélioration : la prise en charge de la division d’un polygone par une ligne multiple a été introduite dans la version
2.5.0. Renvoie une collection de géométries créées en divisant une géométrie par une autre géométrie.
• ST_Subdivide - Amélioration : 2.5.0 réutilise les points existants lors de la division d’un polygone, le nombre de vertex est
réduit de 8 à 5. Calcule une subdivision rectiligne d’une géométrie.
Les fonctions indiquées ci-dessous sont des fonctions PostGIS qui ont été ajoutées ou améliorées.
Fonctions nouvelles dans PostGIS 2.4
• ST_AsGeobuf - Disponibilité : 2.4.0 Retourne une représentation Geobuf d’un ensemble de lignes.
• ST_AsMVT - Disponibilité : 2.4.0 Fonction d’agrégation renvoyant une représentation MVT d’un ensemble de lignes.
• ST_AsMVTGeom - Disponibilité : 2.4.0 Transforme une géométrie dans l’espace de coordonnées d’une tuile MVT.
• ST_Centroid - Disponibilité : la prise en charge du type geography a été introduite dans la version 2.4.0. Renvoie le centre
géométrique d’une géométrie.
• ST_ForcePolygonCCW - Disponibilité : 2.4.0 Oriente tous les anneaux extérieurs dans le sens inverse des aiguilles d’une
montre et tous les anneaux intérieurs dans le sens des aiguilles d’une montre.
• ST_ForcePolygonCW - Disponibilité : 2.4.0 Oriente tous les anneaux extérieurs dans le sens des aiguilles d’une montre et tous
les anneaux intérieurs dans le sens inverse des aiguilles d’une montre.
• ST_FrechetDistance - Disponibilité : 2.4.0 - nécessite GEOS >= 3.7.0 Renvoie la distance de Fréchet entre deux géométries.
• ST_IsPolygonCCW - Disponibilité : 2.4.0 Teste si les polygones ont des anneaux extérieurs orientés dans le sens inverse des
aiguilles d’une montre et des anneaux intérieurs orientés dans le sens des aiguilles d’une montre.
• ST_IsPolygonCW - Disponibilité : 2.4.0 Teste si les polygones ont des anneaux extérieurs orientés dans le sens des aiguilles
d’une montre et des anneaux intérieurs orientés dans le sens inverse des aiguilles d’une montre.
Manuel PostGIS 3.4.0dev 853 / 870
• ST_AsTWKB - Amélioration : 2.4.0 amélioration de la mémoire et de la vitesse. Renvoie la géométrie sous forme de TWKB,
diminutif de "Tiny Well-Known Binary"
• ST_Covers - Amélioration : 2.4.0 Ajout de la prise en charge des polygones dans les polygones et des lignes dans les polygones
pour le type geography Tests si chaque point de B est situé dans A
• ST_CurveToLine - Amélioration : 2.4.0 a ajouté la prise en charge de la tolérance de l’écart maximal et de l’angle maximal,
ainsi que de la sortie symétrique. Convertit une géométrie contenant des courbes en une géométrie linéaire.
• ST_Project - Enhanced: 2.4.0 Allow negative distance and non-normalized azimuth. Returns a point projected from a start
point by a distance and bearing (azimuth).
• ST_Reverse - Amélioration : la prise en charge des courbes a été introduite dans la version 2.4.0. Retourne la géométrie avec
l’ordre des sommets inversé.
• = - Modifié : 2.4.0, dans les versions précédentes, il s’agissait d’une égalité de boîte de délimitation et non d’une égalité
géométrique. Si vous avez besoin d’une égalité de boîte de délimitation, utilisez à la place. Renvoie TRUE si les coordonnées
et l’ordre des coordonnées de la géométrie/géographie A sont les mêmes que les coordonnées et l’ordre des coordonnées de la
géométrie/géographie B.
• ST_Node - Modifié : 2.4.0 cette fonction utilise GEOSNode en interne au lieu de GEOSUnaryUnion. Cela peut entraîner un
ordre et une direction différents des lignes résultantes par rapport à PostGIS < 2.4. Nœuds d’une collection de lignes.
Les fonctions indiquées ci-dessous sont des fonctions PostGIS qui ont été ajoutées ou améliorées.
Fonctions nouvelles dans PostGIS 2.3
• &&&(geometry,gidx) - Disponibilité : 2.3.0 le support des Block Range INdexes (BRIN) a été introduit. Nécessite PostgreSQL
9.5+. Renvoie TRUE si la boîte de délimitation n-D (en cache) d’une géométrie intersecte une boîte de délimitation de précision
flottante n-D (GIDX).
• &&&(gidx,geometry) - Disponibilité : 2.3.0 le support des Block Range INdexes (BRIN) a été introduit. Nécessite PostgreSQL
9.5+. Renvoie TRUE si une boîte de délimitation de précision flottante n-D (GIDX) intersecte la boîte de délimitation n-D (mise
en cache) d’une géométrie.
• &&&(gidx,gidx) - Disponibilité : 2.3.0 le support des Block Range INdexes (BRIN) a été introduit. Nécessite PostgreSQL
9.5+. Renvoie TRUE si deux boîtes de délimitation (GIDX) de précision flottante n-D se croisent.
• &&(box2df,box2df) - Disponibilité : 2.3.0 le support des Block Range INdexes (BRIN) a été introduit. Nécessite PostgreSQL
9.5+. Renvoie TRUE si deux boîtes de délimitation 2D à précision flottante (BOX2DF) se croisent.
• &&(box2df,geometry) - Disponibilité : 2.3.0 le support des Block Range INdexes (BRIN) a été introduit. Nécessite Post-
greSQL 9.5+. Renvoie TRUE si une boîte de délimitation 2D de précision flottante (BOX2DF) intersecte la boîte de délimita-
tion 2D (mise en cache) d’une géométrie.
• &&(geometry,box2df) - Disponibilité : 2.3.0 le support des Block Range INdexes (BRIN) a été introduit. Nécessite Post-
greSQL 9.5+. Renvoie TRUE si la boîte de délimitation 2D (en cache) d’une géométrie intersecte une boîte de délimitation 2D
de précision flottante (BOX2DF).
• @(box2df,box2df) - Disponibilité : 2.3.0 le support des Block Range INdexes (BRIN) a été introduit. Nécessite PostgreSQL
9.5+. Renvoie TRUE si une boîte de délimitation de précision flottante 2D (BOX2DF) est contenue dans une autre boîte de
délimitation de précision flottante 2D.
Manuel PostGIS 3.4.0dev 854 / 870
• @(box2df,geometry) - Disponibilité : 2.3.0 le support des Block Range INdexes (BRIN) a été introduit. Nécessite PostgreSQL
9.5+. Renvoie TRUE si une boîte de délimitation de précision flottante 2D (BOX2DF) est contenue dans la boîte de délimitation
2D d’une géométrie.
• @(geometry,box2df) - Disponibilité : 2.3.0 le support des Block Range INdexes (BRIN) a été introduit. Nécessite PostgreSQL
9.5+. Renvoie TRUE si la boîte de délimitation 2D d’une géométrie est contenue dans une boîte de délimitation 2D à précision
flottante (BOX2DF).
• ST_ClusterDBSCAN - Disponibilité : 2.3.0 Fonction Window qui renvoie un identifiant de cluster pour chaque géométrie
d’entrée en utilisant l’algorithme DBSCAN.
• ST_ClusterKMeans - Disponibilité : 2.3.0 Fonction Window qui renvoie un identifiant de cluster pour chaque géométrie en
entrée en utilisant l’algorithme K-means.
• ST_GeneratePoints - Disponibilité : 2.3.0 Génère des points aléatoires contenus dans un polygone ou un multipolygone.
• ST_GeometricMedian - Disponibilité : 2.3.0 Renvoie la médiane géométrique d’un MultiPoint.
• ST_MakeLine - Disponibilité : 2.3.0 - La prise en charge des éléments d’entrée MultiPoint a été introduite Crée une LineString
à partir de géométries Point, MultiPoint ou LineString.
• ST_MinimumBoundingRadius - Disponibilité - 2.3.0 Renvoie le point central et le rayon du plus petit cercle contenant une
géométrie.
• ST_MinimumClearance - Disponibilité : 2.3.0 Renvoie la clearance (le dégagement) d’une géométrie, une mesure de la ro-
bustesse d’une géométrie.
• ST_MinimumClearanceLine - Disponibilité : 2.3.0 - nécessite GEOS >= 3.6.0 Renvoie la chaîne de lignes à deux points
couvrant le dégagement (clearance) minimum d’une géométrie.
• ST_Normalize - Disponibilité : 2.3.0 Renvoie la géométrie sous sa forme canonique.
• ST_Points - Disponibilité : 2.3.0 Renvoie un MultiPoint contenant les coordonnées d’une géométrie.
• ST_VoronoiLines - Disponibilité : 2.3.0 Renvoie les limites des polygones de Voronoï des sommets d’une géométrie.
• ST_VoronoiPolygons - Disponibilité : 2.3.0 Renvoie les cellules de la représentation de Voronoï des sommets d’une géométrie.
• ST_WrapX - Disponibilité : 2.3.0 nécessite GEOS Enveloppe une géométrie autour d’une valeur X.
• ~(box2df,box2df) - Disponibilité : 2.3.0 le support des Block Range INdexes (BRIN) a été introduit. Nécessite PostgreSQL
9.5+. Renvoie TRUE si une boîte de délimitation de précision flottante 2D (BOX2DF) contient une autre boîte de délimitation
de précision flottante 2D (BOX2DF).
• ~(box2df,geometry) - Disponibilité : 2.3.0 le support des Block Range INdexes (BRIN) a été introduit. Nécessite PostgreSQL
9.5+. Renvoie TRUE si une boîte de délimitation de précision flottante 2D (BOX2DF) contient la boîte de délimitation 2D
d’une géométrie.
• ~(geometry,box2df) - Disponibilité : 2.3.0 le support des Block Range INdexes (BRIN) a été introduit. Nécessite PostgreSQL
9.5+. Renvoie TRUE si la boîte de délimitation 2D d’une géométrie contient une boîte de délimitation de précision flottante
2D (GIDX).
• ST_Contains - Amélioré : 2.3.0 Amélioration du court-circuit PIP étendu à la prise en charge des multipoints avec peu de
points. Les versions précédentes ne prenaient en charge que les points dans les polygones. Tests si chaque point de B est situé
dans A, et que leurs intérieurs ont un point commun
• ST_Covers - Amélioration : 2.3.0 Amélioration du court-circuit PIP pour la géométrie étendue à la prise en charge des multi-
points avec peu de points. Les versions précédentes ne prenaient en charge que les points dans les polygones. Tests si chaque
point de B est situé dans A
• ST_Expand - Amélioration : 2.3.0 : prise en charge de l’expansion d’une boîte par différentes quantités dans différentes
dimensions. Renvoie une boîte de délimitation développée à partir d’une autre boîte de délimitation ou d’une géométrie.
Manuel PostGIS 3.4.0dev 855 / 870
• ST_Intersects - Amélioré : 2.3.0 Amélioration du court-circuit PIP étendu à la prise en charge des multipoints avec peu de
points. Les versions précédentes ne prenaient en charge que les points dans les polygones. Teste si deux géométries se croisent
(elles ont au moins un point en commun)
• ST_Segmentize - Amélioration : 2.3.0 La segmentation d’objets geography produit désormais des sous-segments de longueur
égale Renvoie une geometry/geography modifiée dont aucun segment ne dépasse une distance donnée.
• ST_Transform - Amélioration : la version 2.3.0 a introduit la prise en charge du texte PROJ.4 direct. Renvoie une nouvelle
géométrie dont les coordonnées ont été transformées dans un système de référence spatial différent.
• ST_Within - Amélioration : 2.3.0 Amélioration du court-circuit PIP pour la géométrie étendue à la prise en charge des multi-
points avec peu de points. Les versions précédentes ne prenaient en charge que les points dans les polygones. Tests si chaque
point de A se trouve dans B, et que leurs intérieurs ont un point commun
• ST_PointN - Modifié : 2.3.0 : indexation négative disponible (-1 est le dernier point) Renvoie le Nième point de la première
LineString ou LineString circulaire d’une géométrie.
Les fonctions indiquées ci-dessous sont des fonctions PostGIS qui ont été ajoutées ou améliorées.
Fonctions nouvelles dans PostGIS 2.2
• <<#>> - Disponibilité : 2.2.0 -- KNN disponible uniquement pour PostgreSQL 9.1+. Renvoie la distance n-D entre les boîtes
de délimitation A et B.
• <<->> - Disponibilité : 2.2.0 -- KNN disponible uniquement pour PostgreSQL 9.1+. Renvoie la distance n-D entre les cen-
troïdes des boîtes de délimitation A et B.
• ST_3DDifference - Disponibilité : 2.2.0 Effectuer une différence 3D
• ST_3DUnion - Disponibilité : 2.2.0 Effectuer l’union 3D.
• ST_ApproximateMedialAxis - Disponibilité : 2.2.0 Calculer l’axe médian approximatif d’une géométrie aréolaire.
• ST_AsEncodedPolyline - Disponibilité : 2.2.0 Renvoie une polyligne encodée à partir d’une géométrie LineString.
• ST_AsTWKB - Disponibilité : 2.2.0 Renvoie la géométrie sous forme de TWKB, diminutif de "Tiny Well-Known Binary"
• ST_BoundingDiagonal - Disponibilité : 2.2.0 Retourne la diagonale de la boîte englobante pour la géométrie en argument.
• ST_CPAWithin - Disponibilité : 2.2.0 Teste si le point d’approche le plus proche de deux trajectoires se trouve dans la distance
spécifiée.
• ST_ClipByBox2D - Disponibilité : 2.2.0 Calcule la partie d’une géométrie située à l’intérieur d’un rectangle.
• ST_ClosestPointOfApproach - Disponibilité : 2.2.0 Renvoie une mesure au point d’approche le plus proche de deux trajec-
toires.
• ST_ClusterIntersecting - Disponibilité : 2.2.0 Fonction d’agrégation qui regroupe les géométries en entrée en ensembles con-
nectés.
• ST_ClusterWithin - Disponibilité : 2.2.0 Fonction d’agrégation qui regroupe les géométries en entrée en fonction de la distance
de séparation.
• ST_DistanceCPA - Disponibilité : 2.2.0 Renvoie la distance entre le point d’approche le plus proche de deux trajectoires.
• ST_ForceCurve - Disponibilité : 2.2.0 Retransformation d’une géométrie dans son type de courbure, le cas échéant.
• ST_IsPlanar - Disponibilité : 2.2.0 : Ce point était documenté dans la version 2.1.0 mais a été accidentellement omis dans la
version 2.1. Vérifie si une surface est planaire ou non
Manuel PostGIS 3.4.0dev 856 / 870
• ST_IsSolid - Disponibilité : 2.2.0 Teste si la géométrie est un solide. Aucun contrôle de validité n’est effectué.
• ST_IsValidTrajectory - Disponibilité : 2.2.0 Teste si la géométrie est une trajectoire valide.
• ST_LineFromEncodedPolyline - Disponibilité : 2.2.0 Crée une LineString depuis une polyligne encodée ( "Encoded Polyline"
)
• ST_MakeSolid - Disponibilité : 2.2.0 Transformer la géométrie dans un solide. Aucune vérification n’est effectuée. Pour
obtenir un solide valide, la géométrie d’entrée doit être une surface polyédrique fermée ou un TIN fermé.
• ST_RemoveRepeatedPoints - Disponibilité : 2.2.0 Renvoie une version d’une géométrie dont les points en double ont été
supprimés.
• ST_SetEffectiveArea - Disponibilité : 2.2.0 Définit la surface effective de chaque sommet, en utilisant l’algorithme Visvalingam-
Whyatt.
• ST_SimplifyVW - Disponibilité : 2.2.0 Renvoie une version simplifiée d’une géométrie, en utilisant l’algorithme de Visvalingam-
Whyatt
• postgis.enable_outdb_rasters - Disponibilité : 2.2.0 Une option de configuration booléenne pour permettre l’accès aux bandes
matricielles de out-db.
• postgis.gdal_datapath - Disponibilité : 2.2.0 Une option de configuration pour régler la valeur de l’option GDAL_DATA de
GDAL. Si elle n’est pas assignée, la valeur de la variable d’environnement GDAL_DATA est utilisée.
• postgis.gdal_enabled_drivers - Disponibilité : 2.2.0 Option de configuration permettant de définir les drivers GDAL activés
dans l’environnement PostGIS. Affecte la variable de configuration GDAL GDAL_SKIP.
• |=| - Disponibilité : 2.2.0. La prise en charge des index est disponible uniquement pour PostgreSQL 9.5+ Renvoie la distance
entre les trajectoires A et B à leur point d’approche le plus proche.
• <-> - Amélioré : 2.2.0 -- Comportement KNN ("K nearest neighbor") réel pour la géométrie et la géographie pour PostgreSQL
9.5+. Note : pour la géographie, KNN est basé sur la sphère plutôt que sur le sphéroïde. Pour PostgreSQL 9.4 et moins, le
support de la géographie est nouveau mais ne supporte que le centroïde de la boîte de délimitation. Renvoie la distance en 2D
entre A et B.
• ST_Area - Amélioration : 2.2.0 - mesure sur sphéroïde effectuée avec GeographicLib pour une meilleure précision et ro-
bustesse. Nécessite PROJ >= 4.9.0 pour profiter de la nouvelle fonctionnalité. Renvoie l’aire d’une géométrie polygonale.
• ST_AsX3D - Amélioration : 2.2.0 : Prise en charge des coordonnées géographiques et de l’inversion des axes (x/y, long/lat).
Voir les options pour plus de détails. Renvoie une géométrie au format X3D xml node element : ISO-IEC-19776-1.2-
X3DEncodings-XML
• ST_Azimuth - Amélioration : 2.2.0 mesure sur sphéroïde effectuée avec GeographicLib pour améliorer la précision et la
robustesse. Nécessite PROJ >= 4.9.0 pour profiter de la nouvelle fonctionnalité. Renvoie l’azimut basé sur le nord d’une ligne
entre deux points.
• ST_Distance - Amélioration : 2.2.0 - mesure sur sphéroïde effectuée avec GeographicLib pour une meilleure précision et
robustesse. Nécessite PROJ >= 4.9.0 pour profiter de la nouvelle fonctionnalité. Renvoie la distance entre deux valeurs de
geometry ou geography.
• ST_Scale - Amélioration : La prise en charge de la mise à l’échelle de toutes les dimensions (paramètre factor) a été introduite
dans la version 2.2.0. Met à l’échelle une géométrie en fonction de facteurs donnés.
Manuel PostGIS 3.4.0dev 857 / 870
• ST_Split - Amélioration : la version 2.2.0 prend en charge la division d’une ligne par une limite multiligne, multipoint ou
(multi)polygone. Renvoie une collection de géométries créées en divisant une géométrie par une autre géométrie.
• ST_Summary - Amélioré : 2.2.0 Ajout de la prise en charge des TIN et des courbes Renvoie un résumé textuel du contenu
d’une géométrie.
• <-> - Modifié : 2.2.0 -- Pour les utilisateurs de PostgreSQL 9.5, l’ancienne syntaxe Hybrid peut être plus lente, donc vous
voudrez vous débarrasser de ce hack si vous exécutez votre code uniquement sur PostGIS 2.2+ 9.5+. Voir les exemples ci-
dessous. Renvoie la distance en 2D entre A et B.
• ST_3DClosestPoint - Modifié : 2.2.0 - si 2 géométries 2D sont saisies, un point 2D est renvoyé (au lieu de l’ancien comporte-
ment supposant 0 pour Z manquant). Dans le cas de 2D et 3D, Z n’est plus supposé être 0 pour Z manquant. Renvoie le point
3D sur g1 qui est le plus proche de g2. Il s’agit du premier point de la ligne 3D la plus courte.
• ST_3DDistance - Modifié : 2.2.0 - Dans le cas de la 2D et de la 3D, Z n’est plus considéré comme égal à 0 en cas de Z
manquant. Renvoie la distance cartésienne minimale en 3D (basée sur la référence spatiale) entre deux géométries en unités
projetées.
• ST_3DLongestLine - Modifié : 2.2.0 - si 2 géométries 2D sont saisies, un point 2D est renvoyé (au lieu de l’ancien comporte-
ment supposant 0 pour Z manquant). Dans le cas de 2D et 3D, Z n’est plus supposé être 0 pour Z manquant. Renvoie la ligne
3D la plus longue entre deux géométries
• ST_3DMaxDistance - Modifié : 2.2.0 - Dans le cas de la 2D et de la 3D, Z n’est plus considéré comme égal à 0 en cas de
Z manquant. Renvoie la distance maximale cartésienne 3D (basée sur la référence spatiale) entre deux géométries en unités
projetées.
• ST_3DShortestLine - Modifié : 2.2.0 - si 2 géométries 2D sont saisies, un point 2D est renvoyé (au lieu de l’ancien comporte-
ment supposant 0 pour Z manquant). Dans le cas de 2D et 3D, Z n’est plus supposé être 0 pour Z manquant. Renvoie la ligne
3D la plus courte entre deux géométries
• ST_DistanceSphere - Modifié : 2.2.0 Dans les versions antérieures, cette fonction s’appelait ST_Distance_Sphere Renvoie la
distance minimale en mètres entre deux géométries lon/lat en utilisant un modèle de terre sphérique.
• ST_DistanceSpheroid - Modifié : 2.2.0 Dans les versions précédentes, cette fonction était appelée ST_Distance_Sphéroïde
Renvoie la distance minimale entre deux géométries lon/lat en utilisant un modèle de terre sphéroïdale.
• ST_Equals - Modifié : 2.2.0 Retourne vrai même pour les géométries invalides si elles sont binairement égales Teste si deux
géométries comprennent le même ensemble de points
• ST_LengthSpheroid - Modifié : 2.2.0 Dans les versions précédentes, cette fonction s’appelait ST_Length_Spheroid et avait
l’alias ST_3DLength_Spheroid Renvoie la longueur/périmètre 2D ou 3D d’une géométrie lon/lat sur un sphéroïde.
• ST_MemSize - Modifié : 2.2.0 nom modifié en ST_MemSize pour respecter la convention de nommage. Renvoie la quantité
d’espace mémoire que prend une géométrie.
• ST_PointInsideCircle - Modifié : 2.2.0 Dans les versions précédentes, cette fonction était appelée ST_Point_Inside_Circle
Teste si un point géométrique se trouve à l’intérieur d’un cercle défini par un centre et un rayon
Les fonctions indiquées ci-dessous sont des fonctions PostGIS qui ont été ajoutées ou améliorées.
Fonctions nouvelles dans PostGIS 2.1
• ST_3DArea - Disponibilité : 2.1.0 Calcule la surface des géométries de surface 3D. Retourne 0 pour les solides.
• ST_3DIntersection - Disponibilité : 2.1.0 Réaliser une intersection 3D
• ST_Box2dFromGeoHash - Disponibilité : 2.1.0 Retourne une BOX2D à partir d’une chaîne GeoHash.
Manuel PostGIS 3.4.0dev 858 / 870
• ST_DelaunayTriangles - Disponibilité : 2.1.0 Renvoie la triangulation de Delaunay des sommets d’une géométrie.
• ST_Extrude - Disponibilité : 2.1.0 Extruder une surface vers un volume
• ST_ForceLHR - Disponibilité : 2.1.0 Force l’orientation LHR d’un objet
• ST_GeomFromGeoHash - Disponibilité : 2.1.0 Retourne une geometry depuis une chaîne GeoHash.
• ST_MinkowskiSum - Disponibilité : 2.1.0 Effectue la somme de Minkowski
• ST_Orientation - Disponibilité : 2.1.0 Détermine l’orientation d’une surface
• postgis.backend - Disponibilité : 2.1.0 Le backend qui sera utilisé par les fonctions lorsque GEOS et SFCGAL se
recouvrent. Options : geos ou sfcgal. Valeur par défaut geos.
• postgis_sfcgal_version - Disponibilité : 2.1.0 Retourne la version de SFCGAL utilisée
• ST_AsGML - Amélioration : 2.1.0 La prise en charge des identifiants a été introduite pour GML 3. Renvoyer la géométrie en
tant qu’élément GML version 2 ou 3.
• ST_Boundary - Amélioration : 2.1.0 introduction du support pour Triangle Renvoie la limite d’une géométrie.
• ST_DWithin - Amélioration : la version 2.1.0 a amélioré la vitesse de la géographie. Voir Making Geography faster pour plus
de détails. Teste si deux géométries se trouvent à une distance donnée
• ST_DWithin - Amélioration : la prise en charge des géométries courbes a été introduite dans la version 2.1.0. Teste si deux
géométries se trouvent à une distance donnée
• ST_Distance - Amélioration : la version 2.1.0 a amélioré la vitesse pour le type geography. Voir Making Geography faster
pour plus de détails. Renvoie la distance entre deux valeurs de geometry ou geography.
• ST_Distance - Amélioration : 2.1.0 - la prise en charge des géométries courbes a été introduite. Renvoie la distance entre deux
valeurs de geometry ou geography.
• ST_DumpPoints - Amélioré : 2.1.0 Vitesse plus rapide. Réimplémentation en C natif. Renvoie un ensemble de lignes geome-
try_dump pour les coordonnées dans une géométrie.
• ST_MakeValid - Amélioration : 2.1.0, ajout du support pour GEOMETRYCOLLECTION et MULTIPOINT. Tente de rendre
valide une géométrie invalide sans perdre de sommets.
• ST_Segmentize - Amélioration : la prise en charge des objets de type geography a été introduite dans la version 2.1.0. Renvoie
une geometry/geography modifiée dont aucun segment ne dépasse une distance donnée.
• ST_Summary - Amélioré : 2.1.0 Indicateur S pour indiquer si le système de référence spatiale est connu Renvoie un résumé
textuel du contenu d’une géométrie.
• ST_EstimatedExtent - Modifié : 2.1.0. Jusqu’à la version 2.0.x, cette fonction était appelée ST_Estimated_Extent. Renvoie
l’étendue estimée d’une table spatiale.
• ST_Force2D - Modifié : 2.1.0. Jusqu’à la version 2.0.x, elle s’appelait ST_Force_2D. Forcer les géométries à passer en "mode
bidimensionnel".
Manuel PostGIS 3.4.0dev 859 / 870
• ST_Force3D - Modifié : 2.1.0. Jusqu’à la version 2.0.x, elle s’appelait ST_Force_3D. Force les géométries en mode XYZ. Il
s’agit d’un alias de ST_Force3DZ.
• ST_Force3DM - Modifié : 2.1.0. Jusqu’à la version 2.0.x, elle s’appelait ST_Force_3DM. Forcer les géométries en mode
XYM.
• ST_Force3DZ - Modifié : 2.1.0. Jusqu’à la version 2.0.x, elle s’appelait ST_Force_3DZ. Forcer les géométries en mode XYZ.
• ST_Force4D - Modifié : 2.1.0. Jusqu’à la version 2.0.x, elle s’appelait ST_Force_4D. Forcer les géométries en mode XYZM.
• ST_ForceCollection - Modifié : 2.1.0. Jusqu’à la version 2.0.x, cette fonction était appelée ST_Force_Collection. Convertir la
géométrie en une GEOMETRYCOLLECTION.
• ST_LineInterpolatePoint - Modifié : 2.1.0. Jusqu’à la version 2.0.x, cette fonction était appelée ST_Line_Interpolate_Point.
Renvoie un point interpolé le long d’une ligne à un emplacement fractionnaire.
• ST_LineLocatePoint - Modifié : 2.1.0. Jusqu’à la version 2.0.x, cette fonction était appelée ST_Line_Locate_Point. Renvoie
l’emplacement fractionnaire du point le plus proche d’un point sur une ligne.
• ST_LineSubstring - Modifié : 2.1.0. Jusqu’à la version 2.0.x, cette fonction était appelée ST_Line_Substring. Renvoie la partie
d’une ligne située entre deux emplacements fractionnaires.
• ST_Segmentize - Modifié : 2.1.0 Suite à l’introduction de la prise en charge du type geography, l’utilisation ST_Segmentize(’LINESTR
2, 3 4)’, 0.5) provoque une erreur de fonction ambiguë. L’entrée doit être correctement typée en tant que geometry ou geogra-
phy. Utilisez ST_GeomFromText, ST_GeogFromText ou un cast vers le type requis (par exemple, ST_Segmentize(’LINESTRING(1
2, 3 4)’::geometry, 0.5) ) Renvoie une geometry/geography modifiée dont aucun segment ne dépasse une distance donnée.
Les fonctions indiquées ci-dessous sont des fonctions PostGIS qui ont été ajoutées ou améliorées.
Fonctions nouvelles dans PostGIS 2.0
• &&& - Disponibilité : 2.0.0 Renvoie TRUE si la boîte de délimitation n-D de A intersecte la boîte de délimitation n-D de B.
• <#> - Disponibilité : 2.0.0 -- KNN disponible uniquement pour PostgreSQL 9.1+ Renvoie la distance 2D entre les boîtes de
délimitation A et B.
• <-> - Disponibilité : 2.0.0 -- Le KNN fournit des voisins les plus proches basés sur les distances entre les centroïdes géométriques
au lieu des distances réelles. Résultats exacts pour les points, inexacts pour tous les autres types. Disponible pour PostgreSQL
9.1+ Renvoie la distance en 2D entre A et B.
• ST_3DClosestPoint - Disponibilité : 2.0.0 Renvoie le point 3D sur g1 qui est le plus proche de g2. Il s’agit du premier point
de la ligne 3D la plus courte.
• ST_3DDFullyWithin - Disponibilité : 2.0.0 Teste si deux géométries 3D sont entièrement comprises dans une distance 3D
donnée
• ST_3DDWithin - Disponibilité : 2.0.0 Teste si deux géométries 3D se trouvent à une distance 3D donnée
• ST_3DDistance - Disponibilité : 2.0.0 Renvoie la distance cartésienne minimale en 3D (basée sur la référence spatiale) entre
deux géométries en unités projetées.
• ST_3DIntersects - Disponibilité : 2.0.0 Teste si deux géométries se croisent dans l’espace en 3D - uniquement pour les points,
les lignes, les polygones, les surfaces polyédriques (aire)
• ST_3DLongestLine - Disponibilité : 2.0.0 Renvoie la ligne 3D la plus longue entre deux géométries
• ST_3DMaxDistance - Disponibilité : 2.0.0 Renvoie la distance maximale cartésienne 3D (basée sur la référence spatiale) entre
deux géométries en unités projetées.
• ST_3DShortestLine - Disponibilité : 2.0.0 Renvoie la ligne 3D la plus courte entre deux géométries
Manuel PostGIS 3.4.0dev 860 / 870
• ST_AsLatLonText - Disponibilité : 2.0 Renvoie la représentation en degrés, minutes et secondes du point donné.
• ST_AsX3D - Disponibilité : 2.0.0: ISO-IEC-19776-1.2-X3DEncodings-XML Renvoie une géométrie au format X3D xml
node element : ISO-IEC-19776-1.2-X3DEncodings-XML
• ST_CollectionHomogenize - Disponibilité : 2.0.0 Renvoie la représentation la plus simple d’une collection de géométries.
• ST_ConcaveHull - Disponibilité : 2.0.0 Calcule une géométrie éventuellement concave qui contient tous les sommets de la
géométrie d’entrée
• ST_FlipCoordinates - Disponibilité : 2.0.0 Renvoie une version d’une géométrie dont les axes X et Y sont inversés.
• ST_GeomFromGeoJSON - Disponibilité : 2.0.0 nécessite JSON-C >= 0.9 Prend en entrée une géométrie au format
geojson et renvoie un objet Postgis de type geometry.
• ST_InterpolatePoint - Disponibilité : 2.0.0 Renvoie la mesure interpolée d’une géométrie la plus proche d’un point.
• ST_IsValidDetail - Disponibilité : 2.0.0 Renvoie une ligne valid_detail indiquant si une géométrie est valide ou sinon une
raison et une localisation.
• ST_IsValidReason - Disponibilité : la version 2.0 prend des flags. Renvoie un texte indiquant si une géométrie est valide, ou la
raison de son invalidité.
• ST_MakeLine - Disponibilité : 2.0.0 - La prise en charge des éléments d’entrée LineString a été introduite Crée une LineString
à partir de géométries Point, MultiPoint ou LineString.
• ST_MakeValid - Disponibilité : 2.0.0 Tente de rendre valide une géométrie invalide sans perdre de sommets.
• ST_Node - Disponibilité : 2.0.0 Nœuds d’une collection de lignes.
• ST_NumPatches - Disponibilité : 2.0.0 Renvoie le nombre de faces d’une surface polyédrique. Retourne null pour les
géométries non polyédriques.
• ST_OffsetCurve - Disponibilité : 2.0 Renvoie une ligne décalée par rapport à une distance et un côté donnés à partir d’une
ligne en entrée.
• ST_PatchN - Disponibilité : 2.0.0 Renvoie la Nième géométrie (face) d’une PolyhedralSurface.
• ST_Perimeter - Disponibilité 2.0.0 : La prise en charge du type geography a été introduite Renvoie la longueur de la limite
d’une géométrie polygonale ou d’une géographie.
• ST_Project - Disponibilité : 2.0.0 Returns a point projected from a start point by a distance and bearing (azimuth).
• ST_RelateMatch - Disponibilité : 2.0.0 Teste si une matrice d’intersection DE-9IM correspond à un modèle de matrice
d’intersection
• ST_SharedPaths - Disponibilité : 2.0.0 Renvoie une collection contenant les chemins partagés par les deux lignes/multilignes
en entrée.
• ST_Snap - Disponibilité : 2.0.0 Accrocher les segments et les sommets de la géométrie d’entrée aux sommets d’une géométrie
de référence.
• ST_Split - Disponibilité : 2.0.0 nécessite GEOS Renvoie une collection de géométries créées en divisant une géométrie par
une autre géométrie.
• ST_UnaryUnion - Disponibilité : 2.0.0 Calcule l’union des composantes d’une seule géométrie.
• && - Amélioration : 2.0.0 introduction du support des surfaces polyédriques. Renvoi VRAI si la boite englobante 2D de A
intersecte la boite englobante 2D de B.
• AddGeometryColumn - Amélioration : 2.0.0 introduction du paramètre use_typmod. Le comportement par défaut
est de créer une colonne géométrique avec modificateur de type au lieu de contraintes sur la colonne. Ajoute une colonne de
géométrie à une table existante.
Manuel PostGIS 3.4.0dev 861 / 870
• Box2D - Amélioration : 2.0.0 introduction du support TIN, Triangles et surfaces polyédriques. Renvoie une BOX2D représen-
tant l’étendue 2D d’une géométrie.
• Box3D - Amélioration : 2.0.0 introduction du support TIN, Triangles et surfaces polyédriques. Renvoie une BOX3D représen-
tant l’étendue 3D d’une géométrie.
• GeometryType - Amélioration : 2.0.0 introduction du support TIN, Triangles et surfaces polyédriques. Renvoie le type d’une
géométrie sous forme de texte.
• Populate_Geometry_Columns - Amélioration : 2.0.0 L’argument optionnel use_typmod a été introduit pour con-
troler si les colonnes sont créés avec des modificateurs de type ou des contraintes de vérification. Assure que les colonnes
géométriques sont définies avec des modificateurs de type ou qu’elles sont soumises à des contraintes spatiales appropriées.
• ST_3DExtent - Amélioration : 2.0.0 introduction du support TIN, Triangles et surfaces polyédriques. Fonction d’agrégation
qui renvoie la boîte de délimitation 3D des géométries.
• ST_Affine - Amélioration : 2.0.0 introduction du support TIN, Triangles et surfaces polyédriques. Appliquer une transforma-
tion affine 3D à une géométrie.
• ST_Area - Amélioration : 2.0.0 - la prise en charge des surfaces polyédriques 2D a été introduite. Renvoie l’aire d’une
géométrie polygonale.
• ST_AsBinary - Amélioration : 2.0.0 introduction du support TIN, Triangles et surfaces polyédriques. Renvoie la représentation
OGC/ISO Well-Known Binary (WKB) de la géométrie/geography sans les métadonnées SRID.
• ST_AsBinary - Amélioration : 2.0.0 le support pour des dimensions de coordonnées plus élevées a été introduit. Renvoie la
représentation OGC/ISO Well-Known Binary (WKB) de la géométrie/geography sans les métadonnées SRID.
• ST_AsBinary - Amélioration : 2.0.0 le support pour spécifier endian avec geography a été introduit. Renvoie la représentation
OGC/ISO Well-Known Binary (WKB) de la géométrie/geography sans les métadonnées SRID.
• ST_AsEWKB - Amélioration : 2.0.0 introduction du support TIN, Triangles et surfaces polyédriques. Renvoie la représentation
Extended Well-Known Binary (EWKB) de la géométrie avec les métadonnées SRID.
• ST_AsEWKT - Amélioration : la version 2.0.0 a introduit la prise en charge de la geography, des surfaces polyédriques, des
triangles et des TIN. Renvoie la représentation Well-Known Text (WKT) de la géométrie avec les métadonnées SRID.
• ST_AsGML - Amélioration : la prise en charge du préfixe 2.0.0 a été introduite. L’option 4 pour GML3 a été introduite pour
permettre l’utilisation de LineString au lieu de Curve tag pour les lignes. La prise en charge GML3 des surfaces polyédriques
et des TINS a été introduite. L’option 32 a été introduite pour produire la boîte. Renvoyer la géométrie en tant qu’élément
GML version 2 ou 3.
• ST_AsKML - Amélioré : 2.0.0 - Ajout d’un préfixe namespace, utilisation d’arguments par défaut et d’arguments nommés
Renvoyer la géométrie sous forme d’élément KML.
• ST_Azimuth - Amélioration : la prise en charge du type geography a été introduite dans la version 2.0.0. Renvoie l’azimut
basé sur le nord d’une ligne entre deux points.
• ST_Dimension - Amélioration : 2.0.0 introduction du support TIN et surfaces polyédriques. Ne renvoie plus une exception si
une GEOMETRY EMPTY est passée. Renvoie la dimension topologique d’une géométrie.
• ST_Dump - Amélioration : 2.0.0 introduction du support TIN, Triangles et surfaces polyédriques. Renvoie un ensemble de
lignes geometry_dump pour les composants d’une géométrie.
• ST_DumpPoints - Amélioration : 2.0.0 introduction du support TIN, Triangles et surfaces polyédriques. Renvoie un ensemble
de lignes geometry_dump pour les coordonnées dans une géométrie.
• ST_Expand - Amélioration : 2.0.0 introduction du support TIN, Triangles et surfaces polyédriques. Renvoie une boîte de
délimitation développée à partir d’une autre boîte de délimitation ou d’une géométrie.
• ST_Extent - Amélioration : 2.0.0 introduction du support TIN, Triangles et surfaces polyédriques. Fonction agrégée qui
renvoie la boîte de délimitation des géométries.
Manuel PostGIS 3.4.0dev 862 / 870
• ST_Force2D - Amélioration : 2.0.0 introduction du support des surfaces polyédriques. Forcer les géométries à passer en "mode
bidimensionnel".
• ST_Force3D - Amélioration : 2.0.0 introduction du support des surfaces polyédriques. Force les géométries en mode XYZ. Il
s’agit d’un alias de ST_Force3DZ.
• ST_Force3DZ - Amélioration : 2.0.0 introduction du support des surfaces polyédriques. Forcer les géométries en mode XYZ.
• ST_ForceCollection - Amélioration : 2.0.0 introduction du support des surfaces polyédriques. Convertir la géométrie en une
GEOMETRYCOLLECTION.
• ST_ForceRHR - Amélioration : 2.0.0 introduction du support des surfaces polyédriques. Force l’orientation des sommets d’un
polygone à suivre la règle de la main droite.
• ST_GMLToSQL - Amélioration : 2.0.0 introduction du support TIN et surfaces polyédriques. Retourne un objet de type
ST_Geometry à partir de sa représentation GML. Alias pour ST_GeomFromGML
• ST_GMLToSQL - Amélioration : 2.0.0 paramètre optionnel de srid par défaut ajouté. Retourne un objet de type
ST_Geometry à partir de sa représentation GML. Alias pour ST_GeomFromGML
• ST_GeomFromEWKB - Amélioration : 2.0.0 introduction du support TIN et surfaces polyédriques. Retourne un objet
ST_Geometry à partir de sa représentation binaire étendue (Extended Well-Known Binary representation, EWKB).
• ST_GeomFromEWKT - Amélioration : 2.0.0 introduction du support TIN et surfaces polyédriques. Retourne un objet
ST_Geometry à partir de sa représentation textuelle étendue (Extended Well-Known Text representation, EWKT).
• ST_GeomFromGML - Amélioration : 2.0.0 introduction du support TIN et surfaces polyédriques. Prend en paramètre une
représentation GML d’une géométrie et renvoie un objet PostGIS de type geometry.
• ST_GeomFromGML - Amélioration : 2.0.0 paramètre optionnel de srid par défaut ajouté. Prend en paramètre une
représentation GML d’une géométrie et renvoie un objet PostGIS de type geometry.
• ST_GeometryN - Amélioration : 2.0.0 introduction du support TIN, Triangles et surfaces polyédriques. Renvoie un élément
d’une collection de géométries.
• ST_GeometryType - Amélioration : 2.0.0 introduction du support des surfaces polyédriques. Renvoie le type SQL-MM d’une
géométrie sous forme de texte.
• ST_IsClosed - Amélioration : 2.0.0 introduction du support des surfaces polyédriques. Teste si les points de départ et d’arrivée
d’une LineString coïncident. Pour une PolyhedralSurface, teste si elle est fermée (volumétrique).
• ST_MakeEnvelope - Amélioré : 2.0 : La possibilité de spécifier une enveloppe sans spécifier un SRID a été introduite. Crée
un polygone rectangulaire à partir des coordonnées minimales et maximales.
• ST_MakeValid - Amélioré : 2.0.1, améliorations de la vitesse Tente de rendre valide une géométrie invalide sans perdre de
sommets.
• ST_NPoints - Amélioration : 2.0.0 introduction du support des surfaces polyédriques. Retourne le nombre de points (vertex)
d’un objet géométrique.
• ST_NumGeometries - Amélioration : 2.0.0 introduction du support TIN, Triangles et surfaces polyédriques. Renvoie le nombre
d’éléments dans une collection de géométrie.
• ST_Relate - Amélioration : 2.0.0 - ajout de la prise en charge de la spécification de boundary node rule. Teste si deux géométries
ont une relation topologique correspondant à un modèle de matrice d’intersection, ou calcule leur matrice d’intersection
• ST_Rotate - Amélioration : 2.0.0 introduction du support TIN, Triangles et surfaces polyédriques. Fait pivoter une géométrie
autour d’un point d’origine.
• ST_Rotate - Amélioration : 2.0.0 des paramètres supplémentaires ont été ajoutés pour spécifier l’origine de la rotation. Fait
pivoter une géométrie autour d’un point d’origine.
• ST_RotateX - Amélioration : 2.0.0 introduction du support TIN, Triangles et surfaces polyédriques. Fait pivoter une géométrie
autour de l’axe X.
Manuel PostGIS 3.4.0dev 863 / 870
• ST_RotateY - Amélioration : 2.0.0 introduction du support TIN, Triangles et surfaces polyédriques. Fait pivoter une géométrie
autour de l’axe Y.
• ST_RotateZ - Amélioration : 2.0.0 introduction du support TIN, Triangles et surfaces polyédriques. Fait pivoter une géométrie
autour de l’axe Z.
• ST_Scale - Amélioration : 2.0.0 introduction du support TIN, Triangles et surfaces polyédriques. Met à l’échelle une géométrie
en fonction de facteurs donnés.
• ST_ShiftLongitude - Amélioration : 2.0.0 introduction du support TIN et surfaces polyédriques. Décale les coordonnées de
longitude d’une géométrie entre -180..180 et 0..360.
• ST_Summary - Amélioré : la version 2.0.0 a ajouté la prise en charge du type geography Renvoie un résumé textuel du contenu
d’une géométrie.
• ST_Transform - Amélioration : 2.0.0 introduction du support des surfaces polyédriques. Renvoie une nouvelle géométrie dont
les coordonnées ont été transformées dans un système de référence spatial différent.
• AddGeometryColumn - Changement : 2.0.0 Cette fonction ne met plus à jour geometry_columns maintenant que
geometry_columns est une vue basée sur le catalogue système. Par défaut, elle ne créée plus de contraintes mais utilise le
modificateur de type de PostgreSQL. Ainsi, par exemple, créer une colonne de type POINT WGS84 est désormais équiva-
lent à : ALTER TABLE some_table ADD COLUMN geom geometry(Point,4326) ; Ajoute une colonne de
géométrie à une table existante.
• AddGeometryColumn - Changement : 2.0.0 Si l’ancien mécanisme basé sur les contraintes est nécessaire, utiliser le
paramètre use_typmod avec la valeur false. Ajoute une colonne de géométrie à une table existante.
• AddGeometryColumn - Changement : 2.0.0 Les vues ne peuvent plus être enregistrées dans geometry_columns.
Cependant, les vues construites à partir de tables contenant des géométries définies avec le modificateur de type et n’utilisant
pas de fonctions d’encapsulation seront enregistrées dans la vue geometry_columns car elles héritent du mécanisme des ta-
bles dont elles sont issues. Les vues utilisant des fonctions renvoyant d’autres géométries doivent être transtypées vers des
géométries avec modificateur de type pour pouvoir être correctement référencées dans la vue geometry_columns. Cf. . Ajoute
une colonne de géométrie à une table existante.
• DropGeometryColumn - Changement : 2.0.0 Fonction assurant la rétro compatibilité. Maintenant que geometry_columns
est une vue basée sur les catalogues du système, la colonne géométrique peut être supprimée d’une table comme tout autre
colonne en utilisant ALTER TABLE Supprime une colonne géométrique d’une table spatiale.
• DropGeometryTable - Changement : 2.0.0 Function assurant la rétro compatibilité. Maintenant que geometry_columns
est une vue basée sur les catalogues du système, une table spatiale peut etre supprimée comme tout autre table en utilisant AL-
TER TABLE Supprime une table et toutes ces références dans geometry_columns.
• Populate_Geometry_Columns - Changement : 2.0.0 Par défaut, utilise les modificateurs de type au lieu de contraintes
de vérification pour contraindre les types géométriques. Le comportement basé sur les contraintes peut être activé en mettant
le nouveau paramètre use_typmod à false. Assure que les colonnes géométriques sont définies avec des modificateurs de type
ou qu’elles sont soumises à des contraintes spatiales appropriées.
• ST_3DExtent - Modifié : 2.0.0 Dans les versions précédentes, cette fonction était appelée ST_Extent3D. Fonction d’agrégation
qui renvoie la boîte de délimitation 3D des géométries.
• ST_3DLength - Modifié : 2.0.0 Dans les versions précédentes, cette fonction était appelée ST_Length3D Renvoie la longueur
3D d’une géométrie linéaire.
• ST_3DMakeBox - Modifié : 2.0.0 Dans les versions précédentes, cette fonction s’appelait ST_MakeBox3D Crée un BOX3D
défini par deux géométries de points 3D.
• ST_3DPerimeter - Modifié : 2.0.0 Dans les versions antérieures, il s’appelait ST_Perimeter3D Renvoie le périmètre 3D d’une
géométrie polygonale.
Manuel PostGIS 3.4.0dev 864 / 870
• ST_AsBinary - Modifié : 2.0.0 Les entrées de cette fonction ne peuvent pas être inconnues, elles doivent être des géométries.
Des constructions telles que ST_AsBinary(’POINT(1 2)’) ne sont plus valides et vous obtiendrez une erreur de type n st_asbinary(unkno
is not unique. Un code comme celui-là doit être changé en ST_AsBinary(’POINT(1 2)’::geometry);. Si cela n’est pas possible,
alors installez legacy.sql. Renvoie la représentation OGC/ISO Well-Known Binary (WKB) de la géométrie/geography sans les
métadonnées SRID.
• ST_AsGML - Modifié : 2.0.0 utiliser les args nommés par défaut Renvoyer la géométrie en tant qu’élément GML version 2 ou
3.
• ST_AsGeoJSON - Modifié : 2.0.0 supporte les args par défaut et les args nommés. Renvoie une géométrie sous la forme d’un
élément GeoJSON.
• ST_AsSVG - Modifié : 2.0.0 pour utiliser les args par défaut et supporter les args nommés Renvoie les données de chemin
SVG pour une géométrie.
• ST_EndPoint - Modifié : 2.0.0 ne fonctionne plus avec les MultiLineStrings à géométrie unique. Dans les anciennes versions
de PostGIS, une MultiLineString à géométrie unique fonctionnait avec cette fonction et renvoyait le point final. Dans la
version 2.0.0, elle renvoie NULL comme toute autre MultiLineString. L’ancien comportement était une fonctionnalité non
documentée, mais les personnes qui supposaient que leurs données étaient stockées en tant que LINESTRING peuvent voir
ces dernières retourner NULL dans la version 2.0.0. Renvoie le dernier point d’une LineString ou CircularLineString.
• ST_GeomFromText - Changement : 2.0.0 dans les version précédentes de PostGIS ST_GeomFromText(’GEOMETRYCOLL
etait autorisé. C’est désormais interdit dans PostGIS 2.0.0 pour respecter la norme SQL/MM. La forme privilégiée désormais
est : ST_GeomFromText(’GEOMETRYCOLLECTION EMPTY’) Retourne un objet ST_Geometry à partir de sa
représentation textuelle Well-Known Text (WKT).
• ST_GeometryN - Changement : 2.0.0. Les versions antérieures renvoient NULL pour les géometries simples (un seul
objet). Renvoie désormais la géométrie pour le cas ST_GeometryN(..,1). Renvoie un élément d’une collection de géométries.
• ST_IsEmpty - Modifié : 2.0.0 Dans les versions précédentes de PostGIS, ST_GeomFromText(’GEOMETRYCOLLECTION(EMPTY)
était autorisé. Ceci est maintenant illégal dans PostGIS 2.0.0 pour mieux se conformer aux normes SQL/MM Teste si une
géométrie est vide.
• ST_Length - Modifié : 2.0.0 Rupture -- dans les versions précédentes, appliquer ceci à un MULTI/POLYGONE de type
geography donnait le périmètre du POLYGONE/MULTIPOLYGONE. Dans la version 2.0.0, cette fonction a été modifiée
pour retourner 0 afin d’être en ligne avec le comportement de la géométrie. Veuillez utiliser ST_Perimeter si vous souhaitez
obtenir le périmètre d’un polygone Renvoie la longueur 2D d’une géométrie linéaire.
• ST_LocateAlong - Modifié : 2.0.0 dans les versions précédentes, cette fonction était appelée ST_Locate_Along_Measure.
Renvoie le(s) point(s) d’une géométrie qui correspond(ent) à une valeur de mesure.
• ST_LocateBetween - Modifié : 2.0.0 - dans les versions précédentes, cette fonction s’appelait ST_Locate_Between_Measures.
Renvoie les parties d’une géométrie qui correspondent à un intervalle de mesure.
• ST_NumGeometries - Modifié : 2.0.0 Dans les versions précédentes, cette fonction renvoyait NULL si la géométrie n’était pas
de type collection/MULTI. 2.0.0+ renvoie maintenant 1 pour les géométries simples, par exemple POLYGONE, LINESTRING,
POINT. Renvoie le nombre d’éléments dans une collection de géométrie.
• ST_NumInteriorRings - Modifié : 2.0.0 - dans les versions antérieures, il permettait de passer un MULTIPOLYGONE, renvoy-
ant le nombre d’anneaux intérieurs du premier POLYGONE. Renvoie le nombre d’anneaux intérieurs (trous) d’un polygone.
• ST_PointN - Modifié : la version 2.0.0 ne fonctionne plus avec les multi-lignes à géométrie unique. Dans les anciennes
versions de PostGIS, une multi-ligne d’une seule ligne fonctionnait parfaitement avec cette fonction et renvoyait le point de
départ. Dans la version 2.0.0, elle renvoie simplement NULL comme n’importe quelle autre multi-ligne. Renvoie le Nième
point de la première LineString ou LineString circulaire d’une géométrie.
• ST_StartPoint - Modifié : 2.0.0 ne fonctionne plus avec les MultiLineStrings à géométrie unique. Dans les anciennes versions
de PostGIS, une MultiLineString à géométrie unique fonctionnait sans problème avec cette fonction et renvoyait le point de
départ. Dans la version 2.0.0, elle renvoie simplement NULL comme toute autre MultiLineString. L’ancien comportement
était une fonctionnalité non documentée, mais les personnes qui supposaient que leurs données étaient stockées en tant que
LINESTRING peuvent voir ces données retourner NULL dans la version 2.0.0. Renvoie le premier point d’une LineString.
Manuel PostGIS 3.4.0dev 865 / 870
Les fonctions indiquées ci-dessous sont des fonctions PostGIS qui ont été ajoutées ou améliorées.
Fonctions nouvelles dans PostGIS 1.5
• && - Disponibilité : 1.5.0 le support de la géographie a été introduit. Renvoi VRAI si la boite englobante 2D de A intersecte
la boite englobante 2D de B.
• PostGIS_LibXML_Version - Disponibilité : 1.5 Renvoie le numéro de version de la librairie libxml2.
• ST_AddMeasure - Disponibilité : 1.5.0 Interpole les mesures le long d’une géométrie linéaire.
• ST_AsBinary - Disponibilité : 1.5.0 Le support de la géographie a été introduit. Renvoie la représentation OGC/ISO Well-
Known Binary (WKB) de la géométrie/geography sans les métadonnées SRID.
• ST_AsGML - Disponibilité : 1.5.0 Le support de la géographie a été introduit. Renvoyer la géométrie en tant qu’élément GML
version 2 ou 3.
• ST_AsGeoJSON - Disponibilité : 1.5.0 Le support de la géographie a été introduit. Renvoie une géométrie sous la forme d’un
élément GeoJSON.
• ST_AsText - Disponibilité : 1.5 - le support de la geography a été introduit. Renvoie la représentation Well-Known Text
(WKT) de la géométrie/geography sans métadonnées SRID.
• ST_Buffer - Disponibilité : 1.5 - ST_Buffer a été amélioré pour prendre en charge différents types de terminaisons et de
jointures. Ceux-ci sont utiles, par exemple, pour convertir les lignes de route en routes polygonales avec des bords plats ou
carrés au lieu de bords arrondis. Un petit wrapper pour la geography a été ajouté. Calcule une géométrie couvrant tous les
points situés à une distance donnée d’une géométrie.
• ST_ClosestPoint - Disponibilité : 1.5.0 Renvoie le point 2D sur g1 qui est le plus proche de g2. Il s’agit du premier
point de la ligne la plus courte d’une géométrie à l’autre.
• ST_CollectionExtract - Disponibilité : 1.5.0 Pour une collection de géométries spécifiée, renvoie une multi-géométrie
contenant uniquement des éléments d’un type spécifié.
• ST_Covers - Disponibilité : 1.5 - le support de la geography a été introduit. Tests si chaque point de B est situé dans A
• ST_DFullyWithin - Disponibilité : 1.5.0 Teste si deux géométries sont entièrement comprises dans une distance
donnée
• ST_DWithin - Disponibilité : la prise en charge du type geography a été introduite dans la version 1.5.0 Teste si deux géométries
se trouvent à une distance donnée
• ST_Distance - Disponibilité : 1.5.0 La prise en charge du type geography a été introduite dans la version 1.5. Amélioration de
la vitesse pour les géométries planaires afin de mieux gérer les géométries de grande taille ou à nombreux sommets Renvoie la
distance entre deux valeurs de geometry ou geography.
• ST_DistanceSphere - Disponibilité : 1.5 - la prise en charge d’autres types de géométrie que les points a été introduite. Les
versions précédentes ne fonctionnaient qu’avec des points. Renvoie la distance minimale en mètres entre deux géométries
lon/lat en utilisant un modèle de terre sphérique.
• ST_DistanceSpheroid - Disponibilité : 1.5 - la prise en charge d’autres types de géométrie que les points a été introduite. Les
versions précédentes ne fonctionnaient qu’avec des points. Renvoie la distance minimale entre deux géométries lon/lat en
utilisant un modèle de terre sphéroïdale.
• ST_DumpPoints - Disponibilité : 1.5.0 Renvoie un ensemble de lignes geometry_dump pour les coordonnées dans
une géométrie.
• ST_Envelope - Disponibilité : 1.5.0 changement pour renvoyer un type double précision à la place de float4 Renvoie
une géométrie représentant la boîte de délimitation d’une géométrie.
• ST_Expand - Disponibilité : 1.5.0 comportement modifié pour afficher les coordonnées en double précision au lieu des coor-
données float4. Renvoie une boîte de délimitation développée à partir d’une autre boîte de délimitation ou d’une géométrie.
Manuel PostGIS 3.4.0dev 866 / 870
• ST_GMLToSQL - Disponibilité : 1.5, nécessite libxml2 1.6+ Retourne un objet de type ST_Geometry à partir de sa
représentation GML. Alias pour ST_GeomFromGML
• ST_GeomFromGML - Disponibilité : 1.5, nécessite libxml2 1.6+ Prend en paramètre une représentation GML d’une
géométrie et renvoie un objet PostGIS de type geometry.
• ST_GeomFromKML - Disponibilité : 1.5, nécessite libxml2 2.6+ Prend en entrée une géométrie au format KML et renvoie un
objet Postgis de type geometry.
• ST_HausdorffDistance - Disponibilité : 1.5.0 Renvoie la distance de Hausdorff entre deux géométries.
• ST_Intersection - Disponibilité : La version 1.5 a introduit la prise en charge du type de données geography. Calcule une
géométrie représentant la partie partagée des géométries A et B.
• ST_Intersects - Disponibilité : la version 1.5 a introduit la prise en charge du type geography. Teste si deux géométries se
croisent (elles ont au moins un point en commun)
• ST_Length - Disponibilité : 1.5.0 La prise en charge du type geography a été introduite dans la version 1.5. Renvoie la longueur
2D d’une géométrie linéaire.
• ST_LongestLine - Disponibilité : 1.5.0 Renvoie la ligne 2D la plus longue entre deux géométries.
• ST_MakeEnvelope - Disponibilité : 1.5 Crée un polygone rectangulaire à partir des coordonnées minimales et maximales.
• ST_MaxDistance - Disponibilité : 1.5.0 Renvoie la plus grande distance 2D entre deux géométries en unités projetées.
• ST_ShortestLine - Disponibilité : 1.5.0 Renvoie la ligne 2D la plus courte entre deux géométries
• ~= - Disponibilité : 1.5.0 comportement changé Renvoie TRUE si la boîte de délimitation de A est la même que celle de B.
Les fonctions indiquées ci-dessous sont des fonctions PostGIS qui ont été ajoutées ou améliorées.
Fonctions nouvelles dans PostGIS 1.4
• Populate_Geometry_Columns - Disponibilité : 1.4.0 Assure que les colonnes géométriques sont définies avec des
modificateurs de type ou qu’elles sont soumises à des contraintes spatiales appropriées.
• ST_Collect - Disponibilité : 1.4.0 - ST_Collect(geomarray) a été introduit. ST_Collect a été amélioré pour gérer plus de
géométries plus rapidement. Crée une géométrie GeometryCollection ou Multi à partir d’un ensemble de géométries.
• ST_LocateBetweenElevations - Disponibilité : 1.4.0 Renvoie les parties d’une géométrie qui se trouvent dans un
intervalle d’élévation (Z).
• ST_MakeLine - Disponibilité : 1.4.0 - création de ST_MakeLine(geomarray). L’agrégat spatial ST_MakeLine amélioré
pour supporter plus de points plus rapidement. Crée une LineString à partir de géométries Point, MultiPoint ou LineString.
• ST_MinimumBoundingCircle - Disponibilité : 1.4.0 Retourne le plus petit cercle polygonal qui contient une géométrie.
• ST_Union - Disponibilité : 1.4.0 - ST_Union a été amélioré. ST_Union(geomarray) a été introduit ainsi qu’une collecte
d’agrégats plus rapide dans PostgreSQL. Calcule une géométrie représentant l’union des ensembles de points des géométries
d’entrée.
Manuel PostGIS 3.4.0dev 867 / 870
Les fonctions indiquées ci-dessous sont des fonctions PostGIS qui ont été ajoutées ou améliorées.
Fonctions nouvelles dans PostGIS 1.3
• ST_LineToCurve - Disponibilité : 1.3.0 Convertit une géométrie linéaire en une géométrie courbe.
• ST_SimplifyPreserveTopology - Disponibilité : 1.3.3 Renvoie une version simplifiée et valide d’une géométrie, en utilisant
l’algorithme de Douglas-Peucker.
Manuel PostGIS 3.4.0dev 868 / 870
Chapter 13
Rapporter un problème
Rapporter un problème est effectivement fondamental afin d’aider le développement de PostGIS. Un rapport de bug efficace
permet à l’équipe des développeurs de PostGIS de reproduire le problème. Le rapport est donc pertinent s’il contient le script
qui le déclenche et toutes les informations à propos de l’environnement dans lequel il a été détecté. De bonnes informations
peuvent être obtenus par l’exécution de SELECT postgis_full_version() [pour postgis] et SELECT version()
[pour postgresql].
Si vous n’utilisez pas la dernière version, il vaut la peine de jeter un coup d’œil à son journal des changements de la version
d’abord, pour savoir si votre bug a déjà été corrigé.
L’utilisation du PostGIS bug tracker permettra de s’assurer que vos rapports ne sont pas rejetés et vous tiendra informé du
processus de traitement. Avant de signaler un nouveau bug, veuillez interroger la base de données pour voir s’il s’agit d’un bug
connu, et si c’est le cas, veuillez ajouter toute nouvelle information que vous possédez à son sujet.
Vous pouvez lire l’article de Simon Tatham sur Comment signaler efficacement les bugs avant de déposer un nouveau rapport.
La documentation doit refléter fidèlement les caractéristiques et le comportement du logiciel. Si ce n’est pas le cas, cela peut être
dû à un bug du logiciel ou à une erreur ou une lacune dans la documentation.
Les problèmes de documentation peuvent également être signalés au PostGIS bug tracker.
Si votre révision est triviale, décrivez-la simplement dans une nouvelle question du bug tracker, en précisant son emplacement
dans la documentation.
Si vos modifications sont plus importantes, il est préférable d’utiliser un correctif. Il s’agit d’un processus en quatre étapes sous
Unix (en supposant que vous ayez déjà installé git) :
Appendix A
Annexes
2023/07/29
This version requires PostgreSQL 12 or higher, GEOS 3.6 or higher, and Proj 6.1+. To take advantage of all features, GEOS
3.12+ is needed. To take advantage of all SFCGAL featurs, SFCGAL 1.4.1+ is needed.
NOTE: GEOS 3.12.0 details at GEOS 3.12.0 release notes
Many thanks to our translation teams, in particular:
Teramoto Ikuhiro (Japanese Team)
Vincent Bre (French Team)
A.1.2 Enhancements
5229, Drop support for Proj < 6.1 and PG 11 (Regina Obe)
5306, 734, postgis_full_version() and postgis_proj_version() now output more information about proj network configuration and
data paths. GEOS compile-time version also shown if different from run-time (Paul Ramsey, Sandro Santilli)
5447, postgis_restore.pl renamed to postgis_restore (Regina Obe)