Kategorien:

Geodatenfunktionen

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:

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

Argumente

geography_or_geometry_expression

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

Rückgabewerte

Gibt einen Wert vom Typ INTEGER zurück.

Nutzungshinweise

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

  • For GEOGRAPHY objects:

    • 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 Examples

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)))')
    ;
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

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;
+-----------------+-------------------------------------------------------------------------------------------------+
| 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)) |
+-----------------+-------------------------------------------------------------------------------------------------+
Zurück zum Anfang