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 문법

[그림 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 문법

[그림 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 문법

[그림 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 문법

[그림 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 문법

[그림 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 문법

[그림 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 문법

[그림 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 문법

[그림 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 문법

[그림 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 문법

[그림 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 문법

[그림 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 문법

[그림 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 문법

[그림 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 문법

[그림 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 문법

[그림 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 문법

[그림 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 문법

[그림 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 문법

[그림 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 문법

[그림 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 문법

[그림 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 문법

[그림 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 문법

[그림 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 문법

[그림 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 문법

[그림 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 문법

[그림 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 문법

[그림 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 문법

[그림 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 문법

[그림 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 문법

[그림 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 문법

[그림 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 문법

[그림 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 문법

[그림 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 문법

[그림 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 문법

[그림 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 문법

[그림 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 문법

[그림 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 문법

[그림 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 문법

[그림 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 문법

[그림 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 문법

[그림 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 문법

[그림 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 문법

[그림 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 문법

[그림 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 문법

[그림 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 문법

[그림 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 문법

[그림 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 문법

[그림 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 문법

[그림 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 문법

[그림 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 문법

[그림 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 문법

[그림 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 문법

[그림 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 문법

[그림 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 문법

[그림 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 문법

[그림 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 문법

[그림 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 문법

[그림 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 문법

[그림 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 문법

[그림 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문법

[그림 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문법

[그림 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문법

[그림 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 문법

[그림 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 문법

[그림 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 문법

[그림 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 문법

[그림 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 문법

[그림 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 문법

[그림 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 문법

[그림 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 문법

[그림 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 문법

[그림 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 문법

[그림 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 문법

[그림 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 문법

[그림 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 문법

[그림 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 문법

[그림 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 문법

[그림 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 문법

[그림 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 문법

[그림 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 문법

[그림 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 문법

[그림 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 문법

[그림 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 문법

[그림 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 문법

[그림 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 문법

[그림 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 문법

[그림 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 문법

[그림 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 문법

[그림 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 문법

[그림 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 문법

[그림 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 문법

[그림 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 문법

[그림 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 문법

[그림 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 문법

[그림 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 문법

[그림 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 문법

[그림 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 문법

[그림 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문법

[그림 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문법

[그림 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문법

[그림 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문법

[그림 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문법

[그림 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 문법

[그림 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 문법

[그림 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 문법

[그림 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 문법

[그림 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에서 변환할 기준점은 위도, 경도 순서로 인자를 받게 됩니다.

FROM_WGS84 함수와 TO_WGS84 함수는 부동소숫점 연산을 반복하여 사용합니다. 따라서, GEOM ETRY 타입의 객체가 가지고 있는 좌표 정보의 왜곡이 발생할 수 있습니다. 또한, 부동소숫점 연산 방식 에 따라 실행 환경별 출력 결과의 차이가 있습니다.

  • 문법

[그림 107] 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 문법

[그림 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 문법

[그림 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 문법

[그림 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 문법

[그림 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 문법

[그림 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 문법

[그림 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에서 변환할 기준점은 위도, 경도 순서로 인자를 받게 됩니다.

FROM_WGS84 함수와 TO_WGS84 함수는 부동소숫점 연산을 반복하여 사용합니다. 따라서, GEOM ETRY 타입의 객체가 가지고 있는 좌표 정보의 왜곡이 발생 할 수 있습니다. 또한, 부동소숫점 연산 방식 에 따라 실행 환경별 출력 결과의 차이가 있습니다.

  • 문법

[그림 114] TO_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