Catégories :

Fonctions géospatiales

ST_DIMENSION

Etant donné une valeur de type GEOGRAPHY, renvoyez la « dimension » de la valeur. La dimension d’une valeur GEOGRAPHY est :

  • Point/MultiPoint : 0.

  • Ligne/MultiLine : 1.

  • Polygone/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 ligne (dimension 1), la dimension de la collection est 1.

  • Fonction : 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 1 ou plusieurs éléments NULL et aucun élément non NULL, la fonction renvoie 0.

    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))) |
+-----------+----------------------------------------------------------------------------------------------------+