Catégories :

Fonctions géospatiales

ST_DIMENSION

Étant donné une valeur de type GEOGRAPHY, renvoie la « dimension » de la valeur. La dimension d’une valeur GEOGRAPHY 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_expression> )

Arguments

expression_géographie

L’argument doit être une expression de type GEOGRAPHY.

Renvoie

Une valeur de type INTEGER.

Notes sur l’utilisation

  • Si la fonction est passée NULL, la fonction renvoie NULL.

  • 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

L’exemple suivant illustre la fonction ST_DIMENSION :

create table geospatial_table_02 (g GEOGRAPHY);
insert into geospatial_table_02 values
    ('POINT(-122.35 37.55)'),
    ('MULTIPOINT((-122.35 37.55), (0.00 -90.0))'),
    ('LINESTRING(-124.20 42.00, -120.01 41.99)'),
    ('LINESTRING(-124.20 42.00, -120.01 41.99, -122.5 42.01)'),
    ('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))'),
    ('POLYGON((-124.20 42.00, -120.01 41.99, -121.1 42.01, -124.20 42.00))'),
    ('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;
+-----------+----------------------------------------------------------------------------------------------------+
| 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))) |
+-----------+----------------------------------------------------------------------------------------------------+