Spatial 공간 함수
Tibero Spatial Database 함수 종류를 소개합니다.
Spatial 함수는 기본적으로 제공되는 함수들이 있고, 특정 환경(c++11 이상, linux, x86, 64bit)에서만 제공되는 함수들이 있습니다. 또한 기본적으로 제공되지만, 위 환경에서 SRID를 인자로 줘서 좌표계를 고려한 연산을 제공하는 함수들도 있습니다.
본 안내서에서는 특정 환경에서만 제공되는 함수들은 함수명 뒤에 '#' 기호를 기본적으로 제공되지만 특정 환경에서 좌표계를 고려한 연산을 추가 제공하는 함수들은 함수명 뒤에 '$' 기호를 붙여서 표기합니다.
ST_AGGR_ASTWKB(#)
ST_AGGR_ASTWKB는 GEOMETRY 객체를 TWKB(Tiny Well Known Binary) 형태로 반환하는 집합 함수입니다. GEOMETRY 객체마다 식별자를 포함한 집합의 TWKB를 반환합니다.
문법
[그림 1] ST_AGGR_ASTWKB 문법

구성요소
geom_expr
GEOMETRY 객체를 나타내는 임의의 연산식
num_expr
geom_expr 객체 각각에 해당하는 식별자
num1
TWKB로 표현될 좌표의 소수점 이하 유효숫자의 갯수
기본값으로 0이 설정되어 있음
num2
반환될 TWKB에 인코딩된 GEOMETRY 객체의 길이 요소를 포함할지를 결정하 는 인자
1을 넣을 경우 반환되는 TWKB가 길이를 포함하게 됨
본 설정 은 길이를 포함하지 않음
num3
반환될 TWKB에 GEOMETRY 객체의 경계상자를 포함할지를 결정하는 인자
1을 넣을 경우 반환되는 TWKB가 경계 상자를 포함하게 됨
기본 설정은 경계 상자를 포함하지 않음
예제
SQL> SELECT ST_AGGR_ASTWKB(GEOM, ID) FROM GIS;
ST_AGGR_ASTWKB(GEOM,ID)
-----------------------------------------------------------------------------------
07040ACA01CC01CE01D001D201D401D601D801DA01DC010100020204000202020202020002020202
02050002020202020202020202040300010502020200000201000001030003050000001818000017
1700050C14000206000001050005000D000606000005050006000201050202020000020100000101
05040400040400000303000700020100020202000204040202071007000201000202020002040402
02
SQL> SELECT ST_AGGR_ASTWKB(GEOM, ID, 3, 1, 1) FROM GIS;
ST_AGGR_ASTWKB(GEOM,ID,3,1,1)
-----------------------------------------------------------------------------------
6707DB0200C0BB0100C0BB010ACA01CC01CE01D001D201D401D601D801DA01DC0161030AD00F00D0
0F00D00FD00F640311D00FD00FD00FD00F02D00FD00FD00FD00F620311D00FD00FD00FD00F02D00F
D00FD00FD00F65031BD00FF02ED00FC03E0202D00FD00FD00FD00F02D00FD00FD00FA01F63031AD0
0FD00FD00FD00F0105D00FD00FD00F0000D00FCF0F0000CF0F63033E00C0BB0100C0BB0103050000
00C0BB01C0BB010000BFBB01BFBB010005E05DA09C0100D00FF02E0000CF0FEF2E000500AF6D00F0
2EF02E0000EF2EEF2E0066032DD00FC03ED00FC03E020105D00FD00FD00F0000D00FCF0F0000CF0F
0105A01FA01F00A01FA01F00009F1F9F1F0067032AD00FA01FD00FA01F0261030AD00F00D00F00D0
0FD00F620311A01FD00FA01FD00F02A01FA01FD00FD00F67120067032AD00FA01FD00FA01F026103
0AD00F00D00F00D00FD00F620311A01FD00FA01FD00F02A01FA01FD00FD00F
ST_AREA($)
ST_AREA은 GEOMETRY 객체의 면적을 반환하는 함수입니다. POLYGON 객체에 대해 면적을 계산하여 반환합니다. POINT, LINESTRING에 대해서는 0을 반환합니다. MULTI 타입의 GEOMETRY 객체에 대해서는 내부의 GEOMETRY들의 계산 결과의 합을 값을 반환합니다. 좌표계 정보가 회전체인 경우, 평방미터 단위로 해당 객체의 곡면의 면적을 구합니다. 회전타원체에 대한 연산이 기본 설정이며, 더 빠른 계산을 원하면 구면좌표계에 대한 연산으로 바꿀 수 있습니다.
문법
[그림 2] ST_AREA 문법

구성요소
geom
GEOMETRY 객체를 나타내는 GEOMETRY 타입이어야 함
default
연산 방식을 설정
좌표계 정보가 회전체 좌표계인 경우 기본으로 회전타원 체에 대한 연산으로 설정되어있고, 0을 인자로 주면 구면좌표계에 대해 연산
예제
SQL> SELECT ST_AREA(GEOM), ST_ASTEXT(GEOM) FROM GIS
WHERE ST_GEOMETRYTYPE(GEOM) LIKE 'MULTIPOLYGON';
ST_AREA(GEOM)
--------------
ST_ASTEXT(GEOM)
-----------------------------------------------------------------------------------
5
MULTIPOLYGON(((1 1,2 1,2 2,1 2,1 1)),((3 3,3 5,5 5,5 3,3 3)))
ST_ASBINARY
ST_ASBINARY는 GEOMETRY 객체를 WKB(Well Known Binary)형태로 반환하는 함수입니다.
문법
[그림 3] ST_ASBINARY 문법

구성요소
geom
GEOMETRY 객체를 나타내는 GEOMETRY 타입이어야 함
예제
SQL> SELECT ST_ASTEXT(GEOM), ST_ASBINARY(GEOM) FROM GIS
WHERE ST_GEOMETRYTYPE(GEOM) LIKE 'POINT';
ST_ASTEXT(GEOM)
-----------------------------------------------------------------------------------
ST_ASBINARY(GEOM)
-----------------------------------------------------------------------------------
POINT(1 1)
0101000000000000000000F03F000000000000F03F
ST_ASGEOJSON
ST_ASGEOJSON는 GEOMETRY 객체를 GEOJSON 형태로 반환하는 함수입니다.
문법
[그림 4] ST_ASGEOJSON 문법

구성요소
geom
GEOMETRY 객체를 나타내는 GEOMETRY 타입이어야 함
num1
좌표의 유효숫자의 갯수를 입력
기본값으로 9가 설정되어 있음
num2
반환될 GEOJASON 형식의 옵션을 설정
기본값으로 8이 설정되어 있음
- 0 : 아무 옵션도 추가하지 않음
- 1 : 해당 GEOMETRY의 최소 경계 사각형을 추가
- 2 : Short CRS 형식으로 좌표를 출력(예 EPSG:4326)
- 4 : Long CRS 형식으로 좌표를 출력 (예: urn:ogc:def:crs:EPSG::4326)
- 8 : SRID가 4326이 아닌 경우 Short CRS 형식으로 좌표를 출력 (기본값)
예제
SQL> SELECT ST_ASGEOJSON(GEOM) FROM GIS;
ST_ASGEOJSON(GEOM)
-----------------------------------------------------------------------------------
{"type":"Point","coordinates":[1,1]}
{"type":"MultiPoint","coordinates":[[1,1],[2,2]]}
{"type":"LineString","coordinates":[[1,1],[2,2]]}
{"type":"MultiLineString","coordinates":[[[1,1],[2,2]],[[3,3],[4,5]]]}
{"type":"Polygon","coordinates":[[[1,1],[2,1],[2,2],[1,2],[1,1]]]}
{"type":"Polygon","coordinates":[[[0,0],[0,12],[12,12],[12,0],[0,0]],[[6,10],[6,
11],[9,11],[9,10],[6,10]],[[6,3],[6,6],[9,6],[9,3],[6,3]]]}
{"type":"MultiPolygon","coordinates":[[[[1,1],[2,1],[2,2],[1,2],[1,1]]],[[[3,3],
[3,5],[5,5],[5,3],[3,3]]]]}
{"type":"GeometryCollection","geometries":[{"type":"Point","coordinates":[1,1]},
{"type":"LineString","coordinates":[[2,2],[3,3]]}]}
{"type":"GeometryCollection","geometries":[]}
{"type":"GeometryCollection","geometries":[{"type":"Point","coordinates":[1,1]},
{"type":"LineString","coordinates":[[2,2],[3,3]]}]}
ST_ASGML
ST_ASGML는 GEOMETRY 객체를 GML 형태로 반환하는 함수입니다.
문법
[그림 5] ST_ASGML 문법

구성요소
geom
GEOMETRY 객체를 나타내는 GEOMETRY 타입이어야 함
num1
좌표의 유효숫자의 갯수를 입력
기본값으로 15가 설정되어 있음
num2
반환될 GML 형식의 옵션을 설정
기본값으로 0(Short CRS)이 설정되어 있음
- 0 : Short CRS 형식으로 좌표를 출력 (기본값)
- 1 : Long CRS 형식으로 좌표를 출력
예제
SQL> SELECT ST_ASGML(GEOM) FROM GIS;
ST_ASGML(GEOM)
-----------------------------------------------------------------------------------
<gml:Point><coordinates>1,1</coordinates></gml:Point>
<gml:MultiPoint><pointMember><gml:Point><coordinates>1,1</coordinates></gml:Poin
t></pointMember><pointMember><gml:Point><coordinates>2,2</coordinates></gml:Poin
t></pointMember></gml:MultiPoint>
<gml:LineString><coordinates>1,1 2,2</coordinates></gml:LineString>
<gml:MultiLineString><lineStringMember><gml:LineString><coordinates>1,1 2,2</coo
rdinates></gml:LineString></lineStringMember><lineStringMember><gml:LineString><
coordinates>3,3 4,5</coordinates></gml:LineString></lineStringMember></gml:Multi
LineString>
<gml:Polygon><outerBoundaryIs><LinearRing><coordinates>1,1 2,1 2,2 1,2 1,1</coor
dinates></LinearRing></outerBoundaryIs></gml:Polygon>
<gml:Polygon><outerBoundaryIs><LinearRing><coordinates>0,0 0,12 12,12 12,0 0,0</
coordinates></LinearRing></outerBoundaryIs><innerBoundaryIs><LinearRing><coordin
ates>6,10 6,11 9,11 9,10 6,10</coordinates></LinearRing></innerBoundaryIs><inner
BoundaryIs><LinearRing><coordinates>6,3 6,6 9,6 9,3 6,3</coordinates></LinearRin
g></innerBoundaryIs></gml:Polygon>
<gml:MultiPolygon><polygonMember><gml:Polygon><outerBoundaryIs><LinearRing><coor
dinates>1,1 2,1 2,2 1,2 1,1</coordinates></LinearRing></outerBoundaryIs></gml:Po
lygon></polygonMember><polygonMember><gml:Polygon><outerBoundaryIs><LinearRing><
coordinates>3,3 3,5 5,5 5,3 3,3</coordinates></LinearRing></outerBoundaryIs></gm
l:Polygon></polygonMember></gml:MultiPolygon>
<gml:MultiGeometry><geometryMember><gml:Point><coordinates>1,1</coordinates></gm
l:Point></geometryMember><geometryMember><gml:LineString><coordinates>2,2 3,3</c
oordinates></gml:LineString></geometryMember></gml:MultiGeometry>
<gml:MultiGeometry><geometryMember><gml:Point><coordinates>1,1</coordinates></gm
l:Point></geometryMember><geometryMember><gml:LineString><coordinates>2,2 3,3</c
oordinates></gml:LineString></geometryMember></gml:MultiGeometry>
ST_ASKML
ST_ASKML는 GEOMETRY 객체를 KML 형태로 반환하는 함수입니다.
문법
[그림 6] ST_ASKML 문법

구성요소
geom
GEOMETRY 객체를 나타내는 GEOMETRY 타입이어야 함
GEOMETRYCOL LECTION 타입의 객체가 올 경우 에러를 반환
num
좌표의 유효숫자의 갯수를 입력
기본값으로 15가 설정되어 있음
str
반환될 KML의 네임스페이스 접두사를 설정
기본 네임스페이스는 접두사를 쓰지 않음
예제
SQL> SELECT ST_ASKML(ST_SETSRID(GEOM,4326)) FROM GIS WHERE ST_GEOMETRYTYPE(GEOM)
NOT LIKE 'GEOMETRYCOLLECTION';
ST_ASKML(GEOM)
-----------------------------------------------------------------------------------
<Point><coordinates>1,1</coordinates></Point>
<MultiGeometry><Point><coordinates>1,1</coordinates></Point><Point><coordinates>
2,2</coordinates></Point></MultiGeometry>
<LineString><coordinates>1,1 2,2</coordinates></LineString>
<MultiGeometry><LineString><coordinates>1,1 2,2</coordinates></LineString><LineS
tring><coordinates>3,3 4,5</coordinates></LineString></MultiGeometry>
<Polygon><outerBoundaryIs><LinearRing><coordinates>1,1 2,1 2,2 1,2 1,1</coordina
tes></LinearRing></outerBoundaryIs></Polygon>
<Polygon><outerBoundaryIs><LinearRing><coordinates>0,0 0,12 12,12 12,0 0,0</coor
dinates></LinearRing></outerBoundaryIs><innerBoundaryIs><LinearRing><coordinates
>6,10 6,11 9,11 9,10 6,10</coordinates></LinearRing></innerBoundaryIs><innerBoun
daryIs><LinearRing><coordinates>6,3 6,6 9,6 9,3 6,3</coordinates></LinearRing></
innerBoundaryIs></Polygon>
<MultiGeometry><Polygon><outerBoundaryIs><LinearRing><coordinates>1,1 2,1 2,2 1,
2 1,1</coordinates></LinearRing></outerBoundaryIs></Polygon><Polygon><outerBound
aryIs><LinearRing><coordinates>3,3 3,5 5,5 5,3 3,3</coordinates></LinearRing></o
uterBoundaryIs></Polygon></MultiGeometry>
ST_ASTEXT
ST_ASTEXT는 GEOMETRY 객체를 WKT(Well Known Text) 형태로 반환하는 함수입니다.
문법
[그림 7] ST_ASTEXT 문법

구성요소
geom
GEOMETRY 객체를 나타내는 GEOMETRY 타입이어야 함
예제
SQL> SELECT ST_ASTEXT(GEOM) FROM GIS;
ST_ASTEXT(GEOM)
-----------------------------------------------------------------------------------
POINT(1 1)
MULTIPOINT((1 1),(2 2))
LINESTRING(1 1,2 2)
MULTILINESTRING((1 1,2 2),(3 3,4 5))
POLYGON((1 1,2 1,2 2,1 2,1 1))
POLYGON((0 0,0 12,12 12,12 0,0 0),(6 10,6 11,9 11,9 10,6 10),(6 3,6 6,9 6,9 3,6 3))
MULTIPOLYGON(((1 1,2 1,2 2,1 2,1 1)),((3 3,3 5,5 5,5 3,3 3)))
GEOMETRYCOLLECTION(POINT(1 1),LINESTRING(2 2,3 3))
GEOMETRYCOLLECTION EMPTY
GEOMETRYCOLLECTION(POINT(1 1),LINESTRING(2 2,3 3))
ST_ASTWKB(#)
ST_ASTWKB는 GEOMETRY 객체를 TWKB(Tiny Well Known Binary) 형태로 반환하는 함수입니다.
문법
[그림 8] ST_ASTWKB 문법

구성요소
geom
GEOMETRY 객체를 나타내는 GEOMETRY 타입이어야 함
num1
TWKB로 표현될 좌표의 소수점 이하 유효숫자 개수
기본값으로 0이 설정되어있음
num2
반환될 TWKB에 인코딩된 GEOMETRY 객체의 길이 요소를 포함할지를 결정하는 인자
1을 넣을 경우 반환되는 TWKB가 길이를 포함하게됨
기본 설정 은 길이를 포함하지 않음
num3
반환될 TWKB에 GEOMETRY 객체의 경계상자를 포함할지를 결정하는 인자
1을 넣을 경우 반환되는 TWKB가 경계 상자를 포함하게됨
기본 설정은 경계 상자를 포함하지 않음
예제
SQL> SELECT ST_ASTWKB(GEOM) FROM GIS;
ST_ASTWKB(GEOM)
-----------------------------------------------------------------------------------
01000202
04000202020202
02000202020202
05000202020202020202020204
0300010502020200000201000001
0300030500000018180000171700050C14000206000001050005000D0006060000050500
060002010502020200000201000001010504040004040000030300
0700020100020202000204040202
0710
0700020100020202000204040202
SQL> SELECT ST_ASTWKB(GEOM, 3, 1, 1) FROM GIS;
ST_ASTWKB(GEOM,3,1,1)
-----------------------------------------------------------------------------------
61030AD00F00D00F00D00FD00F
640311D00FD00FD00FD00F02D00FD00FD00FD00F
620311D00FD00FD00FD00F02D00FD00FD00FD00F
65031BD00FF02ED00FC03E0202D00FD00FD00FD00F02D00FD00FD00FA01F
63031AD00FD00FD00FD00F0105D00FD00FD00F0000D00FCF0F0000CF0F
63033E00C0BB0100C0BB010305000000C0BB01C0BB010000BFBB01BFBB010005E05DA09C0100D00F
F02E0000CF0FEF2E000500AF6D00F02EF02E0000EF2EEF2E00
66032DD00FC03ED00FC03E020105D00FD00FD00F0000D00FCF0F0000CF0F0105A01FA01F00A01FA0
1F00009F1F9F1F00
67032AD00FA01FD00FA01F0261030AD00F00D00F00D00FD00F620311A01FD00FA01FD00F02A01FA0
1FD00FD00F
671200
67032AD00FA01FD00FA01F0261030AD00F00D00F00D00FD00F620311A01FD00FA01FD00F02A01FA0
1FD00FD00F
ST_AZIMUTH($)
ST_AZIMUTH은 POINT 객체 1과 POINT 객체 2를 잇는 선분과, POINT 객체 1의 수직 상방 선분이 이루는 각을 시계방향으로 측정하여 호도 단위로 반환합니다. 이는 회전체 좌표계 상에서 북극기준 방위각에 해당합니다. 회전체 좌표계 상의 GEOMETRY와 평면 좌표계 GEOMETRY를 인자로 받을 수 있습니다. POINT가 아닌 타입의 GEOMETRY 객체를 넣을 경우 예외를 반환합니다.
문법
[그림 9] ST_AZIMUTH 문법

구성요소
geom1
POINT 객체를 나타내는 GEOMETRY 타입이어야 함
geom2
POINT 객체를 나타내는 GEOMETRY 타입이어야 함
예제
SQL> SELECT ST_AZIMUTH(ST_GEOMFROMTEXT('POINT(1 1)', 4326),
ST_GEOMFROMTEXT('POINT(1 0)',4326)) AZIMUTH FROM DUAL;
AZIMUTH
----------
3.14159265
ST_BOUNDARY
ST_BOUNDARY는 주어진 GEOMETRY 객체의 경계를 반환하는 함수입니다. GEOMETRY 객체의 타입이 GEOMETRYCOLLECTION일 경우 에러를 반환합니다.
문법
[그림 10] ST_BOUNDARY 문법

구성요소
geom
GEOMETRY 객체를 나타내는 GEOMETRY 타입이어야 함
예제
SQL> SELECT ST_ASTEXT(GEOM),ST_ASTEXT(ST_BOUNDARY(GEOM))
FROM GIS WHERE ST_GEOMETRYTYPE(GEOM) NOT LIKE 'GEOMETRYCOLLECTION';
ST_ASTEXT(GEOM)
-----------------------------------------------------------------------------------
ST_ASTEXT(ST_BOUNDARY(GEOM))
-----------------------------------------------------------------------------------
POINT(1 1)
GEOMETRYCOLLECTION EMPTY
MULTIPOINT((1 1),(2 2))
GEOMETRYCOLLECTION EMPTY
LINESTRING(1 1,2 2)
MULTIPOINT((1 1),(2 2))
MULTILINESTRING((1 1,2 2),(3 3,4 5))
MULTIPOINT((1 1),(2 2),(3 3),(4 5))
POLYGON((1 1,2 1,2 2,1 2,1 1))
LINESTRING(1 1,2 1,2 2,1 2,1 1)
POLYGON((0 0,0 12,12 12,12 0,0 0),(6 10,6 11,9 11,9 10,6 10),(6 3,6 6,9 6,9 3,6 3))
MULTILINESTRING((0 0,0 12,12 12,12 0,0 0),(6 10,6 11,9 11,9 10,6 10),(6 3,6 6,9
6,9 3,6 3))
MULTIPOLYGON(((1 1,2 1,2 2,1 2,1 1)),((3 3,3 5,5 5,5 3,3 3)))
MULTILINESTRING((1 1,2 1,2 2,1 2,1 1),(3 3,3 5,5 5,5 3,3 3))
ST_BUFFER($)
ST_BUFFER는 주어진 GEOMETRY 객체로부터 일정 거리 안에 있는 모든 점을 표현하는 GEOMETRY 객체를 반환하는 함수입니다. 좌표계 정보를 통해 회전체 좌표계 상의 GEOMETRY 객체에 대한 연산이 가능합니다.
문법
[그림 11] ST_BUFFER 문법

구성요소
geom
GEOMETRY 객체를 나타내는 GEOMETRY 타입이어야 함
expr
임의의 연산식이며 주어진 GEOMETRY 객체로부터의 거리를 의미
예제
SQL> SELECT ST_ASTEXT(GEOM),ST_AREA(ST_BUFFER(GEOM,10))
FROM GIS WHERE ST_GEOMETRYTYPE(GEOM) LIKE 'POINT';
ST_ASTEXT(GEOM)
-----------------------------------------------------------------------------------
ST_AREA(ST_BUFFER(GEOM,10))
--------------------------
POINT(1 1)
312.144515
ST_BUILDAREA(#)
ST_BUILDAREA는 주어진 GEOMETRY의 선분 구성요소로 형성될 수 있는 POLYGON을 반환하는 함수입니다. 입력 GEOMETRY의 선분 구성요소가 POLYGON을 형성하지 못할 경우 NULL을 반환합니다.
문법
[그림 12] ST_BUILDAREA 문법

구성요소
geom
GEOMETRY 객체를 나타내는 GEOMETRY 타입이어야 함
예제
SQL> SELECT ST_ASTEXT(ST_BUILDAREA(GEOM))FROM GIS;
ST_ASTEXT(ST_BUILDAREA(GEOM))
-----------------------------------------------------------------------------------
GEOMETRYCOLLECTION EMPTY
GEOMETRYCOLLECTION EMPTY
GEOMETRYCOLLECTION EMPTY
GEOMETRYCOLLECTION EMPTY
POLYGON((1 1,1 2,2 2,2 1,1 1))
POLYGON((0 0,0 12,12 12,12 0,0 0),(6 10,9 10,9 11,6 11,6 10),(6 3,9 3,9 6,6 6,6 3))
MULTIPOLYGON(((1 1,1 2,2 2,2 1,1 1)),((3 3,3 5,5 5,5 3,3 3)))
GEOMETRYCOLLECTION EMPTY
GEOMETRYCOLLECTION EMPTY
GEOMETRYCOLLECTION EMPTY
ST_CENTROID($)
ST_CENTROID는 주어진 GEOMETRY 객체의 중심을 반환하는 함수입니다. 좌표계 정보를 통해 회전체 좌 표계 상의 GEOMETRY 객체에 대한 연산이 가능합니다. 더 빠른 연산을 원하면 구면좌표계에 대한 연산으로 바꿀 수 있습니다.
문법
[그림 13] ST_CENTROID 문법

구성요소
geom
GEOMETRY 객체를 나타내는 GEOMETRY 타입이어야 함
default
연산 방식을 설정
좌표계 정보가 회전체 좌표계인 경우 기본으로 회전타원 체에 대한 연산으로 설정되어있고, 0을 인자로 주면 구면좌표계에 대해 연산
예제
SQL> SELECT ST_ASTEXT(GEOM),ST_ASTEXT(ST_CENTROID(GEOM))
FROM GIS WHERE ST_GEOMETRYTYPE(GEOM) LIKE 'POLYGON';
ST_ASTEXT(GEOM)
-----------------------------------------------------------------------------------
ST_ASTEXT(ST_CENTROID(GEOM))
-----------------------------------------------------------------------------------
POLYGON((1 1,2 1,2 2,1 2,1 1))
POINT(1.5 1.5)
POLYGON((0 0,0 12,12 12,12 0,0 0),(6 10,6 11,9 11,9 10,6 10),(6 3,6 6,9 6,9 3,6 3))
POINT(5.8636363636364 6)
ST_COLLECT
ST_COLLECT는 GEOMETRY들을 MULTI 타입의 도형으로 묶어서 반환하는 집합 함수입니다. 집합 함수이므로 GEOMETRY 객체들을 한데 모은 집합에 대한 결과를 반환합니다. 변형된 형태로 두 GEOMETRY 객체를 인자로 받을 수 있습니다.
문법
[그림 14] ST_COLLECT 문법

구성요소
geom_expr
GEOMETRY 객체를 나타내는 임의의 연산식
예제
SQL> SELECT ST_ASTEXT(ST_COLLECT(A.GEOM, B.GEOM))
FROM GIS A,GIS B WHERE ST_GEOMETRYTYPE(A.GEOM) LIKE 'POINT'
AND ST_GEOMETRYTYPE(B.GEOM) LIKE 'LINESTRING';
ST_ASTEXT(ST_COLLECT(A.GEOM,B.GEOM))
-----------------------------------------------------------------------------------
GEOMETRYCOLLECTION(POINT(1 1),LINESTRING(1 1,2 2))
예제 아래는 ST_COLLECT 함수에 Table의 geometry column을 인자로 사용하는 예입니다.
SQL> SELECT ST_ASTEXT(ST_COLLECT(GEOM)) FROM GIS;
ST_ASTEXT(ST_COLLECT(GEOM))
-----------------------------------------------------------------------------------
GEOMETRYCOLLECTION(POINT(1 1),MULTIPOINT((1 1),(2 2)),LINESTRING(1 1,2 2),MULTIL
INESTRING((1 1,2 2),(3 3,4 5)),POLYGON((1 1,2 1,2 2,1 2,1 1)),POLYGON((0 0,0 12,
12 12,12 0,0 0),(6 10,6 11,9 11,9 10,6 10),(6 3,6 6,9 6,9 3,6 3)),MULTIPOLYGON((
(1 1,2 1,2 2,1 2,1 1)),((3 3,3 5,5 5,5 3,3 3))))
ST_CONTAINS
ST_CONTAINS는 GEOMETRY 객체 2가 GEOMETRY 객체 1의 외부에 존재하지 않고, 객체 1의 내부에 하나 이상의 점이 존재할 때만 1을 반환하는 함수입니다.
문법
[그림 15] ST_CONTAINS 문법

구성요소
geom1
포함하는 GEOMETRY 객체를 나타내는 GEOMETRY 타입어어야 함
geom2
포함되는 GEOMETRY 객체를 나타내는 GEOMETRY 타입이어야 함
예제
SQL> SELECT ST_ASTEXT(A.GEOM),ST_ASTEXT(B.GEOM)
FROM GIS A,GIS B WHERE ST_CONTAINS(A.GEOM,B.GEOM) >0
AND ST_GEOMETRYTYPE(A.GEOM) LIKE 'MULTILINESTRING'
AND ST_GEOMETRYTYPE(B.GEOM) LIKE 'LINESTRING';
ST_ASTEXT(A.GEOM)
-----------------------------------------------------------------------------------
ST_ASTEXT(B.GEOM)
-----------------------------------------------------------------------------------
MULTILINESTRING((1 1,2 2),(3 3,4 5))
LINESTRING(1 1,2 2)
ST_CONVEXHULL
ST_CONVEXHULL은 주어진 GEOMETRY의 convex hull을 반환하는 함수입니다. Convex hull은 GEOMETRY 객체를 포함하는 제일 작은 볼록한 폐곡선을 의미합니다.
문법
[그림 16] ST_CONVEXHULL 문법

구성요소
geom
GEOMETRY 객체를 나타내는 GEOMETRY 타입이어야 함
예제
SQL> SELECT ST_ASTEXT(GEOM),ST_ASTEXT(ST_CONVEXHULL(GEOM))
FROM GIS;
ST_ASTEXT(GEOM)
-----------------------------------------------------------------------------------
ST_ASTEXT(ST_CONVEXHULL(GEOM))
-----------------------------------------------------------------------------------
POINT(1 1)
POINT(1 1)
MULTIPOINT((1 1),(2 2))
LINESTRING(1 1,2 2)
LINESTRING(1 1,2 2)
LINESTRING(1 1,2 2)
MULTILINESTRING((1 1,2 2),(3 3,4 5))
POLYGON((1 1,4 5,3 3,1 1))
POLYGON((1 1,2 1,2 2,1 2,1 1))
POLYGON((1 1,1 2,2 2,2 1,1 1))
POLYGON((0 0,0 0,0 12,12 12,12 0,0 0),(6 10,6 11,9 11,9 10,6 10),(6 3,6 6,9 6,9 3,6 3))
POLYGON((0 0,0 0,0 12,12 12,12 0,0 0))
MULTIPOLYGON(((1 1,2 1,2 2,1 2,1 1)),((3 3,3 5,5 5,5 3,3 3)))
POLYGON((1 1,1 2,3 5,5 5,5 3,2 1,1 1))
GEOMETRYCOLLECTION(POINT(1 1),LINESTRING(2 2,3 3))
LINESTRING(1 1,3 3)
GEOMETRYCOLLECTION EMPTY
GEOMETRYCOLLECTION EMPTY
GEOMETRYCOLLECTION(POINT(1 1),LINESTRING(2 2,3 3))
LINESTRING(1 1,3 3)
ST_CROSSES
ST_CROSSES는 주어진 두 GEOMETRY 객체가 교차하면 1을 반환하는 함수입니다. 포함관계에 있거나, 경계가 닿아 있는 경우는 해당하지 않습니다.
문법
[그림 17] ST_CROSSES 문법

구성요소
geom1
GEOMETRY 객체를 나타내는 GEOMETRY 타입이어야 함
geom2
GEOMETRY 객체를 나타내는 GEOMETRY 타입이어야 함
예제
SQL> SELECT ST_ASTEXT(A.GEOM),ST_ASTEXT(B.GEOM)
FROM GIS A,GIS B WHERE ST_CROSSES(A.GEOM,B.GEOM) >0
AND ST_GEOMETRYTYPE(A.GEOM) NOT LIKE 'GEOMETRYCOLLECTION'
AND ST_GEOMETRYTYPE(B.GEOM) NOT LIKE 'GEOMETRYCOLLECTION';
ST_ASTEXT(A.GEOM)
-----------------------------------------------------------------------------------
ST_ASTEXT(B.GEOM)
-----------------------------------------------------------------------------------
POLYGON((1 1,2 1,2 2,1 2,1 1))
MULTILINESTRING((1 1,2 2),(3 3,4 5))
MULTILINESTRING((1 1,2 2),(3 3,4 5))
POLYGON((1 1,2 1,2 2,1 2,1 1))
ST_COVEREDBY(#)
ST_COVEREDBY는 GEOMETRY 객체 1의 어떤 점도 GEOMETRY 객체 2의 외부에 있지 않은 경우 1을 반환하는 함수입니다. 회전체 좌표계 상의 GEOMETRY만을 인자로 받으며, 그렇지 않은 경우 예외를 반환 합니다.
문법
[그림 18] ST_COVEREDBY 문법

구성요소
geom1
GEOMETRY 객체를 나타내는 GEOMETRY 타입이어야 함
geom2
GEOMETRY 객체를 나타내는 GEOMETRY 타입이어야 함
예제
SQL> SELECT ST_COVEREDBY(ST_GEOMFROMTEXT('POINT(0 0)',4326),
ST_BUFFER(ST_GEOMFROMTEXT('POINT(0 0)',4326),1)) COVEREDBY FROM DUAL;
COVEREDBY
---------
1
ST_COVERS(#)
ST_COVERS 는 GEOMETRY 객체 2의 어떤 점도 GEOMETRY 객체 1의 외부에 있지 않은 경우 1을 반환하는 함수입니다. 회전체 좌표계 상의 GEOMETRY만을 인자로 받으며, 그렇지 않은 경우 예외를 반환합니다.
문법
[그림 19] ST_COVERS 문법

구성요소
geom1
GEOMETRY 객체를 나타내는 GEOMETRY 타입이어야 함
geom2
GEOMETRY 객체를 나타내는 GEOMETRY 타입이어야 함
예제
SQL> SELECT ST_COVERS(ST_BUFFER(ST_GEOMFROMTEXT('POINT(0 0)',4326),1),
ST_GEOMFROMTEXT('POINT(0 0)',4326)) COVERS FROM DUAL;
COVERS
------
1
ST_DIFFERENCE($)
ST_DIFFERENCE는 GEOMETRY 객체 2와 겹치지 않는 객체 1의 부분을 반환하는 함수입니다. 좌표계 정보를 통해 회전체 좌표계 상의 GEOMETRY 객체에 대한 연산이 가능합니다.
문법
[그림 20] ST_DIFFERENCE 문법

구성요소
geom1
GEOMETRY 객체를 나타내는 GEOMETRY 타입이어야 함
geom
GEOMETRY 객체를 나타내는 GEOMETRY 타입이어야 함
예제
SQL> SELECT ST_ASTEXT(A.GEOM),ST_ASTEXT(B.GEOM),
ST_ASTEXT(ST_DIFFERENCE(A.GEOM,B.GEOM)) FROM GIS A,GIS B
WHERE ST_GEOMETRYTYPE(A.GEOM) LIKE 'LINESTRING'
AND ST_GEOMETRYTYPE(B.GEOM) LIKE 'LINESTRING';
ST_ASTEXT(A.GEOM)
-----------------------------------------------------------------------------------
ST_ASTEXT(B.GEOM)
-----------------------------------------------------------------------------------
ST_ASTEXT(ST_DIFFERENCE(A.GEOM,B.GEOM))
-----------------------------------------------------------------------------------
LINESTRING(1 1,2 2)
LINESTRING(1 1,2 2)
GEOMETRYCOLLECTION EMPTY
ST_DIMENSION
ST_DIMENSION은 GEOMETRY 객체의 차원을 반환하는 함수입니다.
문법
[그림 21] ST_DIMENSION 문법

구성요소
geom
GEOMETRY 객체를 나타내는 GEOMETRY 타입이어야 함
예제
SQL> SELECT ST_DIMENSION(GEOM), ST_ASTEXT(geom) FROM GIS;
ST_DIMENSION(GEOM)
----------------------
ST_ASTEXT(GEOM)
-----------------------------------------------------------------------------------
0
POINT(1 1)
0
MULTIPOINT((1 1),(2 2))
1
LINESTRING(1 1,2 2)
1
MULTILINESTRING((1 1,2 2),(3 3,4 5))
2
POLYGON((1 1,2 1,2 2,1 2,1 1))
2
POLYGON((0 0,0 12,12 12,12 0,0 0),(6 10,6 11,9 11,9 10,6 10),(6 3,6 6,9 6,9 3,6 3))
2
MULTIPOLYGON(((1 1,2 1,2 2,1 2,1 1)),((3 3,3 5,5 5,5 3,3 3)))
1
GEOMETRYCOLLECTION(POINT(1 1),LINESTRING(2 2,3 3))
0
GEOMETRYCOLLECTION EMPTY
1
GEOMETRYCOLLECTION(POINT(1 1),LINESTRING(2 2,3 3))
ST_DISJOINT
ST_DISJOINT는 두 GEOMETRY 객체가 어떤 영역도 공유하지 않을 때 1을 반환하는 함수입니다.
문법
[그림 22] ST_DISJOINT 문법

구성요소
geom1
GEOMETRY 객체를 나타내는 GEOMETRY 타입이어야 함
geom2
GEOMETRY 객체를 나타내는 GEOMETRY 타입이어야 함
예제
SQL> SELECT ST_DISJOINT(A.GEOM,B.GEOM),
ST_ASTEXT(A.GEOM),ST_ASTEXT(B.GEOM) FROM GIS A,GIS B
WHERE ST_GEOMETRYTYPE(A.GEOM) LIKE 'LINESTRING'
AND ST_GEOMETRYTYPE(B.GEOM) LIKE 'LINESTRING';
ST_DISJOINT(A.GEOM,B.GEOM)
----------------------------
ST_ASTEXT(A.GEOM)
-----------------------------------------------------------------------------------
ST_ASTEXT(B.GEOM)
-----------------------------------------------------------------------------------
0
LINESTRING(1 1,2 2)
LINESTRING(1 1,2 2)
ST_DISTANCE($)
ST_DISTANCE는 두 GEOMETRY 객체 사이의 최단 거리를 반환하는 함수입니다. 좌표계 정보를 통해 회전체 좌표계 상의 GEOMETRY 객체에 대한 연산이 가능합니다. 더 빠른 연산을 원하면 구면좌표계에 대한 연산으로 바꿀 수 있습니다.
문법
[그림 23] ST_DISTANCE 문법

구성요소
geom1
GEOMETRY 객체를 나타내는 GEOMETRY 타입이어야 함
geom2
GEOMETRY 객체를 나타내는 GEOMETRY 타입이어야 함
default
연산 방식을 설정
좌표계 정보가 회전체 좌표계인 경우 기본으로 회전타원체에 대한 연산으로 설정되어있고, 0을 인자로 주면 구면좌표계에 대해 연산
예제
SQL> SELECT ST_DISTANCE(ST_GEOMFROMTEXT('LINESTRING(2 2,0 0)'),
ST_GEOMFROMTEXT('LINESTRING(4 2,6 0)')) DISTANCE FROM DUAL;
DISTANCE
---------
2
ST_DWITHIN #
ST_DWITHIN는 두 GEOMETRY 객체가 지정된 거리안에 있는지 여부를 반환하는 함수입니다. 좌표계 정보를 통해 회전체 좌표계 상의 GEOMETRY 객체에 대한 연산이 가능합니다. 더 빠른 연산을 원하면 구면좌표계에 대한 연산으로 바꿀 수 있습니다.
문법
[그림 24] ST_DWITHIN 문법

구성요소
geom1
GEOMETRY 객체를 나타내는 GEOMETRY 타입이어야 함
geom2
GEOMETRY 객체를 나타내는 GEOMETRY 타입이어야 함
num
지정된 거리를 입력
GEOMETRY의 경우 설정된 좌표계의 단위를, GEOG RAPHY의 경우 meter 단위를 사용
default
연산 방식을 설정
좌표계 정보가 회전체 좌표계인 경우 기본으로 회전타원 체에 대한 연산으로 설정되어있고, 0을 인자로 주면 구면좌표계에 대해 연산
예제
SQL> SELECT ST_DWITHIN(ST_GEOMFROMTEXT('LINESTRING(2 2,0 0)'),
ST_GEOMFROMTEXT('LINESTRING(4 2,6 0)'), 3) DWITHIN FROM DUAL;
DWITHIN
-------
1
ST_ENDPOINT
ST_ENDPOINT는 LINESTRING GEOMETRY 객체의 마지막 점을 POINT 객체로 반환하는 함수입니다. LINESTRING이 아닌 타입의 GEOMETRY 객체를 넣을 경우 NULL을 반환합니다.
문법
[그림 25] ST_ENDPOINT 문법

구성요소
geom
LINESTRING 객체를 나타내는 GEOMETRY 타입이어야 함
예제
SQL> SELECT ST_ASTEXT(GEOM),ST_ASTEXT(ST_ENDPOINT(GEOM))
FROM GIS WHERE ST_GEOMETRYTYPE(GEOM) LIKE 'LINESTRING';
ST_ASTEXT(GEOM)
-----------------------------------------------------------------------------------
ST_ASTEXT(ST_ENDPOINT(GEOM))
-----------------------------------------------------------------------------------
LINESTRING(1 1,2 2)
POINT(2 2)
ST_ENVELOPE
ST_ENVELOPE는 주어진 GEOMETRY 객체를 둘러싸는 사각형을 POLYGON 형태로 반환하는 함수입니 다.
문법
[그림 26] ST_ENVELOPE 문법

구성요소
geom
GEOMETRY 객체를 나타내는 GEOMETRY 타입이어야 함
예제
SQL> SELECT ST_ASTEXT(ST_ENVELOPE(GEOM)) FROM GIS;
ST_ASTEXT(ST_ENVELOPE(GEOM))
-----------------------------------------------------------------------------------
POLYGON((1 1,1 1,1 1,1 1,1 1))
POLYGON((1 1,1 2,2 2,2 1,1 1))
POLYGON((1 1,1 2,2 2,2 1,1 1))
POLYGON((1 1,1 5,4 5,4 1,1 1))
POLYGON((1 1,1 2,2 2,2 1,1 1))
POLYGON((0 0,0 12,12 12,12 0,0 0))
POLYGON((1 1,1 5,5 5,5 1,1 1))
POLYGON((1 1,1 3,3 3,3 1,1 1))
GEOMETRYCOLLECTION EMPTY
POLYGON((1 1,1 3,3 3,3 1,1 1))
ST_EQUALS
ST_EQUALS는 두 GEOMETRY 객체가 같은 GEOMETRY를 표현하면 1을 반환하는 함수입니다.
문법
[그림 27] ST_EQUALS 문법

구성요소
geom1
GEOMETRY 객체를 나타내는 GEOMETRY 타입이어야 함
geom
GEOMETRY 객체를 나타내는 GEOMETRY 타입이어야 함
예제
SQL> SELECT ST_EQUALS(A.GEOM,B.GEOM),
ST_ASTEXT(A.GEOM),ST_ASTEXT(B.GEOM)
FROM GIS A,GIS B WHERE ST_GEOMETRYTYPE(A.GEOM) LIKE 'POINT'
AND ST_GEOMETRYTYPE(B.GEOM) LIKE 'POINT';
ST_EQUALS(A.GEOM,B.GEOM)
-----------------------------------------------------------------------------------
ST_ASTEXT(A.GEOM)
-----------------------------------------------------------------------------------
ST_ASTEXT(B.GEOM)
-----------------------------------------------------------------------------------
POINT(1 1)
POINT(1 1)
ST_EXTERIORRING
ST_EXTERIORRING은 POLYGON GEOMETRY 객체의 외부 링을 반환하는 함수입니다. POLYGON이 아닌 타입의 GEOMETRY 객체를 넣을 경우 NULL을 반환합니다.
문법
[그림 28] ST_EXTERIORRING 문법

구성요소
geom
POLYGON 객체를 나타내는 GEOMETRY 타입이어야 함
예제
SQL> SELECT ST_ASTEXT(ST_EXTERIORRING(GEOM)) FROM GIS
WHERE ST_GEOMETRYTYPE(GEOM) LIKE 'POLYGON';
ST_ASTEXT(ST_EXTERIORRING(GEOM))
-----------------------------------------------------------------------------------
LINESTRING(1 1,2 1,2 2,1 2,1 1)
LINESTRING(0 0,0 12,12 12,12 0,0 0)
ST_EXPAND
ST_EXPAND은 입력 GEOMETRY를 모든 방향으로 확장한 경계 상자에 해당하는 POLYGON을 반환합니다. 비어있는 GEOMETRY 객체에 대해선 확장에 관계없이 NULL을 반환합니다.
문법
[그림 29] ST_EXPAND 문법

구성요소
geom
GEOMETRY 객체를 나타내는 GEOMETRY 타입이어야 함
num1
GEOMETRY 객체의 모든 축 방향으로 확장시킬 거리를 입력
입력한 거리 만큼 확장된 POLYGON을 형성
num2
X 방향으로 확장시킬 거리를 입력
입력한 거리만큼 X 방향으로 확장된 POLYGON을 형성
num3
Y 방향으로 확장시킬 거리를 입력
입력한 거리만큼 Y 방향으로 확장된 POLYGON을 형성
num4
Z 방향으로 확장시킬 거리를 입력
입력한 거리만큼 Z 방향으로 확장된 POLYGON을 형성
num5
M 방향으로 확장시킬 거리를 입력
입력한 거리만큼 M 방향으로 확장된 POLYGON을 형성
예제
SQL> SELECT ST_ASTEXT(ST_EXPAND(GEOM,1,2)) FROM GIS;
ST_ASTEXT(ST_EXPAND(GEOM,1,2))
-----------------------------------------------------------------------------------
POLYGON((0 -1,0 3,2 3,2 -1,0 -1))
POLYGON((0 -1,0 4,3 4,3 -1,0 -1))
POLYGON((0 -1,0 4,3 4,3 -1,0 -1))
POLYGON((0 -1,0 7,5 7,5 -1,0 -1))
POLYGON((0 -1,0 4,3 4,3 -1,0-1))
POLYGON((-1 -2,-1 14,13 14,13 -2,-1 -2))
POLYGON((0 -1,0 7,6 7,6 -1,0 -1))
POLYGON((0 -1,0 5,4 5,4 -1,0 -1))
GEOMETRYCOLLECTION EMPTY
POLYGON((0 -1,0 5,4 5,4 -1,0 -1))
ST_EXTENT
ST_EXTENT은 GEOMETRY를 포함하는 경계 상자에 해당하는 POLYGON을 반환하는 집합 함수입니다. 집합 함수이므로 GEOMETRY 객체들을 한데 모은 집합에 대한 결과를 반환합니다.
문법
[그림 30] ST_EXTEN 문법

구성요소
geom_expr
GEOMETRY 객체를 나타내는 임의의 연산식
예제
SQL> SELECT ST_ASTEXT(ST_EXTENT(GEOM)) FROM GIS;
ST_ASTEXT(ST_EXTENT(GEOM))
-----------------------------------------------------------------------------------
POLYGON((0 0,0 12,12 12,12 0,0 0))
ST_GEOMCOLLFROMTEXT
ST_GEOMCOLLFROMTEXT는 주어진 WKT와 SRID를 바탕으로 GEOMETRYCOLLECTION 객체를 반환하는 함수입니다.
문법
[그림 31] ST_GEOMCOLLFROMTEXT 문법

구성요소
str
GEOMETRYCOLLECTION 객체을 표현하기 위한 WKT 형식으로 된 CHAR, VARCHAR, NCHAR, NVARCHAR 타입 중 하나
num
GEOMETRYCOLLECTION 객체의 좌표계 정보(SRID)를 입력
SRID를 입력하지 않을 경우 0(시스템 기본 좌표계)이 설정됨
예제
SQL> SELECT ST_ASTEXT(ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION(
POINT(1 1),LINESTRING(2 2,3 3))')) GEOMCOLLFROMTEXT FROM DUAL;
GEOMCOLLFROMTEXT
-----------------------------------------------------------------------------------
GEOMETRYCOLLECTION(POINT(1 1),LINESTRING(2 2,3 3))
ST_GEOMCOLLFROMWKB
ST_GEOMCOLLFROMWKB는 주어진 WKB와 SRID를 바탕으로 GEOMETRYCOLLECTION 객체를 반환하는 함수입니다.
문법
[그림 32] ST_GEOMCOLLFROMWKB 문법

구성요소
str
GEOMETRYCOLLECTION 객체을 표현하기 위한 WKB 형식으로 된 CHAR, VARCHAR, NCHAR, NVARCHAR 타입 중 하나
num
GEOMETRYCOLLECTION 객체의 좌표계 정보(SRID)를 입력
SRID를 입력하지 않을 경우 0(시스템 기본 좌표계)이 설정됨
예제
SQL> SELECT ST_ASTEXT(ST_GEOMCOLLFROMWKB(ST_ASBINARY(GEOM)))
FROM GIS WHERE ST_GEOMETRYTYPE(GEOM) LIKE 'GEOMETRYCOLLECTION';
ST_ASTEXT(ST_GEOMCOLLFROMWKB(ST_ASBINARY(GEOM)))
-----------------------------------------------------------------------------------
GEOMETRYCOLLECTION(POINT(1 1),LINESTRING(2 2,3 3))
GEOMETRYCOLLECTION EMPTY
GEOMETRYCOLLECTION(POINT(1 1),LINESTRING(2 2,3 3))
ST_GEOMETRYFROMTEXT
ST_GEOMETRYFROMTEXT는 주어진 WKT와 SRID를 바탕으로 GEOMETRY 객체로 반환하는 함수입니다. 3차원을 표현하는 EWKT(Extended Well-Known Text) 형식의 TEXT도 지원합니다. ST_GEOMFROMTEXT 와 동일합니다.
문법
[그림 33] ST_GEOMETRYFROMTEXT 문법

구성요소
str
GEOMETRY 객체를 표현하기 위한 WKT 형식으로 된 CHAR, VARCHAR, NCHAR, NVARCHAR 타입 중 하나
num
GEOMETRY 객체의 좌표계 정보(SRID)를 입력
SRID를 입력하지 않을 경 우 0(시스템 기본 좌표계)이 설정됨
예제
SQL> SELECT ST_ASTEXT(ST_GEOMETRYFROMTEXT('MULTIPOINT(1 1,2 2)'))
FROM DUAL;
ST_ASTEXT(ST_GEOMETRYFROMTEXT('MULTIPOINT(11,22)'))
-----------------------------------------------------------------------------------
MULTIPOINT((1 1),(2 2))
ST_GEOMETRYN
ST_GEOMETRYN은 GEOMETRYCOLLECTION, MULTIPOINT, MULTILINESTRING, MULTIPOLYGON 객체에서 N번째 GEOMETRY 객체를 반환하는 함수입니다. MULTI가 아닌 GEOMETRY를 인자로 넣을 경우, N이 1이면 인자로 넣어준 GEOMETRY 객체를 그대로 반환하고, 1이 아닌 N이 들어올 경우 NULL을 반환합니다. N이 내부 GEOMETRY 개수의 범위를 벗어나는 경우에도 NULL을 반환합니다.
문법
[그림 34] ST_GEOMETRYN 문법

구성요소
geom
GEOMETRY 객체를 나타내는 GEOMETRY 타입이어야 함
num
N번째 객체를 지정
예제
SQL> SELECT ST_ASTEXT(ST_GEOMETRYN(GEOM,2)) FROM GIS
WHERE ST_GEOMETRYTYPE(GEOM) IN
('MULTIPOLYGON','MULTILINESTRING','MULTIPOINT','GEOMETRYCOLLECTION');
ST_ASTEXT(ST_GEOMETRYN(GEOM,2))
-----------------------------------------------------------------------------------
POINT(2 2)
LINESTRING(3 3,4 5)
POLYGON((3 3,3 5,5 5,5 3,3 3))
LINESTRING(2 2,3 3)
LINESTRING(2 2,3 3)
ST_GEOMETRYTYPE
ST_GEOMETRYTYPE은 GEOMETRY 객체의 타입을 반환하는 함수입니다.
문법
[그림 35] ST_GEOMETRYTYPE 문법

구성요소
geom
GEOMETRY 객체를 나타내는 GEOMETRY 타입이어야 함
예제
SQL> SELECT ST_GEOMETRYTYPE(GEOM) FROM GIS;
ST_GEOMETRYTYPE(GEOM)
-----------------------------------------------------------------------------------
POINT
MULTIPOINT
LINESTRING
MULTILINESTRING
POLYGON
POLYGON
MULTIPOLYGON
GEOMETRYCOLLECTION
GEOMETRYCOLLECTION
GEOMETRYCOLLECTION
ST_GEOMFROMGEOJSON
ST_GEOMFROMGEOJSON는 주어진 GEOJSON 표현식으로부터 GEOMETRY 객체를 생성하여 반환하는 함수입니다. JSON 도형 조각만을 인자로 받을 수 있습니다. 완전한 JSON 문서는 인자로 받을 수 없습니다.
문법
[그림 36] ST_GEOMFROMGEOJSON 문법

구성요소
str
GEOMETRY 객체를 표현하는 GEOJSON 형식으로 된 CHAR, VARCHAR, NCHAR, NVARCHAR 타입 중 하나
예제
SQL> SELECT ST_ASTEXT(ST_GEOMFROMGEOJSON('{"type":
"LineString","coordinates": [[30, 10], [10, 30], [40, 40]]}')) FROM DUAL;
ST_ASTEXT(ST_GEOMFROMGEOJSON('{"TYPE":"LINESTRING","COORDINATES":[[30,10],[10,30
-----------------------------------------------------------------------------------
LINESTRING(30 10,10 30,40 40)
ST_GEOMFROMGML
ST_GEOMFROMGML는 주어진 GML 표현식으로부터 GEOMETRY 객체를 생성하여 반환하는 함수입니다. GML 도형 조각만을 인자로 받을 수 있습니다. 완전한 GML 문서는 인자로 받을 수 없습니다.
문법
[그림 37] ST_GEOMFROMGML 문법

구성요소
str
GEOMETRY 객체를 표현하는 GML 형태의 CHAR, VARCHAR, NCHAR, NVARCHAR 타입 중 하나
num
GEOMETRY 객체의 좌표계 정보(SRID)를 입력
SRID를 입력하지 않을 경우 0(시스템 기본 좌표계)이 설정됨
예제
SQL> SELECT ST_ASTEXT(ST_GEOMFROMGML(
'<gml:LineString><coordinates>1,1 2,2</coordinates></gml:LineString>'))
FROM DUAL;
ST_ASTEXT(ST_GEOMFROMGML('<GML:LINESTRING><GML:COORDINATES>1,12,2</GML:
-----------------------------------------------------------------------------------
LINESTRING(1 1,2 2)
ST_GEOMFROMKML
ST_GEOMFROMKML는 주어진 KML 표현식으로부터 GEOMETRY 객체를 생성하여 반환하는 함수입니다. KML 도형 조각만을 인자로 받을 수 있습니다. 완전한 KML 문서는 인자로 받을 수 없습니다.
문법
[그림 38] ST_GEOMFROMKML 문법

구성요소
str
GEOMETRY 객체를 표현하는 KML 형태의 CHAR, VARCHAR, NCHAR, NVARCHAR 타입 중 하나
num
GEOMETRY 객체의 좌표계 정보(SRID)를 입력
SRID를 입력하지 않을 경우 0(시스템 기본 좌표계)이 설정됨
예제
SQL> SELECT ST_ASTEXT(ST_GEOMFROMKML('<LineString>
<coordinates>1,1 2,2</coordinates></LineString>')) FROM DUAL;
ST_ASTEXT(ST_GEOMFROMKML('<LINESTRING><COORDINATES>1,12,2</COORDINATES>
-----------------------------------------------------------------------------------
LINESTRING(1 1,2 2)
ST_GEOMFROMTEXT
ST_GEOMFROMTEXT는 주어진 WKT와 SRID를 바탕으로 GEOMETRY 객체로 반환하는 함수입니다. 3차원을 표현하는 EWKT(Extended Well-Known Text) 형식의 TEXT도 지원합니다.
문법
[그림 39] ST_GEOMFROMTEXT 문법

구성요소
str
GEOMETRY 객체를 표현하기 위한 WKT 형식으로 된 CHAR, VARCHAR, NCHAR, NVARCHAR 타입 중 하나
num
GEOMETRY 객체의 좌표계 정보(SRID)를 입력
SRID를 입력하지 않을 경 우 0(시스템 기본 좌표계)이 설정됨
예제
SQL> SELECT ST_ASTEXT(ST_GEOMFROMTEXT('MULTIPOINT(1 1,2 2)'))
FROM DUAL;
ST_ASTEXT(ST_GEOMFROMTEXT('MULTIPOINT(11,22)'))
-----------------------------------------------------------------------------------
MULTIPOINT((1 1),(2 2))
ST_GEOMFROMTWKB(#)
ST_GEOMFROMTWKB는 주어진 TWKB를 GEOMETRY 객체로 반환하는 함수입니다.
문법
[그림 40] ST_GEOMFROMTWKB 문법

구성요소
str
GEOMETRY 객체를 표현하기 위한 TWKB 형식이 저장되어 있는 바이너리 타입
(BLOB 또는 RAW) 값
num
GEOMETRY 객체의 좌표계 정보(SRID)를 입력
SRID를 입력하지 않을 경우 0(시스템 기본 좌표계)이 설정됨
예제
SQL> SELECT ST_ASTEXT(ST_GEOMFROMTWKB('02000202020202'))
FROM DUAL;
ST_ASTEXT(ST_GEOMFROMTWKB('02000202020202'))
----------------------------------------------------------------------------------
LINESTRING(1 1,2 2)
ST_GEOMFROMWKB
ST_GEOMFROMWKB는 주어진 WKB와 SRID를 GEOMETRY 객체로 반환하는 함수입니다.
문법
[그림 41] ST_GEOMFROMWKB 문법

구성요소
str
GEOMETRY 객체를 표현하기 위한 WKB 형식이 저장되어 있는 바이너리 타입
(BLOB 또는 RAW) 값
num
GEOMETRY 객체의 좌표계 정보(SRID)를 입력
SRID를 입력하지 않을 경우 0(시스템 기본 좌표계)이 설정됨
예제
SQL> SELECT ST_ASTEXT(ST_GEOMFROMWKB(ST_ASBINARY(GEOM)))
FROM GIS WHERE ST_GEOMETRYTYPE(GEOM) LIKE 'MULTIPOINT';
ST_ASTEXT(ST_GEOMFROMWKB(ST_ASBINARY(GEOM)))
----------------------------------------------------------------------------------
MULTIPOINT((1 1),(2 2))
ST_INTERIORRINGN
ST_INTERIORRINGN은 POLYGON 객체의 N번째 내부 링을 반환하는 함수입니다. POLYGON이 아닌 GEOMETRY를 인자로 넣을 경우 NULL을 반환합니다. N이 내부 RING의 개수의 범위를 벗어나는 경우에도 NULL을 반환합니다.
문법
[그림 42] ST_INTERIORRINGN 문법

구성요소
geom
POLYGON 객체를 나타내는 GEOMETRY 타입이어야 함
num
N번째 내부 링을 지정
예제
SQL> SELECT ST_ASTEXT(ST_INTERIORRINGN(GEOM,1))FROM GIS
WHERE ST_GEOMETRYTYPE(GEOM) LIKE 'POLYGON'
AND ST_NUMINTERIORRING(GEOM) > 1;
ST_ASTEXT(ST_INTERIORRINGN(GEOM,1))
----------------------------------------------------------------------------------
LINESTRING(6 10,6 11,9 11,9 10,6 10)
ST_INTERSECTION($)
ST_INTERSECTION은 GEOMETRY 객체 1과 GEOMETRY 객체 2가 공유하는 부분을 나타내는 GEOM ETRY 객체를 반환하는 함수입니다. 좌표계 정보를 통해 회전체 좌표계 상의 GEOMETRY 객체에 대한 연산이 가능합니다.
문법
[그림 43] ST_INTERSECTION 문법

구성요소
geom1
GEOMETRY 객체를 나타내는 GEOMETRY 타입이어야 함
geom2
GEOMETRY 객체를 나타내는 GEOMETRY 타입이어야 함
예제
SQL> SELECT ST_ASTEXT(A.GEOM),ST_ASTEXT(B.GEOM),
ST_ASTEXT(ST_INTERSECTION(A.GEOM,B.GEOM))
FROM GIS A,GIS B WHERE ST_GEOMETRYTYPE(A.GEOM) LIKE 'POLYGON'
AND ST_GEOMETRYTYPE(B.GEOM) LIKE 'POLYGON';
ST_ASTEXT(A.GEOM)
----------------------------------------------------------------------------------
ST_ASTEXT(B.GEOM)
----------------------------------------------------------------------------------
ST_ASTEXT(ST_INTERSECTION(A.GEOM,B.GEOM))
----------------------------------------------------------------------------------
POLYGON((1 1,2 1,2 2,1 2,1 1))
POLYGON((1 1,2 1,2 2,1 2,1 1))
POLYGON((2 1,1 1,1 2,2 2,2 1))
POLYGON((0 0,0 12,12 12,12 0,0 0),(6 10,6 11,9 11,9 10,6 10),(6 3,6 6,9 6,9 3,6 3))
POLYGON((1 1,2 1,2 2,1 2,1 1))
POLYGON((1 1,1 2,2 2,2 1,1 1))
POLYGON((1 1,2 1,2 2,1 2,1 1))
POLYGON((0 0,0 12,12 12,12 0,0 0),(6 10,6 11,9 11,9 10,6 10),(6 3,6 6,9 6,9 3,6 3))
POLYGON((1 1,1 2,2 2,2 1,1 1))
POLYGON((0 0,0 12,12 12,12 0,0 0),(6 10,6 11,9 11,9 10,6 10),(6 3,6 6,9 6,9 3,6 3))
POLYGON((0 0,0 12,12 12,12 0,0 0),(6 10,6 11,9 11,9 10,6 10),(6 3,6 6,9 6,9 3,6 3))
POLYGON((0 0,0 12,12 12,12 0,0 0),(6 11,6 10,9 10,9 11,6 11),(6 6,6 3,9 3,9 6,6 6))
ST_INTERSECTS($)
ST_INTERSECTS는 두 GEOMETRY 객체가 공유하는 부분이 있을 때 1을 반환하는 함수입니다. 좌표계 정보를 통해 회전체 좌표계 상의 GEOMETRY 객체에 대한 연산이 가능합니다. GEOMETRY 인자로 GEOME TRYCOLLECTION 타입이 올 경우에는 런타임 오류를 발생시킵니다.
문법
[그림 44] ST_INTERSECTS 문법

구성요소
geom1
GEOMETRY 객체를 나타내는 GEOMETRY 타입이어야 함
geom2
GEOMETRY 객체를 나타내는 GEOMETRY 타입이어야 함
예제
SQL> SELECT ST_INTERSECTS(A.GEOM,B.GEOM),
ST_ASTEXT(A.GEOM),ST_ASTEXT(B.GEOM) FROM GIS A,GIS B
WHERE ST_GEOMETRYTYPE(A.GEOM) LIKE 'POLYGON'
AND ST_GEOMETRYTYPE(B.GEOM) LIKE 'POLYGON';
ST_INTERSECTS(A.GEOM,B.GEOM)
-----------------------------
ST_ASTEXT(A.GEOM)
----------------------------------------------------------------------------------
ST_ASTEXT(B.GEOM)
----------------------------------------------------------------------------------
1
POLYGON((1 1,2 1,2 2,1 2,1 1))
POLYGON((1 1,2 1,2 2,1 2,1 1))
1
POLYGON((1 1,2 1,2 2,1 2,1 1))
POLYGON((0 0,0 12,12 12,12 0,0 0),(6 10,6 11,9 11,9 10,6 10),(6 3,6 6,9 6,9 3,6 3))
1
POLYGON((0 0,0 12,12 12,12 0,0 0),(6 10,6 11,9 11,9 10,6 10),(6 3,6 6,9 6,9 3,6 3))
POLYGON((1 1,2 1,2 2,1 2,1 1))
1
POLYGON((0 0,0 12,12 12,12 0,0 0),(6 10,6 11,9 11,9 10,6 10),(6 3,6 6,9 6,9 3,6 3))
POLYGON((0 0,0 12,12 12,12 0,0 0),(6 10,6 11,9 11,9 10,6 10),(6 3,6 6,9 6,9 3,6 3))
ST_ISCLOSED
ST_ISCLOSED는 LINESTRING 객체의 첫 점과 마지막 점이 동일할 때 1을 반환하는 함수입니다. POINT나 POLYGON 객체에 대해서는 항상 1을 반환합니다. MULTI 타입의 GEOMETRY 객체에 대해서는 내부 GE OMETRY가 모두 1일 경우 1을 반환합니다.
문법
[그림 45] ST_ISCLOSED 문법

구성요소
geom
LINESTRING 객체를 나타내는 GEOMETRY 타입이어야 함
예제
SQL> SELECT ST_ISCLOSED(GEOM), ST_ASTEXT(GEOM) FROM GIS
WHERE ST_GEOMETRYTYPE(GEOM) LIKE 'LINESTRING';
ST_ISCLOSED(GEOM)
--------------------
ST_ASTEXT(GEOM)
----------------------------------------------------------------------------------
0
LINESTRING(1 1,2 2)
ST_ISCOLLECTION
ST_ISCOLLECTION는 GEOMETRY 객체가 GEOMETRYCOLLECTION, MULTI GEOMETRY 인 경우 1을 반환하는 함수입니다.
문법
[그림 46] ST_ISCOLLECTION 문법

구성요소
geom
GEOMETRY 객체를 나타내는 GEOMETRY 타입이어야 함
예제
SQL> SELECT ST_ISCOLLECTION(GEOM), ST_ASTEXT(GEOM) FROM GIS;
ST_ISCOLLECTION(GEOM)
----------------------
ST_ASTEXT(GEOM)
----------------------------------------------------------------------------------
0
POINT(1 1)
1
MULTIPOINT((1 1),(2 2))
0
LINESTRING(1 1,2 2)
1
MULTILINESTRING((1 1,2 2),(3 3,4 5))
0
POLYGON((1 1,2 1,2 2,1 2,1 1))
0
POLYGON((0 0,0 12,12 12,12 0,0 0),(6 10,6 11,9 11,9 10,6 10),(6 3,6 6,9 6,9 3,6 3))
1
MULTIPOLYGON(((1 1,2 1,2 2,1 2,1 1)),((3 3,3 5,5 5,5 3,3 3)))
1
GEOMETRYCOLLECTION(POINT(1 1),LINESTRING(2 2,3 3))
1
GEOMETRYCOLLECTION EMPTY
1
GEOMETRYCOLLECTION(POINT(1 1),LINESTRING(2 2,3 3))
ST_ISEMPTY
ST_ISEMPTY는 주어진 GEOMETRY 객체가 EMPTY 타입일 때 1을 반환하는 함수입니다.
문법
[그림 47] ST_ISEMPTY 문법

구성요소
geom
GEOMETRY 객체를 나타내는 GEOMETRY 타입이어야 함
예제
SQL> SELECT ST_ASTEXT(GEOM)
FROM GIS WHERE ST_ISEMPTY(GEOM) > 0;
ST_ASTEXT(GEOM)
----------------------------------------------------------------------------------
GEOMETRYCOLLECTION EMPTY
ST_ISRING
ST_ISRING은 주어진 LINESTRING이 닫혀있고(첫 점과 마지막 점이 동일) 심플하면 1을 반환하는 함수 입니다. LINESTRING이 아닌 타입의 GEOMETRY 객체를 넣을 경우 항상 0을 반환합니다.
문법
[그림 48] ST_ISRING 문법

구성요소
geom
LINESTRING 객체를 나타내는 GEOMETRY 타입이어야 함
예제
SQL> SELECT ST_ISRING(GEOM),ST_ASTEXT(GEOM) FROM GIS
WHERE ST_GEOMETRYTYPE(GEOM) LIKE 'LINESTRING';
ST_ISRING(GEOM)
------------------
ST_ASTEXT(GEOM)
----------------------------------------------------------------------------------
0
LINESTRING(1 1,2 2)
ST_ISSIMPLE
ST_ISSIMPLE은 GEOMETRY 객체가 자체 교차점이나 자체 접촉점을 가지지 않으면 1을 반환하는 함수 입니다. GEOMETRYCOLLECTION에 대해서는 예외를 반환합니다.
문법
[그림 49] ST_ISSIMPLE 문법

구성요소
geom
GEOMETRY 객체를 나타내는 GEOMETRY 타입이어야 함
예제
SQL> SELECT ST_ISSIMPLE(GEOM),ST_ASTEXT(GEOM) FROM GIS
WHERE ST_GEOMETRYTYPE(GEOM) NOT LIKE 'GEOMETRYCOLLECTION';
ST_ISSIMPLE(GEOM)
--------------------
ST_ASTEXT(GEOM)
----------------------------------------------------------------------------------
1
POINT(1 1)
1
MULTIPOINT((1 1),(2 2))
1
LINESTRING(1 1,2 2)
1
MULTILINESTRING((1 1,2 2),(3 3,4 5))
1
POLYGON((1 1,2 1,2 2,1 2,1 1))
1
POLYGON((0 0,0 12,12 12,12 0,0 0),(6 10,6 11,9 11,9 10,6 10),(6 3,6 6,9 6,9 3,6 3))
1
MULTIPOLYGON(((1 1,2 1,2 2,1 2,1 1)),((3 3,3 5,5 5,5 3,3 3)))
ST_ISVALID
ST_ISVALID는 GEOMETRY 객체가 공간적으로 유효한지(well-formed 인지)를 검사하는 함수입니다. 공간적으로 유효하면 1, 아니면 0을 반환합니다. EMPTY 공간 객체에 대해서는 1을 반환합니다. 유효하지 않은 객체에 대해서는 추가로 유효하지 않은 이유와 위치를 반환합니다.
문법
[그림 50] ST_ISVALID 문법

구성요소
geom
GEOMETRY 객체를 나타내는 GEOMETRY 타입이어야 함
예제
SQL> SELECT ST_ISVALID(ST_GEOMFROMTEXT('POLYGON((0 0,1 1,0 1,1 0,0 0))'))
FROM DUAL;
ST_ISVALID(ST_GEOMFROMTEXT('POLYGON((00,11,01,10,00))'))
--------------------------------------------------------
0
SQL> SELECT ST_ISVALID(ST_GEOMFROMTEXT('POLYGON((0 0,1 0,1 1,0 1,0 0))'))
FROM DUAL;
ST_ISVALID(ST_GEOMFROMTEXT('POLYGON((00,10,11,01,00))'))
---------------------------------------------------------
1
ST_LENGTH($)
ST_LENGTH는 LINESTRING 객체의 길이를 반환하는 함수입니다. POINT, POLYGON에 대해서는 0을 반환합니다. MULTI 타입의 GEOMETRY 객체에 대해서는 내부의 GEOMETRY들의 계산 결과의 합을 값을 반환합니다. 좌표계 정보를 통해 회전체 좌표계 상의 GEOMETRY 객체에 대한 연산이 가능합니다. 더 빠른 연산을 원하면 구면좌표계에 대한 연산으로 바꿀 수 있습니다.
문법
[그림 51] ST_LENGTH 문법

구성요소
geom
LINESTRING 객체를 나타내는 GEOMETRY 타입이어야 함
default
연산 방식을 설정
좌표계 정보가 회전체 좌표계인 경우 기본으로 회전타원 체에 대한 연산으로 설정되어있고, 0을 인자로 주면 구면좌표계에 대해 연산
예제
SQL> SELECT ST_ASTEXT(GEOM), ST_LENGTH(GEOM) FROM GIS
WHERE ST_GEOMETRYTYPE(GEOM) IN ('LINESTRING','MULTILINESTRING');
ST_ASTEXT(GEOM)
----------------------------------------------------------------------------------
ST_LENGTH(GEOM)
-------------------
LINESTRING(1 1,2 2)
1.41421356
MULTILINESTRING((1 1,2 2),(3 3,4 5))
3.65028154
ST_LINEFROMTEXT
ST_LINEFROMTEXT는 주어진 WKT와 SRID를 바탕으로 LINESTRING 객체로 반환하는 함수입니다.
문법
[그림 52] ST_LINEFROMTEXT 문법

구성요소
str
LINESTRING 객체을 표현하기 위한 WKT 형식으로 된 CHAR, VARCHAR, NCHAR, NVARCHAR 타입 중 하나
num
LINESTRING 객체의 좌표계 정보(SRID)를 입력
SRID를 입력하지 않을 경우 0(시스템 기본 좌표계)이 설정됨
예제
SQL> SELECT ST_ASTEXT(ST_LINEFROMTEXT('LINESTRING(1 1,2 2)'))
FROM DUAL;
ST_ASTEXT(ST_LINEFROMTEXT('LINESTRING(11,22)'))
----------------------------------------------------------------------------------
LINESTRING(1 1,2 2)
ST_LINEFROMWKB
ST_LINEFROMWKB는 주어진 WKB와 SRID를 바탕으로 LINESTRING 객체로 반환하는 함수입니다.
문법
[그림 53] ST_LINEFROMWKB 문법

구성요소
str
LINESTRING 객체을 표현하기 위한 WKB 형식으로 된 CHAR, VARCHAR, NCHAR, NVARCHAR 타입 중 하나
num
LINESTRING 객체의 좌표계 정보(SRID)를 입력
SRID를 입력하지 않을 경우 0(시스템 기본 좌표계)이 설정됨
예제
SQL> SELECT ST_ASTEXT(ST_LINEFROMWKB(ST_ASBINARY(GEOM)))
FROM GIS WHERE ST_GEOMETRYTYPE(GEOM) LIKE 'LINESTRING';
ST_ASTEXT(ST_LINEFROMWKB(ST_ASBINARY(GEOM)))
----------------------------------------------------------------------------------
LINESTRING(1 1,2 2)
ST_MAKEENVELOPE
ST_MAKEENVELOPE는 주어진 최소값과 최대값으로 형성된 직사각형 POLYGON을 반환합니다.
문법
[그림 54] ST_MAKEENVELOPE 문법

구성요소
num1
직사각형 POLYGON의 최소점(왼쪽 아래)의 x 좌표
num2
직사각형 POLYGON의 최소점(왼쪽 아래)의 y 좌표
num3
직사각형 POLYGON의 최대점(오른쪽 위)의 x 좌표
num4
직사각형 POLYGON의 최대점(오른쪽 위)의 y 좌표
예제
SQL> SELECT ST_ASTEXT(ST_MAKEENVELOPE(-1,1,2,3)) FROM DUAL;
ST_ASTEXT(ST_MAKEENVELOPE(-1,1,2,3))
----------------------------------------------------------------------------------
POLYGON((-1 1,-1 3,2 3,2 1,-1 1))
ST_MAKELINE
ST_MAKELINE는 POINT, MULTIPOINT, LINESTRING을 입력받아 LINESTRING을 반환합니다. 집합 함수 이므로 GEOMETRY 객체들을 한데 모은 집합에 대한 결과를 반환합니다. ORDER BY 문구로 반환할 LINESTRING 객체의 형태를 설정할 수 있습니다.
문법
[그림 55] ST_MAKELINE 문법

구성요소
geom_expr
GEOMETRY 객체를 나타내는 임의의 연산식
POINT, LINESTRING, MULTIPOINT 타입의 GEOMETRY 객체이어야 함
order_by_clause
GEOMETRY들을 어떻게 정렬할지를 명시
예제
SQL> SELECT ST_ASTEXT(ST_MAKELINE(A.GEOM, B.GEOM)) FROM GIS A, GIS B
WHERE ST_GEOMETRYTYPE(A.GEOM) LIKE 'POINT'
AND ST_GEOMETRYTYPE(B.GEOM) LIKE 'LINESTRING';
ST_ASTEXT(ST_MAKELINE(A.GEOM,B.GEOM))
----------------------------------------------------------------------------------
LINESTRING(1 1,2 2)
예제 아래는 ST_MAKELINE 함수에 Table의 geometry column을 인자로 사용하는 예입니다.
SQL> SELECT ST_ASTEXT(ST_MAKELINE(GEOM)) FROM GIS
WHERE ST_GEOMETRYTYPE(GEOM) IN ('POINT','MULTIPOINT','LINESTRING');
ST_ASTEXT(ST_MAKELINE(GEOM))
----------------------------------------------------------------------------------
LINESTRING(1 1,1 1,2 2,1 1,2 2)
예제 아래는 ST_MAKELINE 함수에 order_by_clause를 사용하는 예입니다.
SQL> SELECT ST_ASTEXT(ST_MAKELINE(GEOM ORDER BY ID DESC))
FROM GIS WHERE ST_GEOMETRYTYPE(GEOM) IN ('POINT','LINESTRING','MULTIPOINT');
ST_ASTEXT(ST_MAKELINE(GEOMORDERBYIDDESC))
----------------------------------------------------------------------------------
LINESTRING(1 1,2 2,1 1,2 2,1 1)
ST_MAKEPOINT
ST_MAKEPOINT는 2D POINT 객체를 반환합니다.
문법
[그림 56] ST_MAKEPOINT 문법

구성요소
num1
POINT의 x 좌표를 나타냄
num2
POINT의 y 좌표를 나타냄
예제
SQL> SELECT ST_ASTEXT(ST_MAKEPOINT(1,2)) FROM DUAL;
ST_ASTEXT(ST_MAKEPOINT(1,2))
----------------------------------------------------------------------------------
POINT(1 2)
ST_MAKEPOLYGON
ST_MAKEPOLYGON는 주어진 구조로 형성된 POLYGON을 반환합니다. 입력 도형이 닫힌 LINESTRING 이어야 합니다.
문법
[그림 57] ST_MAKEPOLYGON 문법

구성요소
geom1
형성할 POLYGON의 SHELL을 나타내는 LINESTRING 객체를 나타내는 GEOM ETRY 타입이어야 함
geom2
형성할 POLYGON의 INTERIOR RING을 나타내는 LINESTRING 객체를 나타내는 GEOMETRY 타입이어야 함
INTERIOR RING이 다수인 경우 MULTI LINESTRING 객체를 나타내는 GEOMETRY 타입이어야 함
예제
SQL> SELECT ST_ASTEXT(ST_MAKEPOLYGON(ST_GEOMFROMTEXT(
'LINESTRING(0 0,1 0,1 1,0 1,0 0)'))) FROM DUAL;
ST_ASTEXT(ST_MAKEPOLYGON(ST_GEOMFROMTEXT('LINESTRING(00,10,11,01,00)')))
----------------------------------------------------------------------------------
POLYGON((0 0,1 0,1 1,0 1,0 0))
SQL> SELECT ST_ASTEXT(ST_MAKEPOLYGON(
ST_GEOMFROMTEXT('LINESTRING(0 0,10 0,10 10,0 10,0 0)'),
ST_GEOMFROMTEXT('MULTILINESTRING((0 0,4 0,4 4,0 4,0 0),(5 5,7 5,7 7,5 7,5 5))
'))) MAKEPOLYGON FROM DUAL;
MAKEPOLYGON
----------------------------------------------------------------------------------
POLYGON((0 0,10 0,10 10,0 10,0 0),(0 0,4 0,4 4,0 4,0 0),(5 5,7 5,7 7,5 7,5 5))
ST_MAKEVALID(#)
ST_MAKEVALID는 유효하지 않은 GEOMETRY를 점의 소실없이 유효한 GEOMETRY로 변경하여 반환합니다. 이미 유요한 GEOMETRY의 경우 그대로 반환합니다.
문법
[그림 58] ST_MAKEVALID 문법

구성요소
geom
GEOMETRY 객체를 나타내는 GEOMETRY 타입이어야 함
예제
SQL> SELECT ST_ASTEXT(ST_MAKEVALID(ST_GEOMFROMTEXT(
'POLYGON((0 0,1 0,0 1,1 1,0 0))'))) FROM DUAL;
ST_ASTEXT(ST_MAKEVALID(ST_GEOMFROMTEXT('POLYGON((00,10,01,11,00))')))
----------------------------------------------------------------------------------
MULTIPOLYGON(((0.5 0.5,1 0,0 0,0.5 0.5)),((0.5 0.5,0 1,1 1,0.5 0.5)))
SQL> SELECT ST_ASTEXT(ST_MAKEVALID(ST_GEOMFROMTEXT(
'POLYGON((0 0,1 0,1 1,0 1,0 0))'))) FROM DUAL;
ST_ASTEXT(ST_MAKEVALID(ST_GEOMFROMTEXT('POLYGON((00,10,11,01,00))')))
----------------------------------------------------------------------------------
POLYGON((0 0,1 0,1 1,0 1,0 0))
ST_MAXX
ST_MAXX는 해당 공간 객체를 둘러싸는 최소 경계 사각형의 X 좌표값 중 큰 값을 반환하는 함수입니다.
문법
[그림 59] ST_MAXX 문법

구성요소
geom
GEOMETRY 객체를 나타내는 GEOMETRY 타입이어야 함
예제
SQL> SELECT ST_MAXX(ST_GEOMFROMTEXT('LINESTRING(-1 0,3 2)')) FROM DUAL;
ST_MAXX(ST_GEOMFROMTEXT('LINESTRING(00,32)'))
---------------------------------------------
3
ST_MAXY
ST_MAXY는 해당 공간 객체를 둘러싸는 최소 경계 사각형의 Y 좌표값 중 큰 값을 반환하는 함수입니다.
문법
[그림 60] ST_MAXY문법

구성요소
geom
GEOMETRY 객체를 나타내는 GEOMETRY 타입이어야 함
예제
SQL> SELECT ST_MAXY(ST_GEOMFROMTEXT('LINESTRING(-1 0,3 2)')) FROM DUAL;
ST_MAXY(ST_GEOMFROMTEXT('LINESTRING(00,32)'))
---------------------------------------------
2
ST_MINX
ST_MINX는 해당 공간 객체를 둘러싸는 최소 경계 사각형의 X 좌표값 중 작은 값을 반환하는 함수입니다.
문법
[그림 61] ST_MINX문법

구성요소
geom
GEOMETRY 객체를 나타내는 GEOMETRY 타입이어야 함
예제
SQL> SELECT ST_MINX(ST_GEOMFROMTEXT('LINESTRING(-1 0,3 2)')) FROM DUAL;
ST_MINX(ST_GEOMFROMTEXT('LINESTRING(-10,32)'))
----------------------------------------------
-1
ST_MINY
ST_MINY는 해당 공간 객체를 둘러싸는 최소 경계 사각형의 Y 좌표값 중 작은 값을 반환하는 함수입니다.
문법
[그림 62] ST_MINY문법

구성요소
geom
GEOMETRY 객체를 나타내는 GEOMETRY 타입이어야 함
예제
SQL> SELECT ST_MINY(ST_GEOMFROMTEXT('LINESTRING(0 -1,3 2)')) FROM DUAL;
ST_MINY(ST_GEOMFROMTEXT('LINESTRING(0-1,32)'))
----------------------------------------------
-1
ST_MLINEFROMTEXT
ST_MLINEFROMTEXT는 주어진 WKT와 SRID를 바탕으로 MULTILINESTRING 객체로 반환하는 함수입니다.
문법
[그림 63] ST_MLINEFROMTEXT 문법

구성요소
str
MULTILINESTRING 객체을 표현하기 위한 WKT 형식으로 된 CHAR, VARCHAR, NCHAR, NVARCHAR 타입 중 하나
num
MULTILINESTRING 객체의 좌표계 정보(SRID)를 입력
SRID를 입력하지 않을 경우 0(시스템 기본 좌표계)이 설정됨
예제
SQL> SELECT ST_ASTEXT(ST_MLINEFROMTEXT(
'MULTILINESTRING((1 1,2 2),(3 3,4 5))')) FROM DUAL;
ST_ASTEXT(ST_MLINEFROMTEXT('MULTILINESTRING((11,22),(33,45))'))
----------------------------------------------------------------------------------
MULTILINESTRING((1 1,2 2),(3 3,4 5))
ST_MLINEFROMWKB
ST_MLINEFROMWKB는 주어진 WKB와 SRID를 바탕으로 MULTILINESTRING 객체로 반환하는 함수입니다.
문법
[그림 64] ST_MLINEFROMWKB 문법

구성요소
str
MULTILINESTRING 객체을 표현하기 위한 WKB 형식으로 된 CHAR, VARCHAR, NCHAR, NVARCHAR 타입 중 하나
num
MULTILINESTRING 객체의 좌표계 정보(SRID)를 입력
SRID를 입력하지 않을 경우 0(시스템 기본 좌표계)이 설정됨
예제
SQL> SELECT ST_ASTEXT(ST_MLINEFROMWKB(ST_ASBINARY(GEOM)))
FROM GIS WHERE ST_GEOMETRYTYPE(GEOM) LIKE 'MULTILINESTRING';
ST_ASTEXT(ST_MLINEFROMWKB(ST_ASBINARY(GEOM)))
----------------------------------------------------------------------------------
MULTILINESTRING((1 1,2 2),(3 3,4 5))
ST_MPOINTFROMTEXT
ST_MPOINTFROMTEXT는 주어진 WKT와 SRID를 바탕으로 MULTIPOINT 객체로 반환하는 함수입니다.
문법
[그림 65] ST_MPOINTFROMTEXT 문법

구성요소
str
MULTIPOINT 객체을 표현하기 위한 WKT 형식으로 된 CHAR, VARCHAR, NCHAR, NVARCHAR 타입 중 하나
num
MULTIPOINT 객체의 좌표계 정보(SRID)를 입력
SRID를 입력하지 않을 경 우 0(시스템 기본 좌표계)이 설정됨
예제
SQL> SELECT ST_ASTEXT(ST_MPOINTFROMTEXT('MULTIPOINT(10 10,20 20)'))
FROM DUAL;
ST_ASTEXT(ST_MPOINTFROMTEXT('MULTIPOINT(1010,2020)'))
----------------------------------------------------------------------------------
MULTIPOINT((10 10),(20 20))
ST_MPOINTFROMWKB
ST_MPOINTFROMWKB는 주어진 WKB와 SRID를 바탕으로 MULTIPOINT 객체로 반환하는 함수입니다.
문법
[그림 66] ST_MPOINTFROMWKB 문법

구성요소
str
MULTIPOINT 객체을 표현하기 위한 WKB 형식으로 된 CHAR, VARCHAR, NCHAR, NVARCHAR 타입 중 하나
num
MULTIPOINT 객체의 좌표계 정보(SRID)를 입력
SRID를 입력하지 않을 경우 0(시스템 기본 좌표계)이 설정됨
예제
SQL> SELECT ST_ASTEXT(ST_MPOINTFROMWKB(ST_ASBINARY(GEOM)))
FROM GIS WHERE ST_GEOMETRYTYPE(GEOM) LIKE 'MULTIPOINT';
ST_ASTEXT(ST_MPOINTFROMWKB(ST_ASBINARY(GEOM)))
----------------------------------------------------------------------------------
MULTIPOINT((1 1),(2 2))
ST_MPOLYFROMTEXT
ST_MPOLYFROMTEXT는 주어진 WKT와 SRID를 바탕으로 MULTIPOLYGON 객체로 반환하는 함수입니다.
문법
[그림 67] ST_MPOLYFROMTEXT 문법

구성요소
str
MULTIPOLYGON 객체을 표현하기 위한 WKT 형식으로 된 CHAR, VARCHAR, NCHAR, NVARCHAR 타입 중 하나
num
MULTIPOLYGON 객체의 좌표계 정보(SRID)를 입력
SRID를 입력하지 않을 경우 0(시스템 기본 좌표계)이 설정됨
예제
SQL> SELECT ST_ASTEXT(ST_MPOLYFROMTEXT('MULTIPOLYGON
(((10 10,10 20,20 20,20 15,10 10)), ((60 60,70 70,80 60,60 60)))'))
MPOLYFROMTEXT FROM DUAL;
MPOLYFROMTEXT
----------------------------------------------------------------------------------
MULTIPOLYGON(((10 10,10 20,20 20,20 15,10 10)),((60 60,70 70,80 60,60 60)))
ST_MPOLYFROMWKB
ST_MPOLYFROMWKB는 주어진 WKB와 SRID를 바탕으로 MULTIPOLYGON 객체로 반환하는 함수입니다.
문법
[그림 68] ST_MPOLYFROMWKB 문법

구성요소
str
MULTIPOLYGON 객체을 표현하기 위한 WKB 형식으로 된 CHAR, VARCHAR, NCHAR, NVARCHAR 타입 중 하나
num
MULTIPOLYGON 객체의 좌표계 정보(SRID)를 입력
SRID를 입력하지 않을 경우 0(시스템 기본 좌표계)이 설정됨
예제
SQL> SELECT ST_ASTEXT(ST_MPOLYFROMWKB(ST_ASBINARY(GEOM)))
FROM GIS WHERE ST_GEOMETRYTYPE(GEOM) LIKE 'MULTIPOLYGON';
ST_ASTEXT(ST_MPOLYFROMWKB(ST_ASBINARY(GEOM)))
----------------------------------------------------------------------------------
MULTIPOLYGON(((1 1,2 1,2 2,1 2,1 1)),((3 3,3 5,5 5,5 3,3 3)))
ST_MULTI
ST_MULTI는 GEOMETRY를 MULTI 타입의 GEOMETRY로 반환합니다. MULTI 타입의 객체를 인자로 넣 을 경우 그대로 반환합니다.
문법
[그림 69] ST_MULTI 문법

구성요소
geom
GEOMETRY 객체를 나타내는 GEOMETRY 타입이어야 함
예제
SQL> SELECT ST_ASTEXT(ST_MULTI(GEOM)) FROM GIS
WHERE ST_GEOMETRYTYPE(GEOM) LIKE 'LINESTRING';
ST_ASTEXT(ST_MULTI(GEOM))
----------------------------------------------------------------------------------
MULTILINESTRING((1 1,2 2))
ST_NN($)
ST_NN은 조건절에 사용되는 함수로, TABLE의 GEOMETRY 컬럼에 대해 입력으로 주어진 GEOMETRY 와 가장 가까운 GEOMETRY가 포함된 행들에 대해 1을 반환하는 함수입니다. 거리가 짧은 순으로 행들을 반환합니다.
문법
[그림 70] ST_NN 문법

구성요소
geom_expr
GEOMETRY 객체를 나타내는 GEOMETRY 타입이어야 함
RTREE가 빌드되어 있는 GEOMETRY TYPE의 컬럼이어야 함
geom
GEOMETRY 객체를 나타내는 GEOMETRY 타입이어야
str
ST_NN에 대해 1을 반환할 행의 개수 등의 추가 정보를 주어진 양식에 맞도록 입력
WKT 형식으로 된 CHAR, VARCHAR, NCHAR, NVARCHAR 타입 중 하나
str 양식은 총 3가지로 구성되며 각각의 인자들은 콤마(,)로 구분하여 사용
res_num : GEOMETRY 컬럼들 가까운 순으로 선별할 GEOMETRY의 개수를 입력. 입력하지 않을 경우 전체 컬럼에 대해 전부 1을 반환.
batch_size : RTREE에서 탐색할 GEOMETRY의 개수 단위를 입력. 사용 자가 특정 값에 대해 효율적인 연산이 가능합니다고 판단한 값을 입력. 입력 하지 않을 경우 시스템에서 설정한 기본값으로 동작.
distance : 병목으로 설정할 거리를 입력. 입력된 거리 이하에 있는 행들을 반환하게 됨.
unit : 병목으로 설정할 거리의 단위를 입력
예제
SQL> SELECT ID FROM GIS WHERE ST_NN(GEOM,
ST_GEOMFROMTEXT('POINT(0 0)'),'RES_NUM=3,BATCH_SIZE=10')=1;
ID
------------
106
101
102
ST_NPOINTS
ST_NPOINTS는 GEOMETRY가 가지고 있는 POINT의 개수를 반환합니다.
문법
[그림 71] ST_NPOINTS 문법

구성요소
geom
GEOMETRY 객체를 나타내는 GEOMETRY 타입이어야 함
예제
SQL> SELECT ST_NPOINTS(GEOM) FROM GIS;
ST_NPOINTS(GEOM)
----------------
1
2
2
4
5
15
10
3
0
3
ST_NUMGEOMETRIES
ST_NUMGEOMETRIES는 GEOMETRYCOLLECTION, MULTIPOING, MULTILINESTRING, MULTIPOLYGON 객체에서 GEOMETRY 객체수를 반환하는 함수입니다. MULTI 타입이 아닌 타입의 GEOMETRY 객체를 넣을 경우 1을 반환합니다.
문법
[그림 72] ST_NUMGEOMETRIES 문법

구성요소
geom
COLLECTION 객체를 나타내는 GEOMETRY 타입이어야 함
예제
SQL> SELECT ST_NUMGEOMETRIES(GEOM),ST_ASTEXT(GEOM) FROM GIS
WHERE ST_GEOMETRYTYPE(GEOM) LIKE 'GEOMETRYCOLLECTION';
ST_NUMGEOMETRIES(GEOM)
------------------------------
ST_ASTEXT(GEOM)
---------------------------------------------------------------------------------
2
GEOMETRYCOLLECTION(POINT(1 1),LINESTRING(2 2,3 3))
0
GEOMETRYCOLLECTION EMPTY
2
GEOMETRYCOLLECTION(POINT(1 1),LINESTRING(2 2,3 3))
ST_NUMINTERIORRING
ST_NUMINTERIORRING은 POLYGON 객체의 내부 링 개수를 반환하는 함수입니다. POLYGON이 아닌 타입의 GEOMETRY 객체를 넣을 경우 NULL을 반환합니다.
문법
[그림 73] ST_NUMINTERIORRING 문법

구성요소
geom
POLYGON 객체를 나타내는 GEOMETRY 타입이어야 함
예제
SQL> SELECT ST_NUMINTERIORRING(GEOM), ST_ASTEXT(GEOM) FROM GIS
WHERE ST_GEOMETRYTYPE(GEOM) LIKE 'POLYGON';
ST_NUMINTERIORRING(GEOM)
------------------------------
ST_ASTEXT(GEOM)
---------------------------------------------------------------------------------
0
POLYGON((1 1,2 1,2 2,1 2,1 1))
2
POLYGON((0 0,0 12,12 12,12 0,0 0),(6 10,6 11,9 11,9 10,6 10),(6 3,6 6,9 6,9 3,6 3))
ST_NUMPOINTS
ST_NUMPOINTS는 GEOMETRY가 가지고 있는 POINT의 개수를 반환합니다. ST_NPOINTS와 같은 사양 의 함수입니다.
문법
[그림 74] ST_NUMPOINTS 문법

구성요소
geom
GEOMETRY 객체를 나타내는 GEOMETRY 타입이어야 함
예제
SQL> SELECT ST_NUMPOINTS(GEOM),ST_ASTEXT(GEOM) FROM GIS
WHERE ST_GEOMETRYTYPE(GEOM) LIKE 'LINESTRING';
ST_NUMPOINTS(GEOM)
-------------------
ST_ASTEXT(GEOM)
---------------------------------------------------------------------------------
2
LINESTRING(1 1,2 2)
ST_OVERLAPS
ST_OVERLAPS는 주어진 두 GEOMETRY 객체가 동일한 차원이고, 서로 겹치는 영역이 존재하며, 완전히 포함되지는 않을 경우 1을 반환하는 함수입니다.
문법
[그림 75] ST_OVERLAPS 문법

구성요소
geom1
GEOMETRY 객체를 나타내는 GEOMETRY 타입이어야 함
geom2
GEOMETRY 객체를 나타내는 GEOMETRY 타입이어야 함
예제
SQL> SELECT ST_OVERLAPS(A.GEOM,B.GEOM), ST_ASTEXT(A.GEOM),ST_ASTEXT(B.GEOM)
FROM GIS A,GIS B WHERE ST_GEOMETRYTYPE(A.GEOM) LIKE 'LINESTRING'
AND ST_GEOMETRYTYPE(B.GEOM) LIKE 'MULTILINESTRING';
ST_OVERLAPS(A.GEOM,B.GEOM)
----------------------------
ST_ASTEXT(A.GEOM)
---------------------------------------------------------------------------------
ST_ASTEXT(B.GEOM)
---------------------------------------------------------------------------------
0
LINESTRING(1 1,2 2)
MULTILINESTRING((1 1,2 2),(3 3,4 5))
ST_POINT
ST_POINT는 2D POINT 객체를 반환하는 함수입니다.
문법
[그림 76] ST_POINT 문법

구성요소
num1
POINT의 x 좌표를 나타냄
num2
POINT의 y 좌표를 나타냄
예제
SQL> SELECT ST_ASTEXT(ST_POINT(1,2)) FROM DUAL;
ST_ASTEXT(ST_POINT(1,2))
---------------------------------------------------------------------------------
POINT(1 2)
ST_POINTFROMTEXT
ST_POINTFROMTEXT는 주어진 WKT와 SRID를 바탕으로 POINT 객체로 반환하는 함수입니다.
문법
[그림 77] ST_POINTFROMTEXT 문법

구성요소
str
POINT 객체을 표현하기 위한 WKT 형식으로 된 CHAR, VARCHAR, NCHAR, NVARCHAR 타입 중 하나
num
POINT 객체의 좌표계 정보(SRID)를 입력
SRID를 입력하지 않을 경우 0(시스템 기본 좌표계)이 설정됨
예제
SQL> SELECT ST_ASTEXT(ST_POINTFROMTEXT('POINT(10 10)')) FROM DUAL;
ST_ASTEXT(ST_POINTFROMTEXT('POINT(1010)'))
---------------------------------------------------------------------------------
POINT(10 10)
ST_POINTFROMWKB
ST_POINTFROMWKB는 주어진 WKB와 SRID를 바탕으로 POINT 객체로 반환하는 함수입니다.
문법
[그림 78] ST_POINTFROMWKB 문법

구성요소
str
POINT 객체을 표현하기 위한 WKB 형식으로 된 CHAR, VARCHAR, NCHAR, NVARCHAR 타입 중 하나
num
POINT 객체의 좌표계 정보(SRID)를 입력
SRID를 입력하지 않을 경우 0(시 스템 기본 좌표계)이 설정됨
예제
SQL> SELECT ST_ASTEXT(ST_POINTFROMWKB(ST_ASBINARY(GEOM))) FROM GIS
WHERE ST_GEOMETRYTYPE(GEOM) LIKE 'POINT';
ST_ASTEXT(ST_POINTFROMWKB(ST_ASBINARY(GEOM)))
---------------------------------------------------------------------------------
POINT(1 1)
ST_POINTN
ST_POINTN은 LINESTRING 객체의 N번째 점을 POINT 객체로 반환하는 함수입니다. LINESTRING이 아닌 타입의 GEOMETRY 객체를 넣을 경우 NULL을 반환합니다. -1을 LINESTRING 객체의 마지막 POINT로 하여 반대 방향으로 셈하여 해당 음수 인자에 맞는 POINT 객체를 반환합니다.
문법
[그림 79] ST_POINTN 문법

구성요소
geom
LINESTRING 객체를 나타내는 GEOMETRY 타입이어야 함
num
N번째 점을 지정
예제
SQL> SELECT ST_ASTEXT(GEOM),ST_ASTEXT(ST_POINTN(GEOM,1)) FROM GIS
WHERE ST_GEOMETRYTYPE(GEOM) LIKE 'LINESTRING';
ST_ASTEXT(GEOM)
---------------------------------------------------------------------------------
ST_ASTEXT(ST_POINTN(GEOM,1))
---------------------------------------------------------------------------------
LINESTRING(1 1,2 2)
POINT(1 1)
ST_POINTONSURFACE
ST_POINTONSURFACE는 해당 공간 객체 위에 놓이는 것이 보장되는 임의의 POINT 객체를 반환합니다.
문법
[그림 80] ST_POINTONSURFACE 문법

구성요소
geom
GEOMETRY 객체를 나타내는 GEOMETRY 타입이어야 함
예제
SQL> SELECT ST_ASTEXT(ST_POINTONSURFACE(GEOM)),ST_ASTEXT(GEOM)
FROM GISWHERE ST_GEOMETRYTYPE(GEOM) LIKE 'POLYGON';
ST_ASTEXT(ST_POINTONSURFACE(GEOM))
---------------------------------------------------------------------------------
ST_ASTEXT(GEOM)
---------------------------------------------------------------------------------
POINT(1.5 1.5)
POLYGON((1 1,2 1,2 2,1 2,1 1))
POINT(6 8)
POLYGON((0 0,0 12,12 12,12 0,0 0),(6 10,6 11,9 11,9 10,6 10),(6 3,6 6,9 6,9 3,6 3))
ST_POLYFROMTEXT
ST_POLYFROMTEXT는 주어진 WKT와 SRID를 바탕으로 POLYGON 객체로 반환하는 함수입니다.
문법
[그림 81] ST_POLYFROMTEXT 문법

구성요소
str
GEOMETRY POLYGON 객체를 표현하기 위한 WKT 형식으로 된 CHAR, VAR CHAR, NCHAR, NVARCHAR 타입 중 하나
num
POLYGON 객체의 좌표계 정보(SRID)를 입력
SRID를 입력하지 않을 경우 0(시스템 기본 좌표계)이 설정됨
예제
SQL> SELECT ST_ASTEXT(ST_POLYFROMTEXT('POLYGON((1 1,2 1,2 2,1 2,1 1))'))
FROM DUAL;
ST_ASTEXT(ST_POLYFROMTEXT('POLYGON((11,21,22,12,11))')) \
---------------------------------------------------------------------------------
POLYGON((1 1,2 1,2 2,1 2,1 1))
ST_POLYFROMWKB
ST_POLYFROMWKB는 주어진 WKB와 SRID를 바탕으로 POLYGON 객체로 반환하는 함수입니다.
문법
[그림 82] ST_POLYFROMWKB 문법

구성요소
str
POLYGON 객체를 표현하기 위한 WKB 형식으로 된 CHAR, VARCHAR, NCHAR, NVARCHAR 타입 중 하나
num
POLYGON 객체의 좌표계 정보(SRID)를 입력
SRID를 입력하지 않을 경우 0(시스템 기본 좌표계)이 설정됨
예제
SQL> SELECT ST_ASTEXT(ST_POLYFROMWKB(ST_ASBINARY(GEOM))) FROM GIS
WHERE ST_GEOMETRYTYPE(GEOM) LIKE 'POLYGON';
ST_ASTEXT(ST_POLYFROMWKB(ST_ASBINARY(GEOM)))
---------------------------------------------------------------------------------
POLYGON((1 1,2 1,2 2,1 2,1 1))
POLYGON((0 0,0 12,12 12,12 0,0 0),(6 10,6 11,9 11,9 10,6 10),(6 3,6 6,9 6,9 3,6 3))
ST_POLYGON
ST_POLYGON는 주어진 LINESTRING과 SRID로 형성된 POLYGON을 반환합니다. 입력 도형이 닫힌 LINESTRING이어야 합니다.
문법
[그림 83] ST_POLYGON 문법

구성요소
geom
형성할 POLYGON의 외각 껍데기를 나타내는 LINESTRING 객체의 GEOMETRY 타입이어야 함
내부 구멍을 포함하고있는 POLYGON 도형을 형성하려면 ST_MAKEPOLYGON을 사용
num
형성할 POLYGON의 좌표계 정보(SRID)를 입력
예제
SQL> SELECT ST_ASTEXT(ST_POLYGON(ST_GEOMFROMTEXT(
'LINESTRING(0 0,1 0,1 1,0 1,0 0)'), 4326)) FROM DUAL;
ST_ASTEXT(ST_POLYGON(ST_GEOMFROMTEXT('LINESTRING(00,10,11,01,00)'),4326))
---------------------------------------------------------------------------------
POLYGON((0 0,1 0,1 1,0 1,0 0))
ST_POLYGONFROMTEXT
ST_POLYGONFROMTEXT는 주어진 WKT와 SRID를 바탕으로 POLYGON 객체로 반환하는 함수입니다.
문법
[그림 84] ST_POLYGONFROMTEXT 문법

구성요소
str
POLYGON 객체를 표현하기 위한 WKT 형식으로 된 CHAR, VARCHAR, NCHAR, NVARCHAR 타입 중 하나
num
POLYGON 객체의 좌표계 정보(SRID)를 입력
SRID를 입력하지 않을 경우 0(시스템 기본 좌표계)이 설정
예제
SQL> SELECT ST_ASTEXT(ST_POLYGONFROMTEXT('POLYGON((1 1,2 1,2 2,1 2,1 1))'))
FROM DUAL;
ST_ASTEXT(ST_POLYGONFROMTEXT('POLYGON((11,21,22,12,11))'))
---------------------------------------------------------------------------------
POLYGON((1 1,2 1,2 2,1 2,1 1))
ST_POLYGONIZE(#)
ST_POLYGONIZE은 GEOMETRY 집합들의 선분 구성요소로부터 형성될 수 있는 POLYGON들을 반환하는 집합 함수입니다. 집합 함수이므로 GEOMETRY 객체들을 한데 모은 집합에 대한 결과를 반환합니다.
문법
[그림 85] ST_POLYGONIZE 문법

구성요소
geom_expr
GEOMETRY 객체를 나타내는 임의의 연산식
예제
SQL> SELECT ST_ASTEXT(ST_POLYGONIZE(GEOM)) FROM GIS;
ST_ASTEXT(ST_POLYGONIZE(GEOM))
---------------------------------------------------------------------------------
GEOMETRYCOLLECTION(POLYGON((0 0,0 12,12 12,12 0,0 0),(6 10,9 10,9 11,6 11,6 10),
(6 3,9 3,9 6,6 6,6 3),(3 3,5 3,5 5,3 5,3 3)),POLYGON((6 10,6 11,9 11,9 10,6 10))
,POLYGON((6 3,6 6,9 6,9 3,6 3)),POLYGON((3 3,3 5,5 5,5 3,3 3)))
ST_PROJECT(#)
ST_PROJECT은 POINT 객체에서부터 주어진 미터 단위 거리와 호도 단위 방향(방위각)으로 투영된 POINT 객체를 반환합니다. 호도의 방향이 방위각을 기준으로 설정되므로 동쪽은 π/2, 남쪽은 π, 서쪽은 3π/2로 표현됩니다. 회전체 좌표계 상의 GEOMETRY만을 인자로 받으며, 그렇지 않은 경우 예외를 반환합니다. POINT가 아닌 타입의 GEOMETRY 객체를 넣을 경우 예외를 반환합니다.
문법
[그림 86] ST_PROJECT 문법

구성요소
geom
POINT 객체를 나타내는 GEOMETRY 타입이어야 함
num1
미터 단위에 해당하는 거리를 입력
num2
호도 단위에 해당하는 방위각을 입력
예제
SQL> SELECT ST_ASTEXT(ST_PROJECT(
ST_GEOMFROMTEXT('POINT(0 0)',4326),100000, 3.141592)) FROM DUAL;
ST_ASTEXT(ST_PROJECT(ST_GEOMFROMTEXT('POINT(00)',4326),100000,3.141592))
---------------------------------------------------------------------------------
POINT(5.87178138550817e-07 -0.90436872291257)
ST_RELATE
ST_RELATE는 GEOMETRY 객체 1과 GEOMETRY 객체 2가 주어진 관계를 만족시키면 1을 반환하는 함수입니다. GEOMETRY 인자로 GEOMETRYCOLLECTION 타입이 올 경우에는 런타임 오류를 발생시킵니다.
문법
[그림 87] ST_RELATE 문법

구성요소
geom1
GEOMETRY 객체를 나타내는 GEOMETRY 타입이어야 함
geom2
GEOMETRY 객체를 나타내는 GEOMETRY 타입이어야 함
str
두 객체의 관계를 의미하는 문자열를 타나내는 CHAR, VARCHAR, NCHAR, NVARCHAR 타입 중 하나
예제
SQL> SELECT ST_RELATE(A.GEOM,B.GEOM,'TTTTTTTTT'),
ST_ASTEXT(A.GEOM),ST_ASTEXT(B.GEOM) FROM GIS A,GIS B
WHERE ST_GEOMETRYTYPE(A.GEOM) LIKE 'LINESTRING'
AND ST_GEOMETRYTYPE(B.GEOM) LIKE 'LINESTRING';
ST_RELATE(A.GEOM,B.GEOM,'TTTTTTTTT')
-------------------------------------
ST_ASTEXT(A.GEOM)
---------------------------------------------------------------------------------
ST_ASTEXT(B.GEOM)
---------------------------------------------------------------------------------
0
LINESTRING(1 1,2 2)
LINESTRING(1 1,2 2)
ST_REVERSE
ST_REVERSE는 주어진 GEOMETRY 객체의 꼭지점의 순서가 반대인 GEOMETRY를 반환하는 함수입니 다.
문법
[그림 88] ST_REVERSE 문법

구성요소
geom
GEOMETRY 객체를 나타내는 GEOMETRY 타입이어야 함
예제
SQL> SELECT ST_ASTEXT(ST_REVERSE(GEOM)) FROM GIS;
ST_ASTEXT(ST_REVERSE(GEOM))
---------------------------------------------------------------------------------
POINT(1 1)
MULTIPOINT((1 1),(2 2))
LINESTRING(2 2,1 1)
MULTILINESTRING((2 2,1 1),(4 5,3 3))
POLYGON((1 1,1 2,2 2,2 1,1 1))
POLYGON((0 0,12 0,12 12,0 12,0 0),(6 10,9 10,9 11,6 11,6 10),(6 3,9 3,9 6,6 6,6 3))
MULTIPOLYGON(((1 1,1 2,2 2,2 1,1 1)),((3 3,5 3,5 5,3 5,3 3)))
GEOMETRYCOLLECTION(POINT(1 1),LINESTRING(3 3,2 2))
GEOMETRYCOLLECTION EMPTY
GEOMETRYCOLLECTION(POINT(1 1),LINESTRING(3 3,2 2))
ST_SETSRID
ST_SETSRID는 주어진 GEOMETRY 객체의 SRID를 설정하여 반환합니다.
문법
[그림 89] ST_SETSRID 문법

구성요소
geom
GEOMETRY 객체를 나타내는 GEOMETRY 타입이어야 함
num
설정할 좌표계 정보(SRID)를 입력
예제
SQL> SELECT ST_SRID(ST_SETSRID(ST_GEOMFROMTEXT('POINT(0 0)'), 4326))
FROM DUAL;
ST_SRID(ST_SETSRID(ST_GEOMFROMTEXT('POINT(00)'),4326))
------------------------------------------------------
4326
ST_SPLIT(#)
ST_SPLIT는 GEOMETRY를 기준이 되는 GEOMETRY로 나누어서 나오는 GEOMETRYCOLLECTION을 반환합니다. LINESTRING은 (MULTI)POINT, (MULTI)LINESTRING, (MULTI)POLYGON에 의해 나누어질 수 있고, POLYGON은 (MULTI)LINESTRING에 의해 나누어질 수 있습니다.
문법
[그림 90] ST_SPLIT 문법

구성요소
geom1
GEOMETRY 객체를 나타내는 GEOMETRY 타입이어야 함
나누어질 GEOM ETRY를 입력
geom2
GEOMETRY 객체를 나타내는 GEOMETRY 타입이어야 함
나눌 기준이 되는 GEOMETRY를 입력
예제
SQL> SELECT ST_ASTEXT(ST_SPLIT(ST_GEOMFROMTEXT(
'LINESTRING(0 0,2 2)'),ST_GEOMFROMTEXT('POINT(1 1)'))) SPLIT FROM DUAL;
SPLIT
---------------------------------------------------------------------------------
GEOMETRYCOLLECTION(LINESTRING(0 0,1 1),LINESTRING(1 1,2 2))
ST_SRID
ST_SRID는 주어진 GEOMETRY 객체의 SRID를 반환하는 함수입니다.
문법
[그림 91] ST_SRID 문법

구성요소
geom
GEOMETRY 객체를 나타내는 GEOMETRY 타입이어야 함
예제
SQL> SELECT ID,ST_SRID(GEOM) FROM GIS;
ID ST_SRID(GEOM)
------------ --------------
101 0
102 0
103 0
104 0
105 0
106 0
107 0
108 0
109 0
110 0
ST_STARTPOINT
ST_STARTPOINT는 LINESTRING 첫 POINT를 반환하는 함수입니다. LINESTRING이 아닌 타입의 GEOM ETRY 객체를 넣을 경우 NULL을 반환합니다.
문법
[그림 92] ST_STARTPOINT 문법

구성요소
geom
LINESTRING 객체를 나타내는 GEOMETRY 타입이어야 함
예제
SQL> SELECT ST_astext(geom),ST_ASTEXT(ST_STARTPOINT(GEOM))
FROM GIS WHERE ST_GEOMETRYTYPE(GEOM) LIKE 'LINESTRING';
ST_ASTEXT(GEOM)
---------------------------------------------------------------------------------
ST_ASTEXT(ST_STARTPOINT(GEOM))
---------------------------------------------------------------------------------
LINESTRING(1 1,2 2)
POINT(1 1)
ST_SYMDIFFERENCE($)
ST_SYMDIFFERENCE는 주어진 두 GEOMETRY 객체의 INTERSECTION을 제외한 영역을 나타내는 GEOMETRY 객체를 반환하는 함수입니다. 좌표계 정보를 통해 회전체 좌표계 상의 GEOMETRY 객체에 대한 연산이 가능합니다.
문법
[그림 93] ST_SYMDIFFERENCE 문법

구성요소
geom1
GEOMETRY 객체를 나타내는 GEOMETRY 타입이어야 함
geom2
GEOMETRY 객체를 나타내는 GEOMETRY 타입이어야 함
예제
SQL> SELECT ST_ASTEXT(A.GEOM),ST_ASTEXT(B.GEOM),
ST_ASTEXT(ST_SYMDIFFERENCE(A.GEOM,B.GEOM)) FROM GIS A,GIS B
WHERE ST_GEOMETRYTYPE(A.GEOM) LIKE 'POLYGON'
AND ST_GEOMETRYTYPE(B.GEOM) LIKE 'POLYGON';
ST_ASTEXT(A.GEOM)
---------------------------------------------------------------------------------
ST_ASTEXT(B.GEOM)
---------------------------------------------------------------------------------
ST_ASTEXT(ST_SYMDIFFERENCE(A.GEOM,B.GEOM))
---------------------------------------------------------------------------------
POLYGON((1 1,2 1,2 2,1 2,1 1))
POLYGON((1 1,2 1,2 2,1 2,1 1))
GEOMETRYCOLLECTION EMPTY
POLYGON((0 0,0 12,12 12,12 0,0 0),(6 10,6 11,9 11,9 10,6 10),(6 3,6 6,9 6,9 3,6 3))
POLYGON((1 1,2 1,2 2,1 2,1 1))
POLYGON((0 0,0 12,12 12,12 0,0 0),(6 10,6 11,9 11,9 10,6 10),(6 3,6 6,9 6,9 3,6 3)),(1 1,2 1,2 2,1 2,1 1)
POLYGON((1 1,2 1,2 2,1 2,1 1))
POLYGON((0 0,0 12,12 12,12 0,0 0),(6 10,6 11,9 11,9 10,6 10),(6 3,6 6,9 6,9 3,6 3))
POLYGON((0 0,0 12,12 12,12 0,0 0),(1 1,2 1,2 2,1 2,1 1),(6 10,9 10,9 11,6 11,6 1 0),(6 3,6 6,9 6,9 3,6 3)
POLYGON((0 0,0 12,12 12,12 0,0 0),(6 10,6 11,9 11,9 10,6 10),(6 3,6 6,9 6,9 3,6 3))
POLYGON((0 0,0 12,12 12,12 0,0 0),(6 10,6 11,9 11,9 10,6 10),(6 3,6 6,9 6,9 3,6 3))
GEOMETRYCOLLECTION EMPTY
ST_TOUCHES
ST_TOUCHES는 주어진 두 GEOMETRY 객체가 한 점 이상을 공유하지만 교차영역이 존재하지는 않을 때 1을 반환하는 함수입니다. GEOMETRY 인자로 GEOMETRYCOLLECTION 타입이 올 경우에는 런타임 오류를 발생시킵니다.
문법
[그림 94] ST_TOUCHES 문법

구성요소
geom1
GEOMETRY 객체를 나타내는 GEOMETRY 타입이어야 함
geom2
GEOMETRY 객체를 나타내는 GEOMETRY 타입이어야 함
예제
SQL> SELECT ST_TOUCHES(A.GEOM,B.GEOM), ST_ASTEXT(A.GEOM),ST_ASTEXT(B.GEOM)
FROM GIS A,GIS B WHERE ST_GEOMETRYTYPE(A.GEOM) LIKE 'LINESTRING'
AND ST_GEOMETRYTYPE(B.GEOM) LIKE 'POLYGON';
ST_TOUCHES(A.GEOM,B.GEOM)
---------------------------
ST_ASTEXT(A.GEOM)
---------------------------------------------------------------------------------
ST_ASTEXT(B.GEOM)
---------------------------------------------------------------------------------
0
LINESTRING(1 1,2 2)
POLYGON((1 1,2 1,2 2,1 2,1 1))
0
LINESTRING(1 1,2 2)
POLYGON((0 0,0 12,12 12,12 0,0 0),(6 10,6 11,9 11,9 10,6 10),(6 3,6 6,9 6,9 3,6 3))
ST_TRANSFORM(#)
ST_TRANSFORM는 입력 GEOMETRY의 좌표를 다른 공간 참조 시스템(Spatial reference)으로 변환시킨 GEOMETRY를 반환합니다. 인자로 SRID를 넣거나 PROJ4TEXT를 받습니다. ST_TRANSFORM은 좌표를 변환하는 작업을 수행하지만 ST_SETSRID는 좌표를 변환하지 않고 SRID만 설정합니다.
문법
[그림 95] ST_TRANSFORM 문법

구성요소
- case1
geom
GEOMETRY 객체를 나타내는 GEOMETRY 타입이어야 함
num
변환될 좌표계 정보(SRID)를 입력합
- case2
geom
GEOMETRY 객체를 나타내는 GEOMETRY 타입이어야 함
str
변환될 좌표계 정보의 PROJ4TEXT를 입력
- case3
geom
GEOMETRY 객체를 나타내는 GEOMETRY 타입이어야 함
str
변환되기전 좌표계 정보의 PROJ4TEXT를 입력
str
변환할 좌표계 정보의 PROJ4TEXT를 입력
- case4
geom
GEOMETRY 객체를 나타내는 GEOMETRY 타입이어야 함
str
변환되기전 좌표계 정보의 PROJ4TEXT를 입력
num
변환할 좌표계 정보(SRID)를 입력
예제
SQL> SELECT ST_ASTEXT(ST_TRANSFORM(ST_GEOMFROMTEXT(
'LINESTRING(0 0,1 1)',4326),2249)) FROM DUAL;
ST_ASTEXT(ST_TRANSFORM(ST_GEOMFROMTEXT('LINESTRING(00,11)',4326),2249))
---------------------------------------------------------------------------------
LINESTRING(30250865.9714116 -610981.481754334,30214669.4455592 41989.5268075016)
SQL> SELECT ST_ASTEXT(ST_TRANSFORM(ST_GEOMFROMTEXT('LINESTRING(0 0,1 1)'),
'+proj=longlat +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +no_defs',2249))
TRANSFORM FROM DUAL;
TRANSFORM
---------------------------------------------------------------------------------
LINESTRING(30250930.6174208 -610897.702286165,30214732.3446824 42073.100013002)
ST_TRANSLATE(#)
ST_TRANSLATE는 주어진 오프셋만큼 이동한 GEOMETRY를 반환합니다.
문법
[그림 96] ST_TRANSLATE 문법

구성요소
geom
GEOMETRY 객체를 나타내는 GEOMETRY 타입이어야 함
num1
X 방향으로 이동시킬 오프셋
num2
Y 방향으로 이동시킬 오프셋
num3
Z 방향으로 이동시킬 오프셋
예제
SQL> SELECT ST_ASTEXT(ST_TRANSLATE(
ST_GEOMFROMTEXT('LINESTRING(0 0,1 0)'),1,2)) FROM DUAL;
ST_ASTEXT(ST_TRANSLATE(ST_GEOMFROMTEXT('LINESTRING(00,10)'),1,2))
---------------------------------------------------------------------------------
LINESTRING(1 2,2 2)
ST_UNION($)
ST_UNION은 주어진 두 GEOMETRY 객체의 영역을 합한 GEOMETRY 객체를 반환하는 함수입니다. 좌표계 정보를 통해 회전체 좌표계 상의 GEOMETRY 객체에 대한 연산이 가능합니다.
문법
[그림 97] ST_UNION 문법

구성요소
geom1
GEOMETRY 객체를 나타내는 GEOMETRY 타입이어야 함
geom2
GEOMETRY 객체를 나타내는 GEOMETRY 타입이어야 함
예제
SQL> SELECT ST_ASTEXT(A.GEOM),ST_ASTEXT(B.GEOM),
ST_ASTEXT(ST_UNION(A.GEOM,B.GEOM)) FROM GIS A,GIS B
WHERE ST_GEOMETRYTYPE(A.GEOM) LIKE 'POLYGON'
AND ST_GEOMETRYTYPE(B.GEOM) LIKE 'POLYGON';
ST_ASTEXT(A.GEOM)
---------------------------------------------------------------------------------
ST_ASTEXT(B.GEOM)
---------------------------------------------------------------------------------
ST_ASTEXT(ST_SYMDIFFERENCE(A.GEOM,B.GEOM))
---------------------------------------------------------------------------------
POLYGON((1 1,2 1,2 2,1 2,1 1))
POLYGON((1 1,2 1,2 2,1 2,1 1))
GEOMETRYCOLLECTION EMPTY
POLYGON((0 0,0 12,12 12,12 0,0 0),(6 10,6 11,9 11,9 10,6 10),(6 3,6 6,9 6,9 3,6 3))
POLYGON((1 1,2 1,2 2,1 2,1 1))
POLYGON((0 0,0 12,12 12,12 0,0 0),(6 10,9 10,9 11,6 11,6 10),(6 3,9 3,9 6,6 6,6 3),(1 1,2 1,2 2,1 2,1 1))
POLYGON((1 1,2 1,2 2,1 2,1 1))
POLYGON((0 0,0 12,12 12,12 0,0 0),(6 10,6 11,9 11,9 10,6 10),(6 3,6 6,9 6,9 3,6 3))
POLYGON((0 0,0 12,12 12,12 0,0 0),(1 1,2 1,2 2,1 2,1 1),(6 10,9 10,9 11,6 11,6 1 0),(6 3,9 3,9 6,6 6,6 3))
POLYGON((0 0,0 12,12 12,12 0,0 0),(6 10,6 11,9 11,9 10,6 10),(6 3,6 6,9 6,9 3,6 3))
POLYGON((0 0,0 12,12 12,12 0,0 0),(6 10,6 11,9 11,9 10,6 10),(6 3,6 6,9 6,9 3,6 3))
GEOMETRYCOLLECTION EMPTY
ST_WITHIN
ST_WITHIN은 GEOMETRY 객체 1이 GEOMETRY 객체 2 내부에 포함되면 1을 반환하는 함수입니다.
문법
[그림 98] ST_WITHIN문법

구성요소
geom1
GEOMETRY 객체를 나타내는 GEOMETRY 타입이어야 함
geom2
GEOMETRY 객체를 나타내는 GEOMETRY 타입이어야 함
예제
SQL> SELECT ST_WITHIN(A.GEOM,B.GEOM), ST_ASTEXT(A.GEOM),ST_ASTEXT(B.GEOM)
FROM GIS A,GIS B WHERE ST_GEOMETRYTYPE(A.GEOM) LIKE 'POLYGON'
AND ST_GEOMETRYTYPE(B.GEOM) LIKE 'POLYGON';
ST_WITHIN(A.GEOM,B.GEOM)
------------------------
ST_ASTEXT(A.GEOM)
---------------------------------------------------------------------------------
ST_ASTEXT(B.GEOM)
---------------------------------------------------------------------------------
1
POLYGON((1 1,2 1,2 2,1 2,1 1))
POLYGON((1 1,2 1,2 2,1 2,1 1))
0
POLYGON((0 0,0 12,12 12,12 0,0 0),(6 10,6 11,9 11,9 10,6 10),(6 3,6 6,9 6,9 3,6 3))
POLYGON((1 1,2 1,2 2,1 2,1 1))
1
POLYGON((1 1,2 1,2 2,1 2,1 1))
POLYGON((0 0,0 12,12 12,12 0,0 0),(6 10,6 11,9 11,9 10,6 10),(6 3,6 6,9 6,9 3,6 3))
1
POLYGON((0 0,0 12,12 12,12 0,0 0),(6 10,6 11,9 11,9 10,6 10),(6 3,6 6,9 6,9 3,6 3))
POLYGON((0 0,0 12,12 12,12 0,0 0),(6 10,6 11,9 11,9 10,6 10),(6 3,6 6,9 6,9 3,6 3))
ST_X
ST_X는 POINT 객체의 X 좌표를 반환하는 함수입니다. POINT가 아닌 타입의 GEOMETRY 객체를 넣을 경 우 NULL을 반환합니다.
문법
[그림 99] ST_X문법

구성요소
point
POINT 객체를 나타내는 GEOMETRY 타입이어야 함
예제
SQL> SELECT ST_ASTEXT(GEOM),ST_X(GEOM) FROM GIS WHERE ST_GEOMETRYTYPE(GEOM)
LIKE 'POINT';
ST_ASTEXT(GEOM)
---------------------------------------------------------------------------------
ST_X(GEOM)
------------
POINT(1 1)
1
ST_Y
ST_Y는 POINT 객체의 Y 좌표를 반환하는 함수입니다. POINT가 아닌 타입의 GEOMETRY 객체를 넣을 경우 NULL을 반환합니다.
문법
[그림 100] ST_Y문법

구성요소
point
POINT 객체를 나타내는 GEOMETRY 타입이어야 함
예제
SQL> SELECT ST_ASTEXT(GEOM),ST_Y(GEOM) FROM GIS WHERE ST_GEOMETRYTYPE(GEOM)
LIKE 'POINT';
ST_ASTEXT(GEOM)
---------------------------------------------------------------------------------
ST_Y(GEOM)
-----------
POINT(1 1)
1
DBMS_GEOM 패키지
Tibero Spatial에서는 DBMS_GEOM 패키지를 통해 추가적인 함수를 지원합니다. Linear Referencing System(LRS)관련 함수들도 해당 패키지에서 지원합니다.
CLIP_GEOM_SEGMENT
CLIP_GEOM_SEGMENT는 주어진 LRS GEOMETRY 객체를 입력받은 시작 MEASURE 값과 끝 MEASURE 값으로 자른 LRS GEOMETRY 객체를 반환하는 함수입니다.
문법
[그림 101] CLIP_GEOM_SEGMENT문법

구성요소
geom
시작과 끝 MEASURE를 계산할 기준이 되는 GEOMETRY 객체
num1
반환될 GEOMETRY 객체의 시작 MEASURE 값
num2
반환된 GEOMETRY 객체의 끝 MEASURE 값
예제 아래는 DBMS_GEOM.CLIP_GEOM_SEGMENT 함수를 사용하는 예입니다.
SQL> SELECT ST_ASTEXT(DBMS_GEOM.CLIP_GEOM_SEGMENT(ST_GEOMFROMTEXT(
'LINESTRINGM(0 0 0,3 0 30,3 5 130)'), 10, 80)) FROM DUAL;
ST_ASTEXT(DBMS_GEOM.CLIP_GEOM_SEGMENT(ST_GEOMFROMTEXT('LINESTRINGM(000,3030,3513
---------------------------------------------------------------------------------
LINESTRINGM(1 0 10,3 0 30,3 2.5 80)
CLOSEST_POINT
CLOSEST_POINT는 두 GEOMETRY 객체에서 서로 가장 가까운 두 POINT 타입의 GEOMETRY 객체와 그 거리를 반환하는 프로시저입니다.
문법
[그림 102] CLOSEST_POINT문법

구성요소
geom1
geom2와 가장 가까운 위치를 구할 GEOMETRY 객체
geom2
geom1과 가장 가까운 위치를 구할 GEOMETRY 객체
num1
precision의 정도를 결정할 tolerance
num2
두 GEOMETRY 객체간의 거리를 입력받을 NUMBER 변수
geom3
geom1에서 geom2와 가장 가까운 위치를 받을 POINT 타입의 GEOMETRY 객체
geom4
geom2에서 geom1과 가장 가까운 위치를 받을 POINT 타입의 GEOMETRY 객체
예제 아래는 DBMS_GEOM.CLOSEST_POINTS 프로시저를 사용하는 예입니다.
SQL> set serveroutput on;
SQL> DECLARE
2 dist NUMBER;
3 geoma geometry;
4 geomb geometry;
5 BEGIN
6 dbms_geom.closest_points(
7 st_geomfromtext('linestring(0 0,3 0)'),
8 st_geomfromtext('linestring(1 1,1 3)'),
9 0.05,
10 dist,
11 geoma,
12 geomb
13 );
14 dbms_output.put_line('dist = ' || dist);
15 dbms_output.put_line(st_astext(geoma));
16 dbms_output.put_line(st_astext(geomb));
17 END;
18 /
dist = 1
POINT(1 0)
POINT(1 1)
CONVERT_TO_GEOM_SEGMENT
CONVERT_TO_GEOM_SEGMENT은 MEASURE가 없는 기존의 GEOMETRY에 MEASURE를 계산한 LRS GEOMETRY를 반환하는 함수입니다.
문법
[그림 103] CONVERT_TO_GEOM_SEGMENT 문법

구성요소
geom
LRS GEOMETRY를 계산하고자하는 GEOMETRY 객체
num1
반환할 LRS GEOMETRY의 시작 MEASURE 값을 입력
기본으로 0이 설정되어있음
num2
반환할 LRS GEOMETRY의 끝 MEASURE 값을 입력
기본으로 GEOMETRY의 길이값이 설정되어있음
예제
SQL> SELECT ST_ASTEXT(DBMS_GEOM.CONVERT_TO_GEOM_SEGMENT(ST_GEOMFROMTEXT(
'LINESTRING(0 0,3 0,3 5)'))) FROM DUAL;
ST_ASTEXT(DBMS_GEOM.CONVERT_TO_GEOM_SEGMENT(ST_GEOMFROMTEXT('LINESTRING(00,30,35
---------------------------------------------------------------------------------
LINESTRINGM(0 0 0,3 0 3,3 5 8)
1 row selected.
CONVERT_UNIT
CONVERT_UNIT은 UNITS_OF_MEASURE 테이블에 명시되어있는 단위계 정보를 이용해 단위를 변환하는 함수입니다.
문법
[그림 104] CONVERT_UNIT 문법

구성요소
num
변환하고자하는 단위계의 값
str1
변환하기 전의 단위계의 이름
str2
변환할 단위계의 이름
참조
UNITS_OF_MEASURE
예제
SQL> SELECT DBMS_GEOM.CONVERT_UNIT(20,'M','KM') FROM DUAL;
DBMS_GEOM.CONVERT_UNIT(20,'M','KM')
------------------------------------
.02
1 row selected.
FIND_MEASURE
FIND_MEASURE는 LRS타입의 GEOMETRY 객체에서 특정 위치의 MEASURE 값을 반환하는 함수입니다. MEASURE 값을 반환할 위치는 본 함수의 두번째 인자인 POINT 타입의 GEOMETRY 객체를 통해 나타냅니다. 이 GEOMETRY 객체에서 가장 가까운 GEOM1의 위치에 해당하는 MEASURE 값을 반환합니다.
문법
[그림 105] FIND_MEASURE 문법

구성요소
geom1
MEASURE 값을 구할 GEOMETRY 객체
geom2
MEASURE를 구할 위치를 투영시킬 POINT 타입의 GEOMETRY 객체
예제
SQL> SELECT DBMS_GEOM.FIND_MEASURE(ST_GEOMFROMTEXT(
'LINESTRINGM(0 0 0,3 0 30,3 5 80)'),ST_GEOMFROMTEXT('POINTM(2 4 1)'))
FROM DUAL;
DBMS_GEOM.FIND_MEASURE(ST_GEOMFROMTEXT('LINESTRINGM(000,3030,3580)'),ST_GEOMFROM
---------------------------------------------------------------------------------
70
1 row selected.
FIND_OFFSET
FIND_OFFSET는 LRS타입의 GEOMETRY 객체와 POINT 타입의 LRS GEOMETRY 객체 사이의 OFFSET을 반환하는 함수입니다.
문법
[그림 106] FIND_OFFSET 문법

구성요소
geom1
OFFSET을 구할 기준이 되는 GEOMETRY 객체
geom2
기준 GEOMETRY로부터 OFFSET을 계산할 위치에 놓인 POINT 타입의 GEOMETRY 객체
예제
SQL> SELECT DBMS_GEOM.FIND_OFFSET(ST_GEOMFROMTEXT(
'LINESTRINGM(0 0 0,3 0 30,8 0 130)'), ST_GEOMFROMTEXT('POINTM(5 3 100)'))
FROM DUAL;
DBMS_GEOM.FIND_OFFSET(ST_GEOMFROMTEXT('LINESTRINGM(000,3030,80130)'),ST_GEOMFROM
---------------------------------------------------------------------------------
3
1 row selected.
FROM_WGS84
FROM_WGS84는 wgs84형식의 위도, 경도 기준으로 표현된 GEOMETRY 타입의 객체를 주어진 점을 기준으로 한 가로, 세로 축으로 표현된 GEOMETRY 객체로 변환하는 함수입니다. 이 때, GEOMETRY 객체의 좌표를 해석할 때는 경도, 위도 순서이지만, FROM_WGS84에서 변환할 기준점은 위도, 경도 순서로 인자를 받게 됩니다.
문법
[그림 107] FROM_WGS84 문법

구성요소
geom
GEOMETRY 객체를 나타내는 GEOMETRY 타입이어야 함
latitude
변환할 때 기준이 될 NUMBER 타입의 위도값
longitude
변환할 때 기준이 될 NUMBER 타입의 경도값
예제
SQL> SELECT ST_ASTEXT(DBMS_GEOM.FROM_WGS84(ST_GEOMFROMTEXT
('POINT(0 1)'), 0, 0)) FROM DUAL;
ST_ASTEXT(DBMS_GEOM.FROM_WGS84(ST_GEOMFROMTEXT('POINT(01)'),0,0))
---------------------------------------------------------------------------------
POINT(0 110.94633302763)
1 row selected.
SQL> SELECT ST_ASTEXT(DBMS_GEOM.FROM_WGS84(ST_GEOMFROMTEXT
('POINT(0 1)'), 15, 30)) FROM DUAL;
ST_ASTEXT(DBMS_GEOM.FROM_WGS84(ST_GEOMFROMTEXT('POINT(01)'),15,30))
---------------------------------------------------------------------------------
POINT(-3331.5555052183 -1553.7714201354)
1 row selected.
SQL> SELECT ST_ASTEXT(DBMS_GEOM.FROM_WGS84(ST_GEOMFROMTEXT
('POINT(30 40)'), 40, 30)) FROM DUAL;
ST_ASTEXT(DBMS_GEOM.FROM_WGS84(ST_GEOMFROMTEXT('POINT(3040)'),40,30))
---------------------------------------------------------------------------------
POINT(-0 0)
1 row selected.
GEOM_SEGMENT_END_PT
GEOM_SEGMENT_END_PT는 GEOMETRY 객체에서 마지막 좌표에 해당하는 POINT 타입의 GEOMETRY 를 반환하는 함수입니다.
문법
[그림 108] GEOM_SEGMENT_END_PT 문법

구성요소
geom
마지막 좌표를 반환할 GEOMETRY 객체
예제
SQL> SELECT ST_ASTEXT(DBMS_GEOM.GEOM_SEGMENT_END_PT(
ST_GEOMFROMTEXT('LINESTRINGM(0 0 0,1 2 3)'))) FROM DUAL;
ST_ASTEXT(DBMS_GEOM.GEOM_SEGMENT_END_PT(ST_GEOMFROMTEXT('LINESTRINGM(000,123)'))
---------------------------------------------------------------------------------
POINTM(1 2 3)
1 row selected.
GEOM_SEGMENT_START_PT
GEOM_SEGMENT_START_PT는 GEOMETRY 객체에서 첫번째 좌표에 해당하는 POINT 타입의 GEOM ETRY를 반환하는 함수입니다.
문법
[그림 109] GEOM_SEGMENT_START_PT 문법

구성요소
geom
첫번째 좌표를 반환할 GEOMETRY 객체
예제
SQL> SELECT ST_ASTEXT(DBMS_GEOM.GEOM_SEGMENT_START_PT(
ST_GEOMFROMTEXT('LINESTRINGM(0 0 0,1 2 3)'))) FROM DUAL;
ST_ASTEXT(DBMS_GEOM.GEOM_SEGMENT_START_PT(ST_GEOMFROMTEXT('LINESTRINGM(000,123)'
---------------------------------------------------------------------------------
POINTM(0 0 0)
1 row selected.
GET_ROOT_MBR
GET_ROOT_MBR는 GET_ROOT_MBR 함수는 공간 인덱스의 루트 노드에 해당하는 최소 경계 사각형을 POLYGON으로 반환하는 함수입니다.
문법
[그림 110] GEOM_SEGMENT_START_PT 문법

구성요소
str1
스키마 객체의 이름
str2
테이블 객체의 이름
str3
공간 인덱스 객체의 이름
예제
SQL> SELECT ST_ASTEXT(DBMS_GEOM.GET_ROOT_MBR('TIBERO','GIS','RT_IDX_GIS'))
FROM DUAL;
ST_ASTEXT(DBMS_GEOM.GET_ROOT_MBR('TIBERO','GIS','RT_IDX_GIS'))
---------------------------------------------------------------------------------
POLYGON((0 0,0 12,12 12,12 0,0 0))
1 row selected.
LOCATE_PT
LOCATE_PT는 주어진 LRS GEOMETRY 객체의 특정 MEASURE 값을 가지는 POINT 타입의 LRS GE OMETRY 객체를 반환하는 함수입니다.
문법
[그림 111] LOCATE_PT 문법

구성요소
geom
MEASURE의 위치를 찾는 기준이 되는GEOMETRY 객체
num1
위치를 찾고자 하는 MEASURE 값
num2
MEASURE에 해당하는 좌표와 기준 GEOMETRY와의 OFFSET 값
기본으로 0이 설정되어 있음 (기본으로 MEASURE에 해당하는 POINT가 기준 GEOM ETRY 위에 있음)
예제
SQL> SELECT ST_ASTEXT(DBMS_GEOM.LOCATE_PT(
ST_GEOMFROMTEXT('LINESTRINGM(0 0 0,3 0 30,3 5 130)'), 20)) FROM DUAL;
ST_ASTEXT(DBMS_GEOM.LOCATE_PT(ST_GEOMFROMTEXT('LINESTRINGM(000,3030,35130)'),20)
---------------------------------------------------------------------------------
POINTM(2 0 20)
1 row selected.
SQL> SELECT ST_ASTEXT(DBMS_GEOM.LOCATE_PT(ST_GEOMFROMTEXT(
'LINESTRINGM(0 0 0,3 0 30,3 5 130)'), 50, 10)) FROM DUAL;
ST_ASTEXT(DBMS_GEOM.LOCATE_PT(ST_GEOMFROMTEXT('LINESTRINGM(000,3030,35130)'),50,
---------------------------------------------------------------------------------
POINTM(-7 1 50)
1 row selected.
MEASURE_RANGE
MEASURE_RANGE는 LRS GEOMETRY 객체의 끝 MEASURE와 시작 MEASURE간의 차이를 반환하는 함수입니다.
문법
[그림 112] MEASURE_RANGE 문법

구성요소
geom
MEASURE의 범위를 계산할 GEOMETRY 객체
예제
SQL> SELECT DBMS_GEOM.MEASURE_RANGE(ST_GEOMFROMTEXT(
'LINESTRINGM(0 0 0,3 0 30,3 5 130)')) FROM DUAL;
DBMS_GEOM.MEASURE_RANGE(ST_GEOMFROMTEXT('LINESTRINGM(000,3030,35130)'))
------------------------------------------------------------------------
130
1 row selected.
ST_DUMPPOINTS
ST_DUMPPOINTS는 GEOMETRY 및 정수 배열(path)로 이루어진 집합을 반환하는 집합 반환함수 입니다.
인자로 넣어준 GEOMETRY의 모든 POINT와 그에 해당하는 알맞은 정수 배열을 맞게 설정합니다. 예를 들어 LINESTRING을 입력으로 준 경우 path는 {i}로 설정되며, i는 LINESTRING의 i번째 POINT임을 의미합니다. POLYGON을 입력으로 주면 path 는 {i,j}로 설정되며 i는 i번째 고리, j는 i번째 고리의 j번째 POINT를 나타냅니다. MULTI 타입을 인자로 주면 각 path의 앞에 n번째 GEOMETRY임을 나타내는 정수가 추가되는 방식으로 동작합니다.
문법
[그림 113] ST_DUMPPOINTS 문법

구성요소
geom
GEOMETRY 객체를 나타내는 GEOMETRY 타입이어야 함
예제
SQL>SELECT PATH, ST_ASTEXT(GEOM) FROM TABLE(
DBMS_GEOM.ST_DUMPPOINTS(ST_GEOMFROMTEXT('LINESTRING(1 1,2 2,3 3)')));
PATH
------------------------------------------------------------------------------------
ST_ASTEXT(GEOM)
------------------------------------------------------------------------------------
{1}
POINT(1 1)
{2}
POINT(2 2)
{3}
POINT(3 3)
3 rows selected.
SQL> SELECT PATH, ST_ASTEXT(GEOM) FROM TABLE(DBMS_GEOM.ST_DUMPPOINTS(
ST_GEOMFROMTEXT('POLYGON((0 0,4 0,4 4,0 4,0 0),(1 1,3 1,3 3,1 3,1 1))')));
PATH
------------------------------------------------------------------------------------
ST_ASTEXT(GEOM)
------------------------------------------------------------------------------------
{1,1}
POINT(0 0)
{1,2}
POINT(4 0)
{1,3}
POINT(4 4)
{1,4}
POINT(0 4)
{1,5}
POINT(0 0)
{2,1}
POINT(1 1)
{2,2}
POINT(3 1)
PATH
------------------------------------------------------------------------------------
ST_ASTEXT(GEOM)
------------------------------------------------------------------------------------
{2,3}
POINT(3 3)
{2,4}
POINT(1 3)
{2,5}
POINT(1 1)
10 rows selected.
SQL> SELECT PATH, ST_ASTEXT(GEOM) FROM TABLE(DBMS_GEOM.ST_DUMPPOINTS(
ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(POINT(0 0),LINESTRING(1 1,2 2),
POLYGON((3 3,4 3,4 4,3 4,3 3)),POLYGON((1 1,1 4,4 4,4 1,1 1),
(2 2,2 3,3 3,3 2,2 2)))')));
PATH
------------------------------------------------------------------------------------
ST_ASTEXT(GEOM)
------------------------------------------------------------------------------------
{1,1}
POINT(0 0)
{2,1}
POINT(1 1)
{2,2}
POINT(2 2)
{3,1,1}
POINT(3 3)
{3,1,2}
POINT(4 3)
{3,1,3}
POINT(4 4)
{3,1,4}
POINT(3 4)
PATH
------------------------------------------------------------------------------------
ST_ASTEXT(GEOM)
------------------------------------------------------------------------------------
{3,1,5}
POINT(3 3)
{4,1,1}
POINT(1 1)
{4,1,2}
POINT(1 4)
{4,1,3}
POINT(4 4)
{4,1,4}
POINT(4 1)
{4,1,5}
POINT(1 1)
{4,2,1}
POINT(2 2)
PATH
------------------------------------------------------------------------------------
ST_ASTEXT(GEOM)
------------------------------------------------------------------------------------
{4,2,2}
POINT(2 3)
{4,2,3}
POINT(3 3)
{4,2,4}
POINT(3 2)
{4,2,5}
POINT(2 2)
18 rows selected.
TO_WGS84
TO_WGS84는 가로, 세로 축으로 표현된 GEOMETRY 타입의 객체를 주어진 점을 기준으로 한 wgs84 형식의 위도, 경도 축으로 표현된 GEOMETRY 객체로 변환하는 함수입니다. 이 때, GEOMETRY 객체의 좌표를 해석할 때는 경도, 위도 순서이지만, FROM_WGS84에서 변환할 기준점은 위도, 경도 순서로 인자를 받게 됩니다.
문법
[그림 114] TO_WGS84 문법

구성요소
geom
GEOMETRY 객체를 나타내는 GEOMETRY 타입이어야함
latitude
변환할 때 기준이 될 NUMBER 타입의 위도값
longitude
변환할 때 기준이 될 NUMBER 타입의 경도값
예제
SQL> SELECT ST_ASTEXT(DBMS_GEOM.TO_WGS84(ST_GEOMFROMTEXT
('POINT(0 110.9463302763)'), 0, 0)) FROM DUAL;
ST_ASTEXT(DBMS_GEOM.TO_WGS84(ST_GEOMFROMTEXT('POINT(0110.9463302763)'),0,0))
------------------------------------------------------------------------------------
POINT(0 0.99999997520128)
/* 실제 값 {POINT(0 1)}과 오차가 있습니다. */
1 row selected.
SQL> SELECT ST_ASTEXT(DBMS_GEOM.TO_WGS84(ST_GEOMFROMTEXT
('POINT(-3331.5555052183 -1553.7714201354)'),15,30)) FROM DUAL;
ST_ASTEXT(DBMS_GEOM.TO_WGS84(ST_GEOMFROMTEXT('POINT(-3331.5555052183-1553.771420
------------------------------------------------------------------------------------
POINT(0 1.00000000000027)
/* 실제 값 {POINT(0 1)}과 오차가 있습니다. */
1 row selected.
SQL> SELECT ST_ASTEXT(DBMS_GEOM.TO_WGS84(ST_GEOMFROMTEXT
('POINT(0 0)'), 40, 30)) FROM DUAL;
ST_ASTEXT(DBMS_GEOM.TO_WGS84(ST_GEOMFROMTEXT('POINT(00)'),40,30))
------------------------------------------------------------------------------------
POINT(30 40)
1 row selected.
Last updated