Kategorien:

Geodatenfunktionen

ST_DIMENSION

Gibt bei einem Wert vom Typ GEOGRAPHY oder GEOMETRY die „Dimension“ des Werts zurück. Die Dimension eines GEOGRAPHY- oder GEOMETRY-Werts ist:

Geodatenobjekttyp

Dimension

Punkt / MultiPoint

0

LineString / MultiLineString

1

Polygon / MultiPolygon

2

GeometryCollection

Die Dimension der Collection entspricht der maximalen Dimension aller Werte in der Collection.

Wenn beispielsweise eine GeometryCollection einen Punkt (Dimension 0) und eine LineString (Dimension 1) enthält, ist die Dimension der GeometryCollection 1.

Feature

Die Dimension des Features entspricht der Dimension des Geodatenobjekts im Feature.

FeatureCollection

Die Regel ist dieselbe wie für GeometryCollection.

Die zurückgegebenen Werte (0, 1, 2) entsprechen der allgemeinen Bedeutung des Wortes „Dimension“: Ein Polygon ist ein zweidimensionales Objekt, eine Linie ist ein eindimensionales Objekt, und ein Punkt ist ein nulldimensionales Objekt.

Syntax

ST_DIMENSION( <geography_or_geometry_expression> )
Copy

Argumente

geography_or_geometry_expression

Das Argument muss ein Ausdruck vom Typ GEOGRAPHY oder GEOMETRY sein.

Rückgabewerte

Gibt einen Wert vom Typ INTEGER zurück.

Nutzungshinweise

  • Wenn der Funktion NULL übergeben wird, gibt die Funktion NULL zurück.

  • GEOGRAPHY-Objekte:

    • Wenn der Funktion eine GeometryCollection übergeben wird, die mindestens ein NULL-Element und keine Nicht-NULL-Elemente enthält, gibt die Funktion 0 zurück.

    • Wenn der Funktion eine GeometryCollection übergeben wird, die mindestens ein NULL-Element und mindestens ein Nicht-NULL-Element enthält, gibt die Funktion die maximale Dimension der Nicht-NULL-Elemente zurück.

    Beachten Sie, dass einige andere Systeme andere Werte für NULL-Eingaben zurückgeben.

Beispiele

GEOGRAPHY-Beispiele

Das folgende Beispiel veranschaulicht die Funktion 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)))')
    ;
Copy
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))) |
+-----------+----------------------------------------------------------------------------------------------------+
Copy

GEOMETRY-Beispiele

Das folgende Beispiel veranschaulicht die Funktion 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;
Copy
+-----------------+-------------------------------------------------------------------------------------------------+
| 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)) |
+-----------------+-------------------------------------------------------------------------------------------------+
Copy