- Catégories :
ST_DIMENSION¶
Si la valeur est de type GEOGRAPHY ou GEOMETRY, renvoie la « dimension » de la valeur. La dimension d’une valeur GEOGRAPHY ou GEOMETRY est :
Type d’objets géospatiaux |
Dimension |
---|---|
Point / MultiPoint |
0 |
LineString / MultiLineString |
1 |
Polygon / MultiPolygon |
2 |
GeometryCollection |
La dimension de la collection est égale à la dimension maximale de toutes les valeurs à l’intérieur de la collection. Par exemple, si un GeometryCollection contient un point (dimension 0) et une LineString (dimension 1), la dimension du GeometryCollection est 1. |
Fonctionnalité |
La dimension de la fonction est identique à la dimension de l’objet géospatial dans la fonction. |
FeatureCollection |
La règle est la même que pour GeometryCollection. |
Les valeurs renvoyées (0, 1, 2) correspondent à la signification courante du mot « dimension » : un polygone est un objet à deux dimensions, une ligne est un objet à une dimension et un point est un objet de dimension zéro.
Syntaxe¶
ST_DIMENSION( <geography_or_geometry_expression> )
Arguments¶
geography_or_geometry_expression
L’argument doit être une expression de type GEOGRAPHY ou GEOMETRY.
Renvoie¶
Une valeur de type INTEGER.
Notes sur l’utilisation¶
Si la fonction est passée NULL, la fonction renvoie NULL.
Pour les objets GEOGRAPHY :
Si la fonction reçoit un GeometryCollection contenant au moins un élément NULL et aucun élément non NULL, la fonction renvoie 0.
Si la fonction reçoit un GeometryCollection contenant au moins un élément NULL et au moins un élément non NULL, elle renvoie la dimension maximale des éléments non NULL.
Notez que certains autres systèmes renvoient des valeurs différentes pour les entrées NULL.
Exemples¶
Exemples GEOGRAPHY¶
L’exemple suivant illustre la fonction ST_DIMENSION :
create table geospatial_table_02 (id INTEGER, g GEOGRAPHY); insert into geospatial_table_02 values (1, 'POINT(-122.35 37.55)'), (2, 'MULTIPOINT((-122.35 37.55), (0.00 -90.0))'), (3, 'LINESTRING(-124.20 42.00, -120.01 41.99)'), (4, 'LINESTRING(-124.20 42.00, -120.01 41.99, -122.5 42.01)'), (5, 'MULTILINESTRING((-124.20 42.00, -120.01 41.99, -122.5 42.01), (10.0 0.0, 20.0 10.0, 30.0 0.0))'), (6, 'POLYGON((-124.20 42.00, -120.01 41.99, -121.1 42.01, -124.20 42.00))'), (7, 'MULTIPOLYGON(((-124.20 42.00, -120.01 41.99, -121.1 42.01, -124.20 42.0)), ((20.0 20.0, 40.0 20.0, 40.0 40.0, 20.0 40.0, 20.0 20.0)))') ;select st_dimension(g) as dimension, st_aswkt(g) from geospatial_table_02 order by dimension, id; +-----------+----------------------------------------------------------------------------------------------------+ | DIMENSION | ST_ASWKT(G) | |-----------+----------------------------------------------------------------------------------------------------| | 0 | POINT(-122.35 37.55) | | 0 | MULTIPOINT((-122.35 37.55),(0 -90)) | | 1 | LINESTRING(-124.2 42,-120.01 41.99) | | 1 | LINESTRING(-124.2 42,-120.01 41.99,-122.5 42.01) | | 1 | MULTILINESTRING((-124.2 42,-120.01 41.99,-122.5 42.01),(10 0,20 10,30 0)) | | 2 | POLYGON((-124.2 42,-120.01 41.99,-121.1 42.01,-124.2 42)) | | 2 | MULTIPOLYGON(((-124.2 42,-120.01 41.99,-121.1 42.01,-124.2 42)),((20 20,40 20,40 40,20 40,20 20))) | +-----------+----------------------------------------------------------------------------------------------------+
Exemples GEOMETRY¶
L’exemple suivant illustre la fonction ST_DIMENSION :
CREATE OR REPLACE TABLE geometry_shapes (g GEOMETRY); INSERT INTO geometry_shapes VALUES ('POINT(66 12)'), ('MULTIPOINT((45 21), (12 54))'), ('LINESTRING(40 60, 50 50, 60 40)'), ('MULTILINESTRING((1 1, 32 17), (33 12, 73 49, 87.1 6.1))'), ('POLYGON((17 17, 17 30, 30 30, 30 17, 17 17))'), ('MULTIPOLYGON(((-10 0,0 10,10 0,-10 0)),((-10 40,10 40,0 20,-10 40)))'), ('GEOMETRYCOLLECTION(POLYGON((-10 0,0 10,10 0,-10 0)),LINESTRING(40 60, 50 50, 60 40), POINT(99 11))') ; SELECT ST_DIMENSION(g), ST_ASWKT(g) FROM geometry_shapes;+-----------------+-------------------------------------------------------------------------------------------------+ | ST_DIMENSION(G) | ST_ASWKT(G) | |-----------------+-------------------------------------------------------------------------------------------------| | 0 | POINT(66 12) | | 0 | MULTIPOINT((45 21),(12 54)) | | 1 | LINESTRING(40 60,50 50,60 40) | | 1 | MULTILINESTRING((1 1,32 17),(33 12,73 49,87.1 6.1)) | | 2 | POLYGON((17 17,17 30,30 30,30 17,17 17)) | | 2 | MULTIPOLYGON(((-10 0,0 10,10 0,-10 0)),((-10 40,10 40,0 20,-10 40))) | | 2 | GEOMETRYCOLLECTION(POLYGON((-10 0,0 10,10 0,-10 0)),LINESTRING(40 60,50 50,60 40),POINT(99 11)) | +-----------------+-------------------------------------------------------------------------------------------------+