카테고리:

지리 공간 함수

ST_DIMENSION

GEOGRAPHY 또는 GEOMETRY 타입의 값이 주어지면 값의 “차원”을 반환합니다. GEOGRAPHY 또는 GEOMETRY 값의 차원은 다음과 같습니다.

지리 공간 오브젝트 유형

차원

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

인자

geography_or_geometry_expression

인자는 GEOGRAPHY 또는 GEOMETRY 형식의 식이어야 합니다.

반환

INTEGER 형식의 값입니다.

사용법 노트

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

  • GEOGRAPHY 오브젝트:

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

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

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

GEOGRAPHY 예

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

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