카테고리:

지리 공간 함수

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:

지리 공간 오브젝트 유형

차원

Point / MultiPoint

0

LineString / MultiLineString

1

Polygon / MultiPolygon

2

GeometryCollection

컬렉션의 차원은 컬렉션에 있는 모든 값의 최대 차원과 같습니다.

예를 들어GeometryCollection에 Point(차원 0) 및 LineString(차원 1)이 포함된 경우, GeometryCollection의 차원은 1입니다.

Feature

Feature의 차원은 Feature에 있는 지리 공간 오브젝트의 차원과 동일합니다.

FeatureCollection

규칙은 GeometryCollection과 동일합니다.

반환된 값(0, 1, 2)은 《차원》이라는 단어의 일반적인 의미에 해당합니다. 즉, 다각형은 2차원 오브젝트, 선은 1차원 오브젝트, 점은 0차원 오브젝트입니다.

구문

ST_DIMENSION( <geography_or_geometry_expression> )

인자

geography_or_geometry_expression

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

반환

INTEGER 형식의 값입니다.

사용법 노트

  • 함수에 NULL이 전달되면 함수는 NULL을 반환합니다.

  • For GEOGRAPHY objects:

    • NULL 요소를 최소한 하나 포함하면서 NULL이 아닌 요소는 포함하지 않는 GeometryCollection을 함수에 전달하면 함수는 0을 반환합니다.

    • NULL 요소와 NULL이 아닌 요소를 최소한 하나씩 포함하는 GeometryCollection을 함수에 전달하면 함수는 NULL이 아닌 요소의 최대 차원을 반환합니다.

    일부 다른 시스템은 NULL 입력에 대해 다른 값을 반환합니다.

GEOGRAPHY Examples

다음 예는 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

다음 예는 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)) |
+-----------------+-------------------------------------------------------------------------------------------------+
맨 위로 이동