- Kategorien:
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> )
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)))') ;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-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;+-----------------+-------------------------------------------------------------------------------------------------+ | 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)) | +-----------------+-------------------------------------------------------------------------------------------------+