Catégories :

Fonctions géospatiales

ST_DIMENSION

Given a value of type GEOGRAPHY or GEOMETRY, return the « dimension » of the value. The dimension of a GEOGRAPHY or GEOMETRY value is:

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

The argument must be an expression of type GEOGRAPHY or GEOMETRY.

Renvoie

Une valeur de type INTEGER.

Notes sur l’utilisation

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

  • For GEOGRAPHY objects:

    • 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

GEOGRAPHY Examples

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

GEOMETRY Examples

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)) |
+-----------------+-------------------------------------------------------------------------------------------------+
Revenir au début