ST_DIMENSION
ST_DIMENSION
GEOGRAPHY 또는 GEOMETRY 타입의 값을 입력받아 그 값의 "차원(dimension)"을 반환해요. 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)은 "차원"이라는 단어의 일반적인 의미와 대응해요. Polygon은 2차원 객체이고, 선은 1차원 객체이며, 점은 0차원 객체예요.
본문
구문
ST_DIMENSION( <geography_or_geometry_expression> )
인자
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)))')
;
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 예제
다음 예제는 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)) |
+-----------------+-------------------------------------------------------------------------------------------------+