공간 함수
공간 함수 (Spatial Functions)
spatial 확장이 제공하는 모든 함수를 정리한 참조 문서예요. 스칼라 함수, 집계 함수, 매크로 함수, 테이블 함수를 카테고리별로 모아뒀으니, 필요한 함수를 인덱스에서 찾아 바로 확인할 수 있어요. 각 함수의 시그니처(서명)와 설명, 예시를 함께 보여드릴게요.
출처: 문서
본문
함수 인덱스 (Function Index)
| 함수 | 요약 |
|---|---|
DuckDB_PROJ_Compiled_Version |
DuckDB 인스턴스가 컴파일될 당시의 PROJ 라이브러리 버전 텍스트 설명을 반환해요. |
DuckDB_Proj_Version |
이 DuckDB 인스턴스가 사용 중인 PROJ 라이브러리 버전 텍스트 설명을 반환해요. |
ST_Affine |
지오메트리에 아핀 변환(affine transformation)을 적용해요. |
ST_Area |
지오메트리의 면적을 계산해요. |
ST_Area_Spheroid |
지구의 타원체 모델을 사용해 지오메트리의 면적(미터)을 반환해요. |
ST_AsGeoJSON |
지오메트리를 GeoJSON 조각으로 반환해요. |
ST_AsHEXWKB |
지오메트리를 HEXWKB 문자열로 반환해요. |
ST_AsMVTGeom |
지오메트리를 타일 경계에 맞게 변환하고 잘라내요. |
ST_AsSVG |
지오메트리를 SVG 조각 또는 경로로 변환해요. |
ST_AsText |
지오메트리를 WKT 문자열로 반환해요. |
ST_AsWKB |
지오메트리를 WKB(Well-Known-Binary) blob으로 반환해요. |
ST_Azimuth |
두 점의 방위각(북쪽에서 시계 방향으로 잰 각도, 라디안)을 반환해요. |
ST_Boundary |
지오메트리의 "경계(boundary)"를 반환해요. |
ST_Buffer |
입력 지오메트리 주변에 목표 거리만큼의 버퍼를 반환해요. |
ST_BuildArea |
입력 지오메트리를 "채워 넣는" 방식으로 다각형 지오메트리를 만들어요. |
ST_Centroid |
지오메트리의 중심점(centroid)을 반환해요. |
ST_Collect |
지오메트리 목록을 컬렉션 지오메트리로 모아요. |
ST_CollectionExtract |
GeometryCollection에서 지오메트리를 추출해 타입이 지정된 멀티 지오메트리로 만들어요. |
ST_ConcaveHull |
입력 지오메트리의 "오목" 헐(hull)을 반환하며, 입력 지오메트리의 모든 점을 포함하고 점들로부터 다각형을 만들 수 있어요. ratio 파라미터가 오목함의 정도를 결정하며, 1.0이면 볼록 헐을, 0이면 가능한 가장 오목한 헐을 반환해요. 구멍을 포함한 결과를 허용하려면 allowHoles를 0이 아닌 값으로 설정하세요. |
ST_Contains |
첫 번째 지오메트리가 두 번째 지오메트리를 포함하면 true를 반환해요. |
ST_ContainsProperly |
첫 번째 지오메트리가 두 번째 지오메트리를 "제대로(properly)" 포함하면 true를 반환해요. |
ST_ConvexHull |
지오메트리를 감싸는 볼록 헐을 반환해요. |
ST_CoverageInvalidEdges |
다각형 커버리지에서 유효하지 않은 모서리, 즉 두 다각형이 공유하지 않는 모서리를 반환해요. |
ST_CoverageSimplify |
다각형 커버리지의 모서리를 단순화하며, 결과 단순화된 다각형 사이에 이음새가 없도록 커버리지를 보존해요. |
ST_CoverageUnion |
다각형 커버리지의 모든 지오메트리를 단일 지오메트리로 합집합해요. |
ST_CoveredBy |
geom1이 geom2에 "덮이면(covered by)" true를 반환해요. |
ST_Covers |
geom1이 geom2를 "덮으면(covers)" true를 반환해요. |
ST_Crosses |
geom1이 geom2를 "가로지르면(crosses)" true를 반환해요. |
ST_DWithin |
두 지오메트리가 목표 거리 안에 있는지 여부를 반환해요. |
ST_DWithin_GEOS |
두 지오메트리가 목표 거리 안에 있는지 여부를 반환해요. |
ST_DWithin_Spheroid |
두 POINT_2D가 지구 표면의 타원체 모델을 사용해 목표 거리(미터) 안에 있는지 여부를 반환해요. |
ST_Difference |
두 지오메트리 사이의 "차집합(difference)"을 반환해요. |
ST_Dimension |
지오메트리의 "위상차원(topological dimension)"을 반환해요. |
ST_Disjoint |
지오메트리가 서로 분리되어 있으면 true를 반환해요. |
ST_Distance |
두 지오메트리 사이의 평면 거리를 반환해요. |
ST_Distance_GEOS |
두 지오메트리 사이의 평면 거리를 반환해요. |
ST_Distance_Sphere |
두 지오메트리 사이의 하버사인(대원, great circle) 거리를 반환해요. |
ST_Distance_Spheroid |
지구 표면의 타원체 모델을 사용해 두 지오메트리 사이의 거리(미터)를 반환해요. |
ST_Dump |
지오메트리를 하위 지오메트리들과 원본 지오메트리 내 "경로(path)" 목록으로 덤프해요. |
ST_EndPoint |
LINESTRING의 끝점을 반환해요. |
ST_Envelope |
지오메트리의 최소 경계 사각형을 다각형 지오메트리로 반환해요. |
ST_Equals |
지오메트리가 서로 "동일(equal)"하면 true를 반환해요. |
ST_Extent |
입력 지오메트리를 감싸는 최소 경계 상자를 반환해요. |
ST_Extent_Approx |
사용 가능하다면 지오메트리의 근사 경계 상자를 반환해요. |
ST_ExteriorRing |
다각형 지오메트리의 외곽 링(쉘)을 반환해요. |
ST_FlipCoordinates |
입력 지오메트리의 좌표를 x = y, y = x가 되도록 "뒤집은" 새 지오메트리를 반환해요. |
ST_Force2D |
지오메트리의 정점이 X와 Y 성분만 갖도록 강제해요. |
ST_Force3DM |
지오메트리의 정점이 X, Y, M 성분을 갖도록 강제해요. |
ST_Force3DZ |
지오메트리의 정점이 X, Y, Z 성분을 갖도록 강제해요. |
ST_Force4D |
지오메트리의 정점이 X, Y, Z, M 성분을 갖도록 강제해요. |
ST_GeomFromGeoJSON |
GeoJSON 조각에서 GEOMETRY를 역직렬화해요. |
ST_GeomFromHEXEWKB |
HEX(E)WKB 인코딩 문자열에서 GEOMETRY를 역직렬화해요. |
ST_GeomFromHEXWKB |
HEX(E)WKB 인코딩 문자열에서 GEOMETRY를 역직렬화해요. |
ST_GeomFromText |
WKT 인코딩 문자열에서 GEOMETRY를 역직렬화해요. |
ST_GeomFromWKB |
WKB 인코딩 blob에서 GEOMETRY를 역직렬화해요. |
ST_GeometryType |
입력 지오메트리 유형을 식별하는 'GEOMETRY_TYPE' enum을 반환해요. 가능한 enum 반환값은 POINT, LINESTRING, POLYGON, MULTIPOINT, MULTILINESTRING, MULTIPOLYGON, GEOMETRYCOLLECTION이에요. |
ST_HasM |
입력 지오메트리가 M 값을 갖는지 확인해요. |
ST_HasZ |
입력 지오메트리가 Z 값을 갖는지 확인해요. |
ST_Hilbert |
X와 Y 값을, 주어진 경계 상자를 덮는 곡선의 힐베르트 곡선 인덱스로 인코딩해요. |
ST_InterpolatePoint |
LINESTRING에서 주어진 POINT에 가장 가까운 점을 계산하고 그 점의 보간된 M 값을 반환해요. |
ST_Intersection |
두 지오메트리의 교집합을 반환해요. |
ST_Intersects |
지오메트리가 교차하면 true를 반환해요. |
ST_Intersects_Extent |
두 지오메트리의 범위(extent)가 교차하면 true를 반환해요. |
ST_IsClosed |
지오메트리가 '닫혀 있는지(closed)' 확인해요. |
ST_IsEmpty |
지오메트리가 "비어 있으면(empty)" true를 반환해요. |
ST_IsRing |
지오메트리가 링(ring)이면 true를 반환해요(ST_IsClosed와 ST_IsSimple가 모두 참). |
ST_IsSimple |
지오메트리가 단순(simple)하면 true를 반환해요. |
ST_IsValid |
지오메트리가 유효(valid)하면 true를 반환해요. |
ST_Length |
입력 선 지오메트리의 길이를 반환해요. |
ST_Length_Spheroid |
지구의 타원체 모델을 사용해 입력 지오메트리의 길이(미터)를 반환해요. |
ST_LineInterpolatePoint |
전체 2D 길이의 일정 비율 지점에서 선을 따라 보간된 점을 반환해요. |
ST_LineInterpolatePoints |
전체 2D 길이의 일정 비율 지점에서 선을 따라 보간된 멀티포인트를 반환해요. |
ST_LineLocatePoint |
선 전체 2D 길이의 비율로, 점에 가장 가까운 선 위 위치를 반환해요. |
ST_LineMerge |
선택적으로 방향을 고려해 입력 선 지오메트리를 "병합"해요. |
ST_LineString2DFromWKB |
WKB 인코딩 blob에서 LINESTRING_2D를 역직렬화해요. |
ST_LineSubstring |
전체 2D 길이의 두 비율 사이의 선 부분 문자열을 반환해요. |
ST_LocateAlong |
주어진 측정값(measure)을 가진 지오메트리의 점(들)을 포함하는 점 또는 멀티포인트를 반환해요. |
ST_LocateBetween |
"M" 값 범위 내의 정점을 필터링·보간해 만든 지오메트리 또는 지오메트리 컬렉션을 반환해요. |
ST_M |
점 지오메트리의 M 좌표를 반환해요. |
ST_MMax |
지오메트리의 최대 M 좌표를 반환해요. |
ST_MMin |
지오메트리의 최소 M 좌표를 반환해요. |
ST_MakeBox2D |
두 POINT 지오메트리로 BOX2D를 만들어요. |
ST_MakeEnvelope |
최소/최대 좌표로 사각형 다각형을 만들어요. |
ST_MakeLine |
POINT 지오메트리 목록으로 LINESTRING을 만들어요. |
ST_MakePoint |
한 쌍의 부동소수점 숫자로 GEOMETRY 점을 만들어요. |
ST_MakePolygon |
LINESTRING 쉘로 POLYGON을 만들어요. |
ST_MakeValid |
지오메트리의 유효한 표현을 반환해요. |
ST_MaximumInscribedCircle |
선택적으로 허용 오차(tolerance)를 사용해 입력 지오메트리의 최대 내접원을 반환해요. |
ST_MinimumRotatedRectangle |
ST_Envelope()처럼 최저·최고 좌표값을 취하지 않고, 회전 사각형을 사용해 가장 낮은 면적의 둘러싸는 상자를 찾아 입력 지오메트리를 경계로 하는 최소 회전 사각형을 반환해요. |
ST_Multi |
단일 지오메트리를 멀티 지오메트리로 바꿔요. |
ST_NGeometries |
컬렉션 지오메트리의 구성요소 지오메트리 개수를 반환해요. |
ST_NInteriorRings |
다각형의 내부 링 개수를 반환해요. |
ST_NPoints |
지오메트리 내의 정점 개수를 반환해요. |
ST_Node |
입력 선 문자열 컬렉션을 결합하고 교차 지점에 추가 정점을 넣어 만든 "noded" MultiLinestring을 반환해요. |
ST_Normalize |
지오메트리의 "정규화된" 표현을 반환해요. |
ST_NumGeometries |
컬렉션 지오메트리의 구성요소 지오메트리 개수를 반환해요. |
ST_NumInteriorRings |
다각형의 내부 링 개수를 반환해요. |
ST_NumPoints |
지오메트리 내의 정점 개수를 반환해요. |
ST_Overlaps |
지오메트리가 겹치면 true를 반환해요. |
ST_Perimeter |
지오메트리의 둘레 길이를 반환해요. |
ST_Perimeter_Spheroid |
지구 표면의 타원체 모델을 사용해 둘레 길이(미터)를 반환해요. |
ST_Point |
GEOMETRY 점을 만들어요. |
ST_Point2D |
POINT_2D를 만들어요. |
ST_Point2DFromWKB |
WKB 인코딩 blob에서 POINT_2D를 역직렬화해요. |
ST_Point3D |
POINT_3D를 만들어요. |
ST_Point4D |
POINT_4D를 만들어요. |
ST_PointN |
입력 지오메트리의 n번째 정점을 점 지오메트리로 반환해요. |
ST_PointOnSurface |
지오메트리 표면에 있다고 보장되는 점을 반환해요. |
ST_Points |
지오메트리의 모든 정점을 MULTIPOINT로 모아요. |
ST_Polygon2DFromWKB |
WKB 인코딩 blob에서 POLYGON_2D를 역직렬화해요. |
ST_Polygonize |
입력 지오메트리의 폴리곤화된 표현을 반환해요. |
ST_QuadKey |
주어진 레벨에서 주어진 lon/lat 점에 대한 quadkey를 계산해요. |
ST_ReducePrecision |
모든 정점이 주어진 정밀도로 줄어든 지오메트리를 반환해요. |
ST_RemoveRepeatedPoints |
LINESTRING에서 반복된 점을 제거해요. |
ST_Reverse |
정점 순서가 뒤집힌 지오메트리를 반환해요. |
ST_ShortestLine |
두 지오메트리 사이의 최단 선을 반환해요. |
ST_Simplify |
지오메트리의 단순화된 버전을 반환해요. |
ST_SimplifyPreserveTopology |
위상을 보존하는 지오메트리의 단순화된 버전을 반환해요. |
ST_StartPoint |
LINESTRING의 시작점을 반환해요. |
ST_TileEnvelope |
ST_TileEnvelope 스칼라 함수는 지정된 줌 레벨과 타일 인덱스에서 타일 범위(tile envelope) 사각형 다각형을 생성해요. |
ST_Touches |
지오메트리가 서로 접하면 true를 반환해요. |
ST_Transform |
지오메트리를 두 좌표계 사이에서 변환해요. |
ST_Union |
두 지오메트리의 합집합을 반환해요. |
ST_VoronoiDiagram |
주어진 MultiPoint 지오메트리의 보로노이 다이어그램을 반환해요. |
ST_Within |
첫 번째 지오메트리가 두 번째 지오메트리 안에 있으면 true를 반환해요. |
ST_WithinProperly |
첫 번째 지오메트리가 두 번째 지오메트리에 "제대로" 포함되면 true를 반환해요. |
ST_X |
점 지오메트리의 X 좌표를 반환해요. |
ST_XMax |
지오메트리의 최대 X 좌표를 반환해요. |
ST_XMin |
지오메트리의 최소 X 좌표를 반환해요. |
ST_Y |
점 지오메트리의 Y 좌표를 반환해요. |
ST_YMax |
지오메트리의 최대 Y 좌표를 반환해요. |
ST_YMin |
지오메트리의 최소 Y 좌표를 반환해요. |
ST_Z |
점 지오메트리의 Z 좌표를 반환해요. |
ST_ZMFlag |
입력 지오메트리의 Z와 M 값 존재 여부를 나타내는 플래그를 반환해요. |
ST_ZMax |
지오메트리의 최대 Z 좌표를 반환해요. |
ST_ZMin |
지오메트리의 최소 Z 좌표를 반환해요. |
| 함수 | 요약 |
|---|---|
ST_AsMVT |
지오메트리와 속성 집합으로 Mapbox Vector Tile을 만들어요. |
ST_CoverageInvalidEdges_Agg |
커버리지 지오메트리의 유효하지 않은 모서리를 반환해요. |
ST_CoverageSimplify_Agg |
커버리지를 유지하면서 지오메트리 집합을 단순화해요. |
ST_CoverageUnion_Agg |
커버리지를 유지하면서 지오메트리 집합을 합집합해요. |
ST_Envelope_Agg |
ST_Extent_Agg의 별칭이에요. |
ST_Extent_Agg |
입력 지오메트리 집합을 포함하는 최소 경계 상자 다각형을 계산해요. |
ST_Intersection_Agg |
지오메트리 집합의 교집합을 계산해요. |
ST_MemUnion_Agg |
입력 지오메트리 집합의 합집합을 계산해요. |
ST_Union_Agg |
입력 지오메트리 집합의 합집합을 계산해요. |
| 함수 | 요약 |
|---|---|
ST_Rotate |
ST_RotateZ의 별칭이에요. |
ST_RotateX |
지오메트리를 X 축을 중심으로 회전해요. ST_Affine을 호출하는 축약 매크로예요. |
ST_RotateY |
지오메트리를 Y 축을 중심으로 회전해요. ST_Affine을 호출하는 축약 매크로예요. |
ST_RotateZ |
지오메트리를 Z 축을 중심으로 회전해요. ST_Affine을 호출하는 축약 매크로예요. |
ST_Scale |
|
ST_TransScale |
지오메트리를 X, Y 방향으로 이동(translate)한 뒤 크기 조정(scale)해요. ST_Affine을 호출하는 축약 매크로예요. |
ST_Translate |
| 함수 | 요약 |
|---|---|
ST_Drivers |
지원되는 GDAL 드라이버와 파일 형식 목록을 반환해요. |
ST_GeneratePoints |
지정된 경계 상자 안에 무작위 점 집합을 생성해요. |
ST_Read |
GDAL 라이브러리를 사용해 다양한 지리공간 파일 형식을 읽고 가져와요. |
ST_ReadOSM |
ST_ReadOsm() 테이블 함수를 사용하면 압축된 OpenStreetMap 데이터를 .osm.pbf 파일에서 직접 읽을 수 있어요. |
ST_ReadSHP |
GDAL 라이브러리에 의존하지 않고 Shapefile을 읽어요. |
ST_Read_Meta |
GDAL 라이브러리를 사용해 다양한 지리공간 파일 형식의 메타데이터를 읽어요. |
Scalar Functions
DuckDB_PROJ_Compiled_Version
Signature
VARCHAR DuckDB_PROJ_Compiled_Version ()
Description
DuckDB 인스턴스가 컴파일될 당시의 PROJ 라이브러리 버전에 대한 텍스트 설명을 반환해요.
Example
SELECT duckdb_proj_compiled_version();
┌────────────────────────────────┐
│ duckdb_proj_compiled_version() │
│ varchar │
├────────────────────────────────┤
│ Rel. 9.1.1, December 1st, 2022 │
└────────────────────────────────┘
DuckDB_Proj_Version
Signature
VARCHAR DuckDB_Proj_Version ()
Description
이 DuckDB 인스턴스가 사용 중인 PROJ 라이브러리 버전에 대한 텍스트 설명을 반환해요.
Example
SELECT duckdb_proj_version();
┌───────────────────────┐
│ duckdb_proj_version() │
│ varchar │
├───────────────────────┤
│ 9.1.1 │
└───────────────────────┘
ST_Affine
Signatures
GEOMETRY ST_Affine (geom GEOMETRY, a DOUBLE, b DOUBLE, c DOUBLE, d DOUBLE, e DOUBLE, f DOUBLE, g DOUBLE, h DOUBLE, i DOUBLE, xoff DOUBLE, yoff DOUBLE, zoff DOUBLE)
GEOMETRY ST_Affine (geom GEOMETRY, a DOUBLE, b DOUBLE, d DOUBLE, e DOUBLE, xoff DOUBLE, yoff DOUBLE)
Description
지오메트리에 아핀 변환을 적용해요.
2D 변형의 변환 행렬은 다음과 같이 정의돼요:
| a b xoff |
| d e yoff |
| 0 0 1 |
3D 변형의 변환 행렬은 다음과 같이 정의돼요:
| a b c xoff |
| d e f yoff |
| g h i zoff |
| 0 0 0 1 |
변환은 지오메트리의 모든 정점에 적용돼요.
Example
-- Translate a point by (2, 3)
SELECT ST_Affine(ST_Point(1, 1),
1, 0, -- a, b
0, 1, -- d, e
2, 3); -- xoff, yoff
----
POINT (3 4)
-- Scale a geometry by factor 2 in X and Y
SELECT ST_Affine(ST_Point(1, 1),
2, 0, 0, -- a, b, c
0, 2, 0, -- d, e, f
0, 0, 1, -- g, h, i
0, 0, 0); -- xoff, yoff, zoff
----
POINT (2 2)
ST_Area
Signatures
DOUBLE ST_Area (geom GEOMETRY)
DOUBLE ST_Area (polygon POLYGON_2D)
DOUBLE ST_Area (linestring LINESTRING_2D)
DOUBLE ST_Area (point POINT_2D)
DOUBLE ST_Area (box BOX_2D)
Description
지오메트리의 면적을 계산해요.
POLYGON, MULTIPOLYGON, 또는 다각형 지오메트리를 포함하는 GEOMETRYCOLLECTION이 아닌 지오메트리에 대해서는 0.0을 반환해요.
면적은 지오메트리의 공간 참조 시스템과 동일한 단위예요.
POINT_2D와 LINESTRING_2D 오버로드는 항상 0.0을 반환하지만 완전성을 위해 포함돼 있어요.
Example
select ST_Area('POLYGON((0 0, 0 1, 1 1, 1 0, 0 0))'::geometry);
-- 1.0
ST_Area_Spheroid
Signatures
DOUBLE ST_Area_Spheroid (geom GEOMETRY)
DOUBLE ST_Area_Spheroid (poly POLYGON_2D)
Description
지구의 타원체 모델을 사용해 지오메트리의 면적(미터)을 반환해요.
입력 지오메트리는 [latitude, longitude] 축 순서의 EPSG:4326 좌표계(WGS84)에 있다고 가정하며, 면적은 제곱미터로 반환돼요. 이 함수는 GeographicLib 라이브러리를 사용해 지구의 타원체 모델로 면적을 계산해요. 지구의 곡률을 고려해 다각형 면적을 계산하는 매우 정확한 방법이지만, 가장 느리기도 해요.
POLYGON, MULTIPOLYGON, 또는 다각형 지오메트리를 포함하는 GEOMETRYCOLLECTION이 아닌 지오메트리에 대해서는 0.0을 반환해요.
ST_AsGeoJSON
Signature
JSON ST_AsGeoJSON (geom GEOMETRY)
Description
지오메트리를 GeoJSON 조각으로 반환해요.
완전한 GeoJSON 문서가 아니라 지오메트리 조각만 반환해요. 완전한 GeoJSON 문서나 피처를 구성하려면 이 함수와 함께 DuckDB JSON 확장을 사용해 보세요. 이 함수는 Z 값은 지원하지만 M 값은 지원하지 않으며, M 값은 무시돼요.
Example
select ST_AsGeoJSON('POLYGON((0 0, 0 1, 1 1, 1 0, 0 0))'::geometry);
----
{"type":"Polygon","coordinates":[[[0.0,0.0],[0.0,1.0],[1.0,1.0],[1.0,0.0],[0.0,0.0]]]}
-- Convert a geometry into a full GeoJSON feature (requires the JSON extension to be loaded)
SELECT CAST({
type: 'Feature',
geometry: ST_AsGeoJSON(ST_Point(1,2)),
properties: {
name: 'my_point'
}
} AS JSON);
----
{"type":"Feature","geometry":{"type":"Point","coordinates":[1.0,2.0]},"properties":{"name":"my_point"}}
ST_AsHEXWKB
Signature
VARCHAR ST_AsHEXWKB (geom GEOMETRY)
Description
지오메트리를 HEXWKB 문자열로 반환해요.
Example
SELECT ST_AsHexWKB('POLYGON((0 0, 0 1, 1 1, 1 0, 0 0))'::geometry);
----
01030000000100000005000000000000000000000000000...
ST_AsMVTGeom
Signatures
GEOMETRY ST_AsMVTGeom (geom GEOMETRY, bounds BOX_2D, extent BIGINT, buffer BIGINT, clip_geom BOOLEAN)
GEOMETRY ST_AsMVTGeom (geom GEOMETRY, bounds BOX_2D, extent BIGINT, buffer BIGINT)
GEOMETRY ST_AsMVTGeom (geom GEOMETRY, bounds BOX_2D, extent BIGINT)
GEOMETRY ST_AsMVTGeom (geom GEOMETRY, bounds BOX_2D)
Description
지오메트리를 타일 경계에 맞게 변환하고 잘라내요.
자세한 내용은 "ST_AsMVT"를 참고하세요.
ST_AsSVG
Signature
VARCHAR ST_AsSVG (geom GEOMETRY, relative BOOLEAN, precision INTEGER)
Description
지오메트리를 SVG 조각 또는 경로로 변환해요.
SVG 조각은 문자열로 반환되며, SVG 문서에서 사용할 수 있는 경로 요소예요. 두 번째 boolean 인자는 경로가 상대(relative)인지 절대(absolute)인지 지정해요. 세 번째 인자는 좌표에 사용할 최대 자릿수를 지정해요.
점은 절대 좌표를 사용하면 cx/cy로, 상대 좌표를 사용하면 x/y로 포맷돼요.
Example
SELECT ST_AsSVG('POLYGON((0 0, 0 1, 1 1, 1 0, 0 0))'::GEOMETRY, false, 15);
----
M 0 0 L 0 -1 1 -1 1 0 Z
ST_AsText
Signatures
VARCHAR ST_AsText (geom GEOMETRY)
VARCHAR ST_AsText (point POINT_2D)
VARCHAR ST_AsText (linestring LINESTRING_2D)
VARCHAR ST_AsText (polygon POLYGON_2D)
VARCHAR ST_AsText (box BOX_2D)
Description
지오메트리를 WKT 문자열로 반환해요.
Example
SELECT ST_MakeEnvelope(0,0,1,1);
----
POLYGON ((0 0, 0 1, 1 1, 1 0, 0 0))
ST_AsWKB
Signature
WKB_BLOB ST_AsWKB (geom GEOMETRY)
Description
지오메트리를 WKB(Well-Known-Binary) blob으로 반환해요.
Example
SELECT ST_AsWKB('POLYGON((0 0, 0 1, 1 1, 1 0, 0 0))'::GEOMETRY)::BLOB;
----
\x01\x03\x00\x00\x00\x01\x00\x00\x00\x05...
ST_Azimuth
Signatures
DOUBLE ST_Azimuth (origin GEOMETRY, target GEOMETRY)
DOUBLE ST_Azimuth (origin POINT_2D, target POINT_2D)
Description
두 점의 방위각(북쪽에서 시계 방향으로 잰 각도, 라디안)을 반환해요.
Example
SELECT degrees(ST_Azimuth(ST_Point(0, 0), ST_Point(0, 1)));
----
90.0
ST_Boundary
Signature
GEOMETRY ST_Boundary (geom GEOMETRY)
Description
지오메트리의 "경계(boundary)"를 반환해요.
ST_Buffer
Signatures
GEOMETRY ST_Buffer (geom GEOMETRY, distance DOUBLE)
GEOMETRY ST_Buffer (geom GEOMETRY, distance DOUBLE, num_triangles INTEGER)
GEOMETRY ST_Buffer (geom GEOMETRY, distance DOUBLE, num_triangles INTEGER, cap_style VARCHAR, join_style VARCHAR, mitre_limit DOUBLE)
Description
입력 지오메트리 주변에 목표 거리만큼의 버퍼를 반환해요.
geom은 입력 지오메트리예요.
distance는 입력 지오메트리와 같은 단위를 사용하는 버퍼의 목표 거리예요.
num_triangles는 사분원(quarter circle)을 근사하기 위해 생성할 삼각형 개수를 나타내요. 숫자가 클수록 결과 지오메트리가 더 부드러워져요. 기본값은 8이에요.
cap_style은 "CAP_ROUND", "CAP_FLAT", "CAP_SQUARE" 중 하나여야 해요. 이 파라미터는 대소문자를 구분하지 않아요.
join_style은 "JOIN_ROUND", "JOIN_MITRE", "JOIN_BEVEL" 중 하나여야 해요. 이 파라미터는 대소문자를 구분하지 않아요.
mitre_limit는 join_style이 "JOIN_MITRE"일 때만 적용돼요. 모서리에서 미터(m) 점까지의 거리와 모서리 반지름의 비율이며, 기본값은 1.0이에요.
이것은 평면(planar) 연산이며 지구의 곡률은 고려하지 않아요.
ST_BuildArea
Signature
GEOMETRY ST_BuildArea (geom GEOMETRY)
Description
입력 지오메트리를 "채워 넣는" 방식으로 다각형 지오메트리를 만들어요.
ST_Polygonize와 달리 이 함수는 구멍을 채우지 않아요.
ST_Centroid
Signatures
GEOMETRY ST_Centroid (geom GEOMETRY)
POINT_2D ST_Centroid (point POINT_2D)
POINT_2D ST_Centroid (linestring LINESTRING_2D)
POINT_2D ST_Centroid (polygon POLYGON_2D)
POINT_2D ST_Centroid (box BOX_2D)
POINT_2D ST_Centroid (box BOX_2DF)
Description
지오메트리의 중심점(centroid)을 반환해요.
ST_Collect
Signature
GEOMETRY ST_Collect (geoms GEOMETRY[])
Description
지오메트리 목록을 컬렉션 지오메트리로 모아요.
- 모든 지오메트리가
POINT이면MULTIPOINT를 반환해요. - 모든 지오메트리가
LINESTRING이면MULTILINESTRING을 반환해요. - 모든 지오메트리가
POLYGON이면MULTIPOLYGON을 반환해요. - 그 외, 입력 컬렉션이 여러 지오메트리 유형을 섞고 있으면
GEOMETRYCOLLECTION을 반환해요.
빈 지오메트리와 NULL 지오메트리는 무시돼요. 모든 지오메트리가 비어 있거나 NULL이면 GEOMETRYCOLLECTION EMPTY를 반환해요.
Example
-- With all POINT's, a MULTIPOINT is returned
SELECT ST_Collect([ST_Point(1, 2), ST_Point(3, 4)]);
----
MULTIPOINT (1 2, 3 4)
-- With mixed geometry types, a GEOMETRYCOLLECTION is returned
SELECT ST_Collect([ST_Point(1, 2), ST_GeomFromText('LINESTRING(3 4, 5 6)')]);
----
GEOMETRYCOLLECTION (POINT (1 2), LINESTRING (3 4, 5 6))
-- Note that the empty geometry is ignored, so the result is a MULTIPOINT
SELECT ST_Collect([ST_Point(1, 2), NULL, ST_GeomFromText('GEOMETRYCOLLECTION EMPTY')]);
----
MULTIPOINT (1 2)
-- If all geometries are empty or NULL, a GEOMETRYCOLLECTION EMPTY is returned
SELECT ST_Collect([NULL, ST_GeomFromText('GEOMETRYCOLLECTION EMPTY')]);
----
GEOMETRYCOLLECTION EMPTY
-- Tip: You can use the `ST_Collect` function together with the `list()` aggregate function to collect multiple rows of geometries into a single geometry collection:
CREATE TABLE points (geom GEOMETRY);
INSERT INTO points VALUES (ST_Point(1, 2)), (ST_Point(3, 4));
SELECT ST_Collect(list(geom)) FROM points;
----
MULTIPOINT (1 2, 3 4)
ST_CollectionExtract
Signatures
GEOMETRY ST_CollectionExtract (geom GEOMETRY, type INTEGER)
GEOMETRY ST_CollectionExtract (geom GEOMETRY)
Description
GeometryCollection에서 지오메트리를 추출해 타입이 지정된 멀티 지오메트리로 만들어요.
입력 지오메트리가 GeometryCollection이면 type 파라미터로 결정된 멀티 지오메트리를 반환해요.
type= 1이면 컬렉션의 모든 Point를 포함한 MultiPoint를 반환해요.type= 2이면 컬렉션의 모든 LineString을 포함한 MultiLineString을 반환해요.type= 3이면 컬렉션의 모든 Polygon을 포함한 MultiPolygon을 반환해요.
type 파라미터가 제공되지 않으면, 포함된 지오메트리의 가장 높은 "표면 차원"에 맞는 멀티 지오메트리를 반환해요. 예를 들어 컬렉션이 Point만 포함하면 MultiPoint를, Point와 LineString을 모두 포함하면 MultiLineString을 반환해요. 마찬가지로 컬렉션이 Polygon을 포함하면 MultiPolygon을 반환해요. 더 낮은 표면 차원의 포함된 지오메트리는 무시돼요.
입력 지오메트리가 중첩된 GeometryCollection을 포함하면, 그 지오메트리들도 재귀적으로 추출되어 최종 멀티 지오메트리에 포함돼요.
입력 지오메트리가 GeometryCollection이 아니면, 입력 지오메트리를 그대로 반환해요.
Example
select st_collectionextract('MULTIPOINT(1 2,3 4)'::geometry, 1);
-- MULTIPOINT (1 2, 3 4)
ST_ConcaveHull
Signature
GEOMETRY ST_ConcaveHull (geom GEOMETRY, ratio DOUBLE, allowHoles BOOLEAN)
Description
입력 지오메트리의 '오목' 헐을 반환하며, 원본 입력의 모든 점을 포함하고 점들로부터 다각형을 만드는 데 사용할 수 있어요. ratio 파라미터는 오목함의 정도를 결정하며, 1.0이면 볼록 헐을 반환하고, 0이면 가능한 가장 오목한 헐을 반환해요. 구멍이 포함된 출력을 허용하려면 allowHoles를 0이 아닌 값으로 설정하세요.
ST_Contains
Signatures
BOOLEAN ST_Contains (geom1 POLYGON_2D, geom2 POINT_2D)
BOOLEAN ST_Contains (geom1 GEOMETRY, geom2 GEOMETRY)
Description
첫 번째 지오메트리가 두 번째 지오메트리를 포함하면 true를 반환해요.
ST_ContainsProperly와 달리, 이 함수는 geom2가 geom1의 경계에 정확히 위치해도 true를 반환해요. 지오메트리는 항상 자기 자신을 ST_Contains 하지만, 자기 자신을 ST_ContainsProperly 하지는 않아요.
ST_ContainsProperly
Signature
BOOLEAN ST_ContainsProperly (geom1 GEOMETRY, geom2 GEOMETRY)
Description
첫 번째 지오메트리가 두 번째 지오메트리를 "제대로(properly)" 포함하면 true를 반환해요.
ST_Contains와 달리, geom2가 geom1의 경계에 정확히 위치해 있으면 true를 반환하지 않아요. 지오메트리는 항상 자기 자신을 ST_Contains 하지만, 자기 자신을 ST_ContainsProperly 하지는 않아요.
ST_ConvexHull
Signature
GEOMETRY ST_ConvexHull (geom GEOMETRY)
Description
지오메트리를 감싸는 볼록 헐을 반환해요.
ST_CoverageInvalidEdges
Signatures
GEOMETRY ST_CoverageInvalidEdges (geoms GEOMETRY[], tolerance DOUBLE)
GEOMETRY ST_CoverageInvalidEdges (geoms GEOMETRY[])
Description
다각형 커버리지에서 유효하지 않은 모서리, 즉 두 다각형이 공유하지 않는 모서리를 반환해요. 입력이 다각형 커버리지가 아니거나 입력이 유효하면 NULL을 반환해요. 허용 오차(tolerance)는 기본적으로 0이에요.
ST_CoverageSimplify
Signatures
GEOMETRY ST_CoverageSimplify (geoms GEOMETRY[], tolerance DOUBLE, simplify_boundary BOOLEAN)
GEOMETRY ST_CoverageSimplify (geoms GEOMETRY[], tolerance DOUBLE)
Description
다각형 커버리지의 모서리를 단순화하며, 결과 단순화된 다각형 사이에 이음새가 없도록 커버리지를 보존해요.
기본적으로 커버리지의 경계도 단순화되지만, 선택적인 세 번째 'simplify_boundary' 파라미터로 제어할 수 있어요.
ST_CoverageUnion
Signature
GEOMETRY ST_CoverageUnion (geoms GEOMETRY[])
Description
다각형 커버리지의 모든 지오메트리를 단일 지오메트리로 합집합해요. ST_Union보다 빠를 수 있지만 메모리를 더 사용할 수 있어요.
ST_CoveredBy
Signature
BOOLEAN ST_CoveredBy (geom1 GEOMETRY, geom2 GEOMETRY)
Description
geom1이 geom2에 "덮이면(covered by)" true를 반환해요.
ST_Covers
Signature
BOOLEAN ST_Covers (geom1 GEOMETRY, geom2 GEOMETRY)
Description
geom1이 geom2를 "덮으면(covers)" true를 반환해요.
ST_Crosses
Signature
BOOLEAN ST_Crosses (geom1 GEOMETRY, geom2 GEOMETRY)
Description
geom1이 geom2를 "가로지르면(crosses)" true를 반환해요.
ST_DWithin
Signature
BOOLEAN ST_DWithin (geom1 GEOMETRY, geom2 GEOMETRY, distance DOUBLE)
Description
두 지오메트리가 서로 목표 거리 안에 있는지 여부를 반환해요.
ST_DWithin_GEOS
Signature
BOOLEAN ST_DWithin_GEOS (geom1 GEOMETRY, geom2 GEOMETRY, distance DOUBLE)
Description
두 지오메트리가 서로 목표 거리 안에 있는지 여부를 반환해요.
ST_DWithin_Spheroid
Signature
BOOLEAN ST_DWithin_Spheroid (p1 POINT_2D, p2 POINT_2D, distance DOUBLE)
Description
두 POINT_2D가 지구 표면의 타원체 모델을 사용해 목표 거리(미터) 안에 있는지 여부를 반환해요.
입력 지오메트리는 [latitude, longitude] 축 순서의 EPSG:4326 좌표계(WGS84)에 있다고 가정하며 거리는 미터로 반환돼요. 이 함수는 GeographicLib 라이브러리로 역측지 문제(inverse geodesic problem)를 풀어 지구의 타원체 모델로 두 점 사이의 거리를 계산해요. 지구 표면의 곡률을 고려해 임의의 두 점 사이 거리를 계산하는 매우 정확한 방법이지만 가장 느리기도 해요.
ST_Difference
Signature
GEOMETRY ST_Difference (geom1 GEOMETRY, geom2 GEOMETRY)
Description
두 지오메트리 사이의 "차집합(difference)"을 반환해요.
ST_Dimension
Signature
INTEGER ST_Dimension (geom GEOMETRY)
Description
지오메트리의 "위상차원(topological dimension)"을 반환해요.
- POINT와 MULTIPOINT 지오메트리의 경우
0을 반환해요. - LINESTRING과 MULTILINESTRING의 경우
1을 반환해요. - POLYGON과 MULTIPOLYGON의 경우
2를 반환해요. - GEOMETRYCOLLECTION의 경우 포함된 지오메트리의 최대 차원을 반환하며, 컬렉션이 비어 있으면 0을 반환해요.
Example
select st_dimension('POLYGON((0 0, 0 1, 1 1, 1 0, 0 0))'::geometry);
----
2
ST_Disjoint
Signature
BOOLEAN ST_Disjoint (geom1 GEOMETRY, geom2 GEOMETRY)
Description
지오메트리가 서로 분리되어 있으면 true를 반환해요.
ST_Distance
Signatures
DOUBLE ST_Distance (point1 POINT_2D, point2 POINT_2D)
DOUBLE ST_Distance (point POINT_2D, linestring LINESTRING_2D)
DOUBLE ST_Distance (linestring LINESTRING_2D, point POINT_2D)
DOUBLE ST_Distance (geom1 GEOMETRY, geom2 GEOMETRY)
Description
두 지오메트리 사이의 평면 거리를 반환해요.
Example
SELECT ST_Distance('POINT (0 0)'::GEOMETRY, 'POINT (3 4)'::GEOMETRY);
----
5.0
-- Z coordinates are ignored
SELECT ST_Distance('POINT Z (0 0 0)'::GEOMETRY, 'POINT Z (3 4 5)'::GEOMETRY);
----
5.0
ST_Distance_GEOS
Signature
DOUBLE ST_Distance_GEOS (geom1 GEOMETRY, geom2 GEOMETRY)
Description
두 지오메트리 사이의 평면 거리를 반환해요.
ST_Distance_Sphere
Signatures
DOUBLE ST_Distance_Sphere (geom1 GEOMETRY, geom2 GEOMETRY)
DOUBLE ST_Distance_Sphere (point1 POINT_2D, point2 POINT_2D)
Description
두 지오메트리 사이의 하버사인(대원) 거리를 반환해요.
- POINT 지오메트리만 지원해요.
- 거리를 미터로 반환해요.
- 입력은 [latitude, longitude] 축 순서의 WGS84(EPSG:4326) 좌표라고 가정해요.
ST_Distance_Spheroid
Signature
DOUBLE ST_Distance_Spheroid (p1 POINT_2D, p2 POINT_2D)
Description
지구 표면의 타원체 모델을 사용해 두 지오메트리 사이의 거리(미터)를 반환해요.
입력 지오메트리는 [latitude, longitude] 축 순서의 EPSG:4326 좌표계(WGS84)에 있다고 가정하며 거리 제한은 미터 단위로 기대돼요. 이 함수는 GeographicLib 라이브러리로 역측지 문제를 풀어 지구의 타원체 모델로 두 점 사이의 거리를 계산해요. 지구 표면의 곡률을 고려해 임의의 두 점 사이 거리를 계산하는 매우 정확한 방법이지만 가장 느리기도 해요.
Example
-- Note: the coordinates are in WGS84 and [latitude, longitude] axis order
-- What's the distance between New York and Amsterdam (JFK and AMS airport)?
SELECT st_distance_spheroid(
st_point(40.6446, -73.7797),
st_point(52.3130, 4.7725)
);
----
5863418.7459356235
-- Roughly 5863km!
ST_Dump
Signature
STRUCT(geom GEOMETRY, path INTEGER[])[] ST_Dump (geom GEOMETRY)
Description
지오메트리를 하위 지오메트리들과 원본 지오메트리 내 "경로(path)" 목록으로 덤프해요.
UNNEST(res, recursive := true) 함수를 사용하면 결과 struct 목록을 여러 행으로 폭발(explode)시킬 수 있어요.
Example
select st_dump('MULTIPOINT(1 2,3 4)'::geometry);
----
[{'geom': 'POINT(1 2)', 'path': [0]}, {'geom': 'POINT(3 4)', 'path': [1]}]
select unnest(st_dump('MULTIPOINT(1 2,3 4)'::geometry), recursive := true);
-- ┌─────────────┬─────────┐
-- │ geom │ path │
-- │ geometry │ int32[] │
-- ├─────────────┼─────────┤
-- │ POINT (1 2) │ [1] │
-- │ POINT (3 4) │ [2] │
-- └─────────────┴─────────┘
ST_EndPoint
Signatures
GEOMETRY ST_EndPoint (geom GEOMETRY)
POINT_2D ST_EndPoint (line LINESTRING_2D)
Description
LINESTRING의 끝점을 반환해요.
ST_Envelope
Signature
GEOMETRY ST_Envelope (geom GEOMETRY)
Description
지오메트리의 최소 경계 사각형을 다각형 지오메트리로 반환해요.
ST_Equals
Signature
BOOLEAN ST_Equals (geom1 GEOMETRY, geom2 GEOMETRY)
Description
지오메트리가 서로 "동일(equal)"하면 true를 반환해요.
ST_Extent
Signatures
BOX_2D ST_Extent (geom GEOMETRY)
BOX_2D ST_Extent (wkb WKB_BLOB)
Description
입력 지오메트리를 감싸는 최소 경계 상자를 반환해요.
ST_Extent_Approx
Signature
BOX_2DF ST_Extent_Approx (geom GEOMETRY)
Description
사용 가능하다면 지오메트리의 근사 경계 상자를 반환해요.
이 함수는 실제로 내부적으로만 사용되며, 지오메트리의 캐시된 경계 상자가 존재하면 그것을 반환해요. 이 함수는 향후 제거되거나 이름이 바뀔 수 있어요.
ST_ExteriorRing
Signatures
GEOMETRY ST_ExteriorRing (geom GEOMETRY)
LINESTRING_2D ST_ExteriorRing (polygon POLYGON_2D)
Description
다각형 지오메트리의 외곽 링(쉘)을 반환해요.
ST_FlipCoordinates
Signatures
GEOMETRY ST_FlipCoordinates (geom GEOMETRY)
POINT_2D ST_FlipCoordinates (point POINT_2D)
LINESTRING_2D ST_FlipCoordinates (linestring LINESTRING_2D)
POLYGON_2D ST_FlipCoordinates (polygon POLYGON_2D)
BOX_2D ST_FlipCoordinates (box BOX_2D)
Description
입력 지오메트리의 좌표를 x = y, y = x가 되도록 "뒤집은" 새 지오메트리를 반환해요.
ST_Force2D
Signature
GEOMETRY ST_Force2D (geom GEOMETRY)
Description
지오메트리의 정점이 X와 Y 성분만 갖도록 강제해요.
이 함수는 입력 지오메트리에 Z와 M 값이 있으면 이를 제거해요. 입력 지오메트리가 이미 2D라면 그대로 반환해요.
ST_Force3DM
Signature
GEOMETRY ST_Force3DM (geom GEOMETRY, m DOUBLE)
Description
지오메트리의 정점이 X, Y, M 성분을 갖도록 강제해요.
다음 경우가 적용돼요:
- 입력 지오메트리에 Z 성분은 있고 M 성분이 없으면, Z 성분이 새 M 값으로 대체돼요.
- 입력 지오메트리에 M 성분은 있고 Z 성분이 없으면 그대로 반환돼요.
- 입력 지오메트리에 Z 성분과 M 성분이 모두 있으면 Z 성분이 제거돼요.
- 그 외, 입력 지오메트리에 Z나 M 성분이 모두 없으면 입력 지오메트리의 정점에 새 M 값이 추가돼요.
ST_Force3DZ
Signature
GEOMETRY ST_Force3DZ (geom GEOMETRY, z DOUBLE)
Description
지오메트리의 정점이 X, Y, Z 성분을 갖도록 강제해요.
다음 경우가 적용돼요:
- 입력 지오메트리에 M 성분은 있고 Z 성분이 없으면, M 성분이 새 Z 값으로 대체돼요.
- 입력 지오메트리에 Z 성분은 있고 M 성분이 없으면 그대로 반환돼요.
- 입력 지오메트리에 Z 성분과 M 성분이 모두 있으면 M 성분이 제거돼요.
- 그 외, 입력 지오메트리에 Z나 M 성분이 모두 없으면 입력 지오메트리의 정점에 새 Z 값이 추가돼요.
ST_Force4D
Signature
GEOMETRY ST_Force4D (geom GEOMETRY, z DOUBLE, m DOUBLE)
Description
지오메트리의 정점이 X, Y, Z, M 성분을 갖도록 강제해요.
다음 경우가 적용돼요:
- 입력 지오메트리에 Z 성분은 있고 M 성분이 없으면, 입력 지오메트리의 정점에 새 M 값이 추가돼요.
- 입력 지오메트리에 M 성분은 있고 Z 성분이 없으면, 입력 지오메트리의 정점에 새 Z 값이 추가돼요.
- 입력 지오메트리에 Z 성분과 M 성분이 모두 있으면 그대로 반환돼요.
- 그 외, 입력 지오메트리에 Z나 M 성분이 모두 없으면 입력 지오메트리의 정점에 새 Z와 M 값이 추가돼요.
ST_GeomFromGeoJSON
Signatures
GEOMETRY ST_GeomFromGeoJSON (geojson JSON)
GEOMETRY ST_GeomFromGeoJSON (geojson VARCHAR)
Description
GeoJSON 조각에서 GEOMETRY를 역직렬화해요.
Example
SELECT ST_GeomFromGeoJSON('{"type":"Point","coordinates":[1.0,2.0]}');
----
POINT (1 2)
ST_GeomFromHEXEWKB
Signature
GEOMETRY ST_GeomFromHEXEWKB (hexwkb VARCHAR)
Description
HEX(E)WKB 인코딩 문자열에서 GEOMETRY를 역직렬화해요.
DuckDB spatial은 현재 WKB와 EWKB를 구분하지 않으므로, ST_GeomFromHEXWKB와 ST_GeomFromHEXEWKB는 서로의 별칭일 뿐이에요.
ST_GeomFromHEXWKB
Signature
GEOMETRY ST_GeomFromHEXWKB (hexwkb VARCHAR)
Description
HEX(E)WKB 인코딩 문자열에서 GEOMETRY를 역직렬화해요.
DuckDB spatial은 현재 WKB와 EWKB를 구분하지 않으므로, ST_GeomFromHEXWKB와 ST_GeomFromHEXEWKB는 서로의 별칭일 뿐이에요.
ST_GeomFromText
Signatures
GEOMETRY ST_GeomFromText (wkt VARCHAR)
GEOMETRY ST_GeomFromText (wkt VARCHAR, ignore_invalid BOOLEAN)
Description
WKT 인코딩 문자열에서 GEOMETRY를 역직렬화해요.
ST_GeomFromWKB
Signatures
GEOMETRY ST_GeomFromWKB (wkb WKB_BLOB)
GEOMETRY ST_GeomFromWKB (blob BLOB)
Description
WKB 인코딩 blob에서 GEOMETRY를 역직렬화해요.
ST_GeometryType
Signatures
ANY ST_GeometryType (geom GEOMETRY)
ANY ST_GeometryType (point POINT_2D)
ANY ST_GeometryType (linestring LINESTRING_2D)
ANY ST_GeometryType (polygon POLYGON_2D)
ANY ST_GeometryType (wkb WKB_BLOB)
Description
입력 지오메트리 유형을 식별하는 'GEOMETRY_TYPE' enum을 반환해요. 가능한 enum 반환값은 POINT, LINESTRING, POLYGON, MULTIPOINT, MULTILINESTRING, MULTIPOLYGON, GEOMETRYCOLLECTION이에요.
Example
SELECT DISTINCT ST_GeometryType(ST_GeomFromText('POINT(1 1)'));
----
POINT
ST_HasM
Signatures
BOOLEAN ST_HasM (geom GEOMETRY)
BOOLEAN ST_HasM (wkb WKB_BLOB)
Description
입력 지오메트리가 M 값을 갖는지 확인해요.
Example
-- HasM for a 2D geometry
SELECT ST_HasM(ST_GeomFromText('POINT(1 1)'));
----
false
-- HasM for a 3DZ geometry
SELECT ST_HasM(ST_GeomFromText('POINT Z(1 1 1)'));
----
false
-- HasM for a 3DM geometry
SELECT ST_HasM(ST_GeomFromText('POINT M(1 1 1)'));
----
true
-- HasM for a 4D geometry
SELECT ST_HasM(ST_GeomFromText('POINT ZM(1 1 1 1)'));
----
true
ST_HasZ
Signatures
BOOLEAN ST_HasZ (geom GEOMETRY)
BOOLEAN ST_HasZ (wkb WKB_BLOB)
Description
입력 지오메트리가 Z 값을 갖는지 확인해요.
Example
-- HasZ for a 2D geometry
SELECT ST_HasZ(ST_GeomFromText('POINT(1 1)'));
----
false
-- HasZ for a 3DZ geometry
SELECT ST_HasZ(ST_GeomFromText('POINT Z(1 1 1)'));
----
true
-- HasZ for a 3DM geometry
SELECT ST_HasZ(ST_GeomFromText('POINT M(1 1 1)'));
----
false
-- HasZ for a 4D geometry
SELECT ST_HasZ(ST_GeomFromText('POINT ZM(1 1 1 1)'));
----
true
ST_Hilbert
Signatures
UINTEGER ST_Hilbert (x DOUBLE, y DOUBLE, bounds BOX_2D)
UINTEGER ST_Hilbert (geom GEOMETRY, bounds BOX_2D)
UINTEGER ST_Hilbert (geom GEOMETRY)
UINTEGER ST_Hilbert (box BOX_2D, bounds BOX_2D)
UINTEGER ST_Hilbert (box BOX_2DF, bounds BOX_2DF)
Description
X와 Y 값을, 주어진 경계 상자를 덮는 곡선의 힐베르트 곡선 인덱스로 인코딩해요. 지오메트리가 제공되면 근사 경계 상자의 중심이 인코딩할 점으로 사용돼요. 경계 상자가 제공되지 않으면 힐베르트 곡선 인덱스는 단정밀도 부동소수점의 전체 범위에 매핑돼요. BOX_2D와 BOX_2DF 변형의 경우 상자의 중심이 인코딩할 점으로 사용돼요.
ST_InterpolatePoint
Signature
DOUBLE ST_InterpolatePoint (line GEOMETRY, point GEOMETRY)
Description
LINESTRING에서 주어진 POINT에 가장 가까운 점을 계산하고 그 점의 보간된 M 값을 반환해요.
첫 번째 인자는 linestring이어야 하고 M 차원이 있어야 해요. 두 번째 인자는 점(point)이어야 해요. 두 인자 모두 비어 있을 수 없어요.
ST_Intersection
Signature
GEOMETRY ST_Intersection (geom1 GEOMETRY, geom2 GEOMETRY)
Description
두 지오메트리의 교집합을 반환해요.
ST_Intersects
Signatures
BOOLEAN ST_Intersects (box1 BOX_2D, box2 BOX_2D)
BOOLEAN ST_Intersects (geom1 GEOMETRY, geom2 GEOMETRY)
Description
지오메트리가 교차하면 true를 반환해요.
ST_Intersects_Extent
Signature
BOOLEAN ST_Intersects_Extent (geom1 GEOMETRY, geom2 GEOMETRY)
Description
두 지오메트리의 범위(extent)가 교차하면 true를 반환해요.
ST_IsClosed
Signature
BOOLEAN ST_IsClosed (geom GEOMETRY)
Description
지오메트리가 '닫혀 있는지(closed)' 확인해요.
ST_IsEmpty
Signatures
BOOLEAN ST_IsEmpty (geom GEOMETRY)
BOOLEAN ST_IsEmpty (linestring LINESTRING_2D)
BOOLEAN ST_IsEmpty (polygon POLYGON_2D)
Description
지오메트리가 "비어 있으면(empty)" true를 반환해요.
ST_IsRing
Signature
BOOLEAN ST_IsRing (geom GEOMETRY)
Description
지오메트리가 링(ring)이면 true를 반환해요(ST_IsClosed와 ST_IsSimple를 모두 만족).
ST_IsSimple
Signature
BOOLEAN ST_IsSimple (geom GEOMETRY)
Description
지오메트리가 단순(simple)하면 true를 반환해요.
ST_IsValid
Signature
BOOLEAN ST_IsValid (geom GEOMETRY)
Description
지오메트리가 유효(valid)하면 true를 반환해요.
ST_Length
Signatures
DOUBLE ST_Length (geom GEOMETRY)
DOUBLE ST_Length (linestring LINESTRING_2D)
Description
입력 선 지오메트리의 길이를 반환해요.
ST_Length_Spheroid
Signatures
DOUBLE ST_Length_Spheroid (geom GEOMETRY)
DOUBLE ST_Length_Spheroid (line LINESTRING_2D)
Description
지구의 타원체 모델을 사용해 입력 지오메트리의 길이(미터)를 반환해요.
입력 지오메트리는 [latitude, longitude] 축 순서의 EPSG:4326 좌표계(WGS84)에 있다고 가정하며 길이는 미터로 반환돼요. 이 함수는 GeographicLib 라이브러리를 사용해 지구의 타원체 모델로 길이를 계산해요. 지구의 곡률을 고려해 선 지오메트리의 길이를 계산하는 매우 정확한 방법이지만 가장 느리기도 해요.
LINESTRING, MULTILINESTRING, 또는 선 지오메트리를 포함하는 GEOMETRYCOLLECTION이 아닌 지오메트리에 대해서는 0.0을 반환해요.
ST_LineInterpolatePoint
Signature
GEOMETRY ST_LineInterpolatePoint (line GEOMETRY, fraction DOUBLE)
Description
전체 2D 길이의 일정 비율 지점에서 선을 따라 보간된 점을 반환해요.
ST_LineInterpolatePoints
Signature
GEOMETRY ST_LineInterpolatePoints (line GEOMETRY, fraction DOUBLE, repeat BOOLEAN)
Description
전체 2D 길이의 일정 비율 지점에서 선을 따라 보간된 멀티포인트를 반환해요.
repeat이 false이면 결과는 단일 점이며(ST_LineInterpolatePoint와 동일), 그 외에는 비율 간격으로 점들이 반복되는 멀티포인트예요.
ST_LineLocatePoint
Signature
DOUBLE ST_LineLocatePoint (line GEOMETRY, point GEOMETRY)
Description
선 전체 2D 길이의 비율로, 점에 가장 가까운 선 위 위치를 반환해요.
ST_LineMerge
Signatures
GEOMETRY ST_LineMerge (geom GEOMETRY)
GEOMETRY ST_LineMerge (geom GEOMETRY, preserve_direction BOOLEAN)
Description
선택적으로 방향을 고려해 입력 선 지오메트리를 "병합"해요.
ST_LineString2DFromWKB
Signature
GEOMETRY ST_LineString2DFromWKB (linestring LINESTRING_2D)
Description
WKB 인코딩 blob에서 LINESTRING_2D를 역직렬화해요.
ST_LineSubstring
Signature
GEOMETRY ST_LineSubstring (line GEOMETRY, start_fraction DOUBLE, end_fraction DOUBLE)
Description
전체 2D 길이의 두 비율 사이의 선 부분 문자열을 반환해요.
ST_LocateAlong
Signatures
GEOMETRY ST_LocateAlong (line GEOMETRY, measure DOUBLE, offset DOUBLE)
GEOMETRY ST_LocateAlong (line GEOMETRY, measure DOUBLE)
Description
주어진 측정값(measure)을 가진 지오메트리의 점(들)을 포함하는 점 또는 멀티포인트를 반환해요.
LINESTRING 또는 MULTILINESTRING의 경우 M 값 사이를 보간해 위치를 결정해요. POINT와 MULTIPOINT의 경우 측정값이 정점의 M 값과 일치하면 점을 반환하고, 그렇지 않으면 빈 지오메트리를 반환해요. POLYGON의 경우 외곽 링만 고려하며 LINESTRING처럼 취급돼요.
offset이 제공되면 결과 점(들)은 선 방향에 수직인 방향으로 주어진 양만큼 오프셋돼요.
ST_LocateBetween
Signatures
GEOMETRY ST_LocateBetween (line GEOMETRY, start_measure DOUBLE, end_measure DOUBLE, offset DOUBLE)
GEOMETRY ST_LocateBetween (line GEOMETRY, start_measure DOUBLE, end_measure DOUBLE)
Description
"M" 값 범위 내의 정점을 필터링·보간해 만든 지오메트리 또는 지오메트리 컬렉션을 반환해요.
"start_measure"와 "end_measure" 범위 안에 "M" 값이 있는 정점으로 형성된 부분들을 포함하는 지오메트리 또는 지오메트리 컬렉션을 만들어요.
LINESTRING 또는 MULTILINESTRING의 경우 선분이 상한이나 하한 중 하나를 가로지르면 "교차" 지점의 좌표를 보간해 정점을 추가해요. POINT와 MULTIPOINT의 경우 정점의 "M" 값이 범위 안에 있으면 컬렉션에 점을 추가하고, 그렇지 않으면 건너뛰어요. POLYGON의 경우 외곽 링만 고려하며 LINESTRING처럼 취급돼요.
offset이 제공되면 결과 정점들은 선 방향에 수직인 방향으로 주어진 양만큼 오프셋돼요.
ST_M
Signature
DOUBLE ST_M (geom GEOMETRY)
Description
점 지오메트리의 M 좌표를 반환해요.
Example
SELECT ST_M(ST_Point(1, 2, 3, 4))
ST_MMax
Signature
DOUBLE ST_MMax (geom GEOMETRY)
Description
지오메트리의 최대 M 좌표를 반환해요.
Example
SELECT ST_MMax(ST_Point(1, 2, 3, 4))
ST_MMin
Signature
DOUBLE ST_MMin (geom GEOMETRY)
Description
지오메트리의 최소 M 좌표를 반환해요.
Example
SELECT ST_MMin(ST_Point(1, 2, 3, 4))
ST_MakeBox2D
Signature
BOX_2D ST_MakeBox2D (point1 GEOMETRY, point2 GEOMETRY)
Description
두 POINT 지오메트리로 BOX2D를 만들어요.
Example
SELECT ST_MakeBox2D(ST_Point(0, 0), ST_Point(1, 1));
----
BOX(0 0, 1 1)
ST_MakeEnvelope
Signature
GEOMETRY ST_MakeEnvelope (min_x DOUBLE, min_y DOUBLE, max_x DOUBLE, max_y DOUBLE)
Description
최소/최대 좌표로 사각형 다각형을 만들어요.
ST_MakeLine
Signatures
GEOMETRY ST_MakeLine (geoms GEOMETRY[])
GEOMETRY ST_MakeLine (start GEOMETRY, end GEOMETRY)
Description
POINT 지오메트리 목록으로 LINESTRING을 만들어요.
Example
SELECT ST_MakeLine([ST_Point(0, 0), ST_Point(1, 1)]);
----
LINESTRING(0 0, 1 1)
ST_MakePoint
Signatures
POINT_2D ST_MakePoint (x DOUBLE, y DOUBLE)
POINT_3D ST_MakePoint (x DOUBLE, y DOUBLE, z DOUBLE)
POINT_4D ST_MakePoint (x DOUBLE, y DOUBLE, z DOUBLE, m DOUBLE)
Description
한 쌍의 부동소수점 숫자로 GEOMETRY 점을 만들어요.
측지 좌표계(geodetic coordinate system)에서는 x가 일반적으로 경도 값이고 y가 위도 값이에요.
ST_Point와 동일하다는 점에 유의하세요. ST_MakePoint는 PostGIS 호환성을 위해 제공돼요.
Example
SELECT ST_AsText(ST_MakePoint(143.3, -24.2));
----
POINT (143.3 -24.2)
ST_MakePolygon
Signatures
GEOMETRY ST_MakePolygon (shell GEOMETRY)
GEOMETRY ST_MakePolygon (shell GEOMETRY, holes GEOMETRY[])
Description
LINESTRING 쉘로 POLYGON을 만들어요.
Example
SELECT ST_MakePolygon(ST_LineString([ST_Point(0, 0), ST_Point(1, 0), ST_Point(1, 1), ST_Point(0, 0)]));
ST_MakeValid
Signature
GEOMETRY ST_MakeValid (geom GEOMETRY)
Description
지오메트리의 유효한 표현을 반환해요.
ST_MaximumInscribedCircle
Signatures
STRUCT(center GEOMETRY, nearest GEOMETRY, radius DOUBLE) ST_MaximumInscribedCircle (geom GEOMETRY)
STRUCT(center GEOMETRY, nearest GEOMETRY, radius DOUBLE) ST_MaximumInscribedCircle (geom GEOMETRY, tolerance DOUBLE)
Description
선택적으로 허용 오차(tolerance)를 사용해 입력 지오메트리의 최대 내접원을 반환해요.
기본적으로 허용 오차는 max(width, height) / 1000로 계산돼요. 반환값은 원의 중심, 지오메트리 경계에서 중심에 가장 가까운 점, 원의 반지름을 담은 struct예요.
Example
-- Find the maximum inscribed circle of a square
SELECT ST_MaximumInscribedCircle(
ST_GeomFromText('POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))')
);
----
{'center': POINT (5 5), 'nearest': POINT (5 0), 'radius': 5.0}
ST_MinimumRotatedRectangle
Signature
GEOMETRY ST_MinimumRotatedRectangle (geom GEOMETRY)
Description
입력 지오메트리를 경계로 하는 최소 회전 사각형을 반환하며, ST_Envelope()처럼 최저·최고 좌표값을 취하는 대신 회전 사각형을 사용해 가장 낮은 면적의 둘러싸는 상자를 찾아요.
ST_Multi
Signature
GEOMETRY ST_Multi (geom GEOMETRY)
Description
단일 지오메트리를 멀티 지오메트리로 바꿔요.
지오메트리가 이미 멀티 지오메트리라면 그대로 반환돼요.
Example
SELECT ST_Multi(ST_GeomFromText('POINT(1 2)'));
----
MULTIPOINT (1 2)
SELECT ST_Multi(ST_GeomFromText('LINESTRING(1 1, 2 2)'));
----
MULTILINESTRING ((1 1, 2 2))
SELECT ST_Multi(ST_GeomFromText('POLYGON((0 0, 0 1, 1 1, 1 0, 0 0))'));
----
MULTIPOLYGON (((0 0, 0 1, 1 1, 1 0, 0 0)))
ST_NGeometries
Signature
INTEGER ST_NGeometries (geom GEOMETRY)
Description
컬렉션 지오메트리의 구성요소 지오메트리 개수를 반환해요. 입력 지오메트리가 컬렉션이 아니면, 지오메트리가 비어 있는지 여부에 따라 0 또는 1을 반환해요.
ST_NInteriorRings
Signatures
INTEGER ST_NInteriorRings (geom GEOMETRY)
INTEGER ST_NInteriorRings (polygon POLYGON_2D)
Description
다각형의 내부 링 개수를 반환해요.
ST_NPoints
Signatures
UINTEGER ST_NPoints (geom GEOMETRY)
UBIGINT ST_NPoints (point POINT_2D)
UBIGINT ST_NPoints (linestring LINESTRING_2D)
UBIGINT ST_NPoints (polygon POLYGON_2D)
UBIGINT ST_NPoints (box BOX_2D)
Description
지오메트리 내의 정점 개수를 반환해요.
ST_Node
Signature
GEOMETRY ST_Node (geom GEOMETRY)
Description
입력 선 문자열 컬렉션을 결합하고 교차 지점에 추가 정점을 넣어 만든 "noded" MultiLinestring을 반환해요.
Example
-- Create a noded multilinestring from two intersecting lines
SELECT ST_Node(
ST_GeomFromText('MULTILINESTRING((0 0, 2 2), (0 2, 2 0))')
);
----
MULTILINESTRING ((0 0, 1 1), (1 1, 2 2), (0 2, 1 1), (1 1, 2 0))
ST_Normalize
Signature
GEOMETRY ST_Normalize (geom GEOMETRY)
Description
지오메트리의 "정규화된" 표현을 반환해요.
ST_NumGeometries
Signature
INTEGER ST_NumGeometries (geom GEOMETRY)
Description
컬렉션 지오메트리의 구성요소 지오메트리 개수를 반환해요. 입력 지오메트리가 컬렉션이 아니면, 지오메트리가 비어 있는지 여부에 따라 0 또는 1을 반환해요.
ST_NumInteriorRings
Signatures
INTEGER ST_NumInteriorRings (geom GEOMETRY)
INTEGER ST_NumInteriorRings (polygon POLYGON_2D)
Description
다각형의 내부 링 개수를 반환해요.
ST_NumPoints
Signatures
UINTEGER ST_NumPoints (geom GEOMETRY)
UBIGINT ST_NumPoints (point POINT_2D)
UBIGINT ST_NumPoints (linestring LINESTRING_2D)
UBIGINT ST_NumPoints (polygon POLYGON_2D)
UBIGINT ST_NumPoints (box BOX_2D)
Description
지오메트리 내의 정점 개수를 반환해요.
ST_Overlaps
Signature
BOOLEAN ST_Overlaps (geom1 GEOMETRY, geom2 GEOMETRY)
Description
지오메트리가 겹치면 true를 반환해요.
ST_Perimeter
Signatures
DOUBLE ST_Perimeter (geom GEOMETRY)
DOUBLE ST_Perimeter (polygon POLYGON_2D)
DOUBLE ST_Perimeter (box BOX_2D)
Description
지오메트리의 둘레 길이를 반환해요.
ST_Perimeter_Spheroid
Signatures
DOUBLE ST_Perimeter_Spheroid (geom GEOMETRY)
DOUBLE ST_Perimeter_Spheroid (poly POLYGON_2D)
Description
지구 표면의 타원체 모델을 사용해 둘레 길이(미터)를 반환해요.
입력 지오메트리는 [latitude, longitude] 축 순서의 EPSG:4326 좌표계(WGS84)에 있다고 가정하며 길이는 미터로 반환돼요. 이 함수는 GeographicLib 라이브러리를 사용해 지구의 타원체 모델로 둘레를 계산해요. 지구의 곡률을 고려해 다각형 둘레를 계산하는 매우 정확한 방법이지만 가장 느리기도 해요.
POLYGON, MULTIPOLYGON, 또는 다각형 지오메트리를 포함하는 GEOMETRYCOLLECTION이 아닌 지오메트리에 대해서는 0.0을 반환해요.
ST_Point
Signature
GEOMETRY ST_Point (x DOUBLE, y DOUBLE)
Description
GEOMETRY 점을 만들어요.
ST_Point2D
Signature
POINT_2D ST_Point2D (x DOUBLE, y DOUBLE)
Description
POINT_2D를 만들어요.
ST_Point2DFromWKB
Signature
GEOMETRY ST_Point2DFromWKB (point POINT_2D)
Description
WKB 인코딩 blob에서 POINT_2D를 역직렬화해요.
ST_Point3D
Signature
POINT_3D ST_Point3D (x DOUBLE, y DOUBLE, z DOUBLE)
Description
POINT_3D를 만들어요.
ST_Point4D
Signature
POINT_4D ST_Point4D (x DOUBLE, y DOUBLE, z DOUBLE, m DOUBLE)
Description
POINT_4D를 만들어요.
ST_PointN
Signatures
GEOMETRY ST_PointN (geom GEOMETRY, index INTEGER)
POINT_2D ST_PointN (linestring LINESTRING_2D, index INTEGER)
Description
입력 지오메트리의 n번째 정점을 점 지오메트리로 반환해요.
ST_PointOnSurface
Signature
GEOMETRY ST_PointOnSurface (geom GEOMETRY)
Description
지오메트리 표면에 있다고 보장되는 점을 반환해요.
ST_Points
Signature
GEOMETRY ST_Points (geom GEOMETRY)
Description
지오메트리의 모든 정점을 MULTIPOINT로 모아요.
Example
select st_points('LINESTRING(1 1, 2 2)'::geometry);
----
MULTIPOINT (1 1, 2 2)
select st_points('MULTIPOLYGON Z EMPTY'::geometry);
----
MULTIPOINT Z EMPTY
ST_Polygon2DFromWKB
Signature
GEOMETRY ST_Polygon2DFromWKB (polygon POLYGON_2D)
Description
WKB 인코딩 blob에서 POLYGON_2D를 역직렬화해요.
ST_Polygonize
Signature
GEOMETRY ST_Polygonize (geometries GEOMETRY[])
Description
입력 지오메트리의 폴리곤화된 표현을 반환해요.
Example
-- Create a polygon from a closed linestring ring
SELECT ST_Polygonize([
ST_GeomFromText('LINESTRING(0 0, 0 10, 10 10, 10 0, 0 0)')
]);
---
GEOMETRYCOLLECTION (POLYGON ((0 0, 0 10, 10 10, 10 0, 0 0)))
ST_QuadKey
Signatures
VARCHAR ST_QuadKey (longitude DOUBLE, latitude DOUBLE, level INTEGER)
VARCHAR ST_QuadKey (point GEOMETRY, level INTEGER)
Description
주어진 레벨에서 주어진 lon/lat 점에 대한 quadkey를 계산해요. 파라미터 순서가 longitude, __latitude__라는 점에 유의하세요.
level은 1 이상 23 이하(포함)여야 해요.
입력 좌표는 지구의 lon/lat 경계(경도 -180180, 위도 -85.0511287885.05112878)로 클램프돼요.
입력 지오메트리가 POINT가 아니면 geometry 오버로드는 오류를 던져요.
Example
SELECT ST_QuadKey(st_point(11.08, 49.45), 10);
----
1333203202
ST_ReducePrecision
Signature
GEOMETRY ST_ReducePrecision (geom GEOMETRY, precision DOUBLE)
Description
모든 정점이 주어진 정밀도로 줄어든 지오메트리를 반환해요.
ST_RemoveRepeatedPoints
Signatures
LINESTRING_2D ST_RemoveRepeatedPoints (line LINESTRING_2D)
LINESTRING_2D ST_RemoveRepeatedPoints (line LINESTRING_2D, tolerance DOUBLE)
GEOMETRY ST_RemoveRepeatedPoints (geom GEOMETRY)
GEOMETRY ST_RemoveRepeatedPoints (geom GEOMETRY, tolerance DOUBLE)
Description
LINESTRING에서 반복된 점을 제거해요.
ST_Reverse
Signature
GEOMETRY ST_Reverse (geom GEOMETRY)
Description
정점 순서가 뒤집힌 지오메트리를 반환해요.
ST_ShortestLine
Signature
GEOMETRY ST_ShortestLine (geom1 GEOMETRY, geom2 GEOMETRY)
Description
두 지오메트리 사이의 최단 선을 반환해요.
ST_Simplify
Signature
GEOMETRY ST_Simplify (geom GEOMETRY, tolerance DOUBLE)
Description
지오메트리의 단순화된 버전을 반환해요.
ST_SimplifyPreserveTopology
Signature
GEOMETRY ST_SimplifyPreserveTopology (geom GEOMETRY, tolerance DOUBLE)
Description
위상을 보존하는 지오메트리의 단순화된 버전을 반환해요.
ST_StartPoint
Signatures
GEOMETRY ST_StartPoint (geom GEOMETRY)
POINT_2D ST_StartPoint (line LINESTRING_2D)
Description
LINESTRING의 시작점을 반환해요.
ST_TileEnvelope
Signature
GEOMETRY ST_TileEnvelope (tile_zoom INTEGER, tile_x INTEGER, tile_y INTEGER)
Description
ST_TileEnvelope 스칼라 함수는 지정된 줌 레벨과 타일 인덱스에서 타일 범위(tile envelope) 사각형 다각형을 생성해요.
이 함수는 MVT 생성에서 타일 범위에 해당하는 피처를 선택하는 데 사용돼요. 범위는 Web Mercator 좌표 참조 시스템(EPSG:3857)을 사용해요. 타일 피라미드는 줌 레벨 0에서 시작하며, 이는 세계 전체의 단일 타일에 해당해요. 각 줌 레벨은 각 방향의 타일 수를 두 배로 늘리므로, 줌 레벨 1은 가로 2개 × 세로 2개, 줌 레벨 2는 가로 4개 × 세로 4개가 되는 식이에요. 타일 인덱스는 왼쪽 위 [x=0, y=0]에서 시작해 아래와 오른쪽으로 증가해요. 예를 들어 줌 레벨 2에서 오른쪽 위 타일은 [x=3, y=0], 왼쪽 아래 타일은 [x=0, y=3], 오른쪽 아래 타일은 [x=3, y=3]이에요.
SELECT ST_TileEnvelope(2, 3, 1);
Example
SELECT ST_TileEnvelope(2, 3, 1);
┌───────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ st_tileenvelope(2, 3, 1) │
│ geometry │
├───────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ POLYGON ((1.00188E+07 0, 1.00188E+07 1.00188E+07, 2.00375E+07 1.00188E+07, 2.00375E+07 0, 1.00188E+07 0)) │
└───────────────────────────────────────────────────────────────────────────────────────────────────────────┘
ST_Touches
Signature
BOOLEAN ST_Touches (geom1 GEOMETRY, geom2 GEOMETRY)
Description
지오메트리가 서로 접하면 true를 반환해요.
ST_Transform
Signatures
BOX_2D ST_Transform (box BOX_2D, source_crs VARCHAR, target_crs VARCHAR)
BOX_2D ST_Transform (box BOX_2D, source_crs VARCHAR, target_crs VARCHAR, always_xy BOOLEAN)
POINT_2D ST_Transform (point POINT_2D, source_crs VARCHAR, target_crs VARCHAR)
POINT_2D ST_Transform (point POINT_2D, source_crs VARCHAR, target_crs VARCHAR, always_xy BOOLEAN)
GEOMETRY ST_Transform (geom GEOMETRY, source_crs VARCHAR, target_crs VARCHAR)
GEOMETRY ST_Transform (geom GEOMETRY, source_crs VARCHAR, target_crs VARCHAR, always_xy BOOLEAN)
Description
지오메트리를 두 좌표계 사이에서 변환해요.
소스와 대상 좌표계는 PROJ 라이브러리가 지원하는 어떤 형식으로도 지정할 수 있어요.
세 번째 선택적 always_xy 파라미터는 소스 및 대상 좌표계 정의가 무엇을 말하든, 입력과 출력 지오메트리를 [easting, northing] 좌표 축 순서를 갖는 것으로 강제 해석하는 데 사용할 수 있어요. 이는 WGS84/EPSG:4326 좌표계(대부분의 사람들이 "경도"/"위도" 또는 "GPS 좌표"라고 부르는 것)로/로부터 변환할 때 특히 유용해요. 이 좌표계는 실제로 [longitude, latitude]가 흔히 사용됨에도(예: GeoJSON) [latitude, longitude] 축 순서를 갖는 것으로 정의돼요. 자세한 내용은 PROJ 문서에서 확인할 수 있어요.
DuckDB spatial은 PROJ 좌표계 데이터베이스의 자체 정적 복사본을 판매(vendor)하므로, 시스템에 PROJ를 직접 설치한 경우 사용 가능한 좌표계가 다른 GIS 소프트웨어에서 사용 가능한 것과 다를 수 있어요.
Example
-- Transform a geometry from EPSG:4326 to EPSG:3857 (WGS84 to WebMercator)
-- Note that since WGS84 is defined as having a [latitude, longitude] axis order
-- we follow the standard and provide the input geometry using that axis order,
-- but the output will be [easting, northing] because that is what's defined by
-- WebMercator.
SELECT
ST_Transform(
st_point(52.373123, 4.892360),
'EPSG:4326',
'EPSG:3857'
);
----
POINT (544615.0239773799 6867874.103539125)
-- Alternatively, let's say we got our input point from e.g. a GeoJSON file,
-- which uses WGS84 but with [longitude, latitude] axis order. We can use the
-- `always_xy` parameter to force the input geometry to be interpreted as having
-- a [northing, easting] axis order instead, even though the source coordinate
-- reference system definition (WGS84) says otherwise.
SELECT
ST_Transform(
-- note the axis order is reversed here
st_point(4.892360, 52.373123),
'EPSG:4326',
'EPSG:3857',
always_xy := true
);
----
POINT (544615.0239773799 6867874.103539125)
-- Transform a geometry from OSG36 British National Grid EPSG:27700 to EPSG:4326 WGS84
-- Standard transform is often fine for the first few decimal places before being wrong
-- which could result in an error starting at about 10m and possibly much more
SELECT ST_Transform(bng, 'EPSG:27700', 'EPSG:4326', xy := true) AS without_grid_file
FROM (SELECT ST_GeomFromText('POINT( 170370.718 11572.405 )') AS bng);
----
POINT (-5.202992651563592 49.96007490162923)
-- By using an official NTv2 grid file, we can reduce the error down around the 9th decimal place
-- which in theory is below a millimetre, and in practice unlikely that your coordinates are that precise
-- British National Grid "NTv2 format files" download available here:
-- https://www.ordnancesurvey.co.uk/products/os-net/for-developers
SELECT ST_Transform(bng
, '+proj=tmerc +lat_0=49 +lon_0=-2 +k=0.9996012717 +x_0=400000 +y_0=-100000 +ellps=airy +units=m +no_defs +nadgrids=/full/path/to/OSTN15-NTv2/OSTN15_NTv2_OSGBtoETRS.gsb +type=crs'
, 'EPSG:4326', xy := true) AS with_grid_file
FROM (SELECT ST_GeomFromText('POINT( 170370.718 11572.405 )') AS bng) t;
----
POINT (-5.203046090608746 49.96006137018598)
ST_Union
Signature
GEOMETRY ST_Union (geom1 GEOMETRY, geom2 GEOMETRY)
Description
두 지오메트리의 합집합을 반환해요.
ST_VoronoiDiagram
Signature
GEOMETRY ST_VoronoiDiagram (geom GEOMETRY)
Description
주어진 MultiPoint 지오메트리의 보로노이 다이어그램을 반환해요.
ST_Within
Signatures
BOOLEAN ST_Within (geom1 POINT_2D, geom2 POLYGON_2D)
BOOLEAN ST_Within (geom1 GEOMETRY, geom2 GEOMETRY)
Description
첫 번째 지오메트리가 두 번째 지오메트리 안에 있으면 true를 반환해요.
ST_WithinProperly
Signature
BOOLEAN ST_WithinProperly (geom1 GEOMETRY, geom2 GEOMETRY)
Description
첫 번째 지오메트리가 두 번째 지오메트리에 "제대로" 포함되면 true를 반환해요.
이 함수는 ST_ContainsProperly와 동일하게 동작하지만 인자가 바뀌어 있어요.
ST_X
Signatures
DOUBLE ST_X (geom GEOMETRY)
DOUBLE ST_X (point POINT_2D)
Description
점 지오메트리의 X 좌표를 반환해요.
Example
SELECT ST_X(ST_Point(1, 2))
ST_XMax
Signatures
DOUBLE ST_XMax (geom GEOMETRY)
DOUBLE ST_XMax (point POINT_2D)
DOUBLE ST_XMax (line LINESTRING_2D)
DOUBLE ST_XMax (polygon POLYGON_2D)
DOUBLE ST_XMax (box BOX_2D)
FLOAT ST_XMax (box BOX_2DF)
Description
지오메트리의 최대 X 좌표를 반환해요.
Example
SELECT ST_XMax(ST_Point(1, 2))
ST_XMin
Signatures
DOUBLE ST_XMin (geom GEOMETRY)
DOUBLE ST_XMin (point POINT_2D)
DOUBLE ST_XMin (line LINESTRING_2D)
DOUBLE ST_XMin (polygon POLYGON_2D)
DOUBLE ST_XMin (box BOX_2D)
FLOAT ST_XMin (box BOX_2DF)
Description
지오메트리의 최소 X 좌표를 반환해요.
Example
SELECT ST_XMin(ST_Point(1, 2))
ST_Y
Signatures
DOUBLE ST_Y (geom GEOMETRY)
DOUBLE ST_Y (point POINT_2D)
Description
점 지오메트리의 Y 좌표를 반환해요.
Example
SELECT ST_Y(ST_Point(1, 2))
ST_YMax
Signatures
DOUBLE ST_YMax (geom GEOMETRY)
DOUBLE ST_YMax (point POINT_2D)
DOUBLE ST_YMax (line LINESTRING_2D)
DOUBLE ST_YMax (polygon POLYGON_2D)
DOUBLE ST_YMax (box BOX_2D)
FLOAT ST_YMax (box BOX_2DF)
Description
지오메트리의 최대 Y 좌표를 반환해요.
Example
SELECT ST_YMax(ST_Point(1, 2))
ST_YMin
Signatures
DOUBLE ST_YMin (geom GEOMETRY)
DOUBLE ST_YMin (point POINT_2D)
DOUBLE ST_YMin (line LINESTRING_2D)
DOUBLE ST_YMin (polygon POLYGON_2D)
DOUBLE ST_YMin (box BOX_2D)
FLOAT ST_YMin (box BOX_2DF)
Description
지오메트리의 최소 Y 좌표를 반환해요.
Example
SELECT ST_YMin(ST_Point(1, 2))
ST_Z
Signature
DOUBLE ST_Z (geom GEOMETRY)
Description
점 지오메트리의 Z 좌표를 반환해요.
Example
SELECT ST_Z(ST_Point(1, 2, 3))
ST_ZMFlag
Signatures
UTINYINT ST_ZMFlag (geom GEOMETRY)
UTINYINT ST_ZMFlag (wkb WKB_BLOB)
Description
입력 지오메트리의 Z와 M 값 존재 여부를 나타내는 플래그를 반환해요. 0 = Z 또는 M 값 없음 1 = M 값만 있음 2 = Z 값만 있음 3 = Z와 M 값 모두 있음
Example
-- ZMFlag for a 2D geometry
SELECT ST_ZMFlag(ST_GeomFromText('POINT(1 1)'));
----
0
-- ZMFlag for a 3DZ geometry
SELECT ST_ZMFlag(ST_GeomFromText('POINT Z(1 1 1)'));
----
2
-- ZMFlag for a 3DM geometry
SELECT ST_ZMFlag(ST_GeomFromText('POINT M(1 1 1)'));
----
1
-- ZMFlag for a 4D geometry
SELECT ST_ZMFlag(ST_GeomFromText('POINT ZM(1 1 1 1)'));
----
3
ST_ZMax
Signature
DOUBLE ST_ZMax (geom GEOMETRY)
Description
지오메트리의 최대 Z 좌표를 반환해요.
Example
SELECT ST_ZMax(ST_Point(1, 2, 3))
ST_ZMin
Signature
DOUBLE ST_ZMin (geom GEOMETRY)
Description
지오메트리의 최소 Z 좌표를 반환해요.
Example
SELECT ST_ZMin(ST_Point(1, 2, 3))
Aggregate Functions
ST_AsMVT
Signatures
BLOB ST_AsMVT (col0 ANY)
BLOB ST_AsMVT (col0 ANY, col1 VARCHAR)
BLOB ST_AsMVT (col0 ANY, col1 VARCHAR, col2 INTEGER)
BLOB ST_AsMVT (col0 ANY, col1 VARCHAR, col2 INTEGER, col3 VARCHAR)
BLOB ST_AsMVT (col0 ANY, col1 VARCHAR, col2 INTEGER, col3 VARCHAR, col4 VARCHAR)
Description
지오메트리와 속성 집합으로 Mapbox Vector Tile을 만들어요. 이 함수는 지오메트리 컬럼과 임의 개수의 속성 컬럼을 포함하는 행 타입(STRUCT)을 입력으로 받아요. Mapbox Vector Tile을 담은 단일 바이너리 BLOB을 반환해요.
이 함수의 시그니처는 다음과 같아요:
ST_AsMVT(row STRUCT, layer_name VARCHAR DEFAULT 'layer', extent INTEGER DEFAULT 4096, geom_column_name VARCHAR DEFAULT NULL, feature_id_column_name VARCHAR DEFAULT NULL) -> BLOB
- 첫 번째 인자는 지오메트리와 속성을 포함한 struct예요.
- 두 번째 인자는 벡터 타일에서 레이어의 이름이에요. 선택 사항이며 기본값은 'layer'예요.
- 세 번째 인자는 타일의 범위(extent)예요. 선택 사항이며 기본값은 4096이에요.
- 네 번째 인자는 입력 행에서 지오메트리 컬럼의 이름이에요. 선택 사항이며, 제공되지 않으면 입력 행의 첫 번째 지오메트리 컬럼이 사용돼요. 여러 지오메트리 컬럼이 있으면 오류가 발생해요.
- 다섯 번째 인자는 입력 행에서 피처 id 컬럼의 이름이에요. 선택 사항이며, 제공되면 이 컬럼의 값이 벡터 타일의 피처 id로 사용돼요. 이 컬럼은 INTEGER 또는 BIGINT 타입이어야 해요. 음수 또는 NULL로 설정하면 해당 피처에 피처 id가 할당되지 않아요.
입력 struct는 정확히 하나의 GEOMETRY 타입 지오메트리 컬럼을 포함해야 해요. VARCHAR, FLOAT, DOUBLE, INTEGER, BIGINT, BOOLEAN 타입의 속성 컬럼은 몇 개든 포함할 수 있어요.
예시:
SELECT ST_AsMVT({'geom': geom, 'id': id, 'name': name}, 'cities', 4096, 'geom', 'id') AS tile
FROM cities;
이 예시는 'cities' 테이블에서 범위 4096의 'cities'라는 이름의 벡터 타일을 만들며, 'geom'을 지오메트리 컬럼으로, 'id'를 피처 id 컬럼으로 사용해요.
다만 지오메트리를 타일 범위로 먼저 변환하고 잘라내려면 ST_AsMVTGeom 함수를 사용하는 편이 좋아요. 다음 예시는 지오메트리가 WebMercator("EPSG:3857") 좌표라고 가정해요. ⟨z⟩, ⟨x⟩, ⟨y⟩를 적절한 타일 좌표로, ⟨your_table⟩을 테이블 이름으로, ⟨tile_path⟩를 타일을 쓸 경로로 바꾸세요.
COPY (
SELECT ST_AsMVT({
"geometry": ST_AsMVTGeom(
geometry,
ST_Extent(ST_TileEnvelope(⟨z⟩, ⟨x⟩, ⟨y⟩)),
4096,
256,
false
)
})
FROM ⟨your_table⟩ WHERE ST_Intersects(geometry, ST_TileEnvelope(⟨z⟩, ⟨x⟩, ⟨y⟩))
) to ⟨tile_path⟩ (FORMAT 'BLOB');
ST_CoverageInvalidEdges_Agg
Signatures
GEOMETRY ST_CoverageInvalidEdges_Agg (col0 GEOMETRY)
GEOMETRY ST_CoverageInvalidEdges_Agg (col0 GEOMETRY, col1 DOUBLE)
Description
커버리지 지오메트리의 유효하지 않은 모서리를 반환해요.
ST_CoverageSimplify_Agg
Signatures
GEOMETRY ST_CoverageSimplify_Agg (col0 GEOMETRY, col1 DOUBLE)
GEOMETRY ST_CoverageSimplify_Agg (col0 GEOMETRY, col1 DOUBLE, col2 BOOLEAN)
Description
커버리지를 유지하면서 지오메트리 집합을 단순화해요.
ST_CoverageUnion_Agg
Signature
GEOMETRY ST_CoverageUnion_Agg (col0 GEOMETRY)
Description
커버리지를 유지하면서 지오메트리 집합을 합집합해요.
ST_Envelope_Agg
Signature
GEOMETRY ST_Envelope_Agg (col0 GEOMETRY)
Description
ST_Extent_Agg의 별칭이에요.
입력 지오메트리 집합을 포함하는 최소 경계 상자 다각형을 계산해요.
Example
SELECT ST_Extent_Agg(geom) FROM UNNEST([ST_Point(1,1), ST_Point(5,5)]) AS _(geom);
-- POLYGON ((1 1, 1 5, 5 5, 5 1, 1 1))
ST_Extent_Agg
Signature
GEOMETRY ST_Extent_Agg (col0 GEOMETRY)
Description
입력 지오메트리 집합을 포함하는 최소 경계 상자 다각형을 계산해요.
Example
SELECT ST_Extent_Agg(geom) FROM UNNEST([ST_Point(1,1), ST_Point(5,5)]) AS _(geom);
-- POLYGON ((1 1, 1 5, 5 5, 5 1, 1 1))
ST_Intersection_Agg
Signature
GEOMETRY ST_Intersection_Agg (col0 GEOMETRY)
Description
지오메트리 집합의 교집합을 계산해요.
ST_MemUnion_Agg
Signature
GEOMETRY ST_MemUnion_Agg (col0 GEOMETRY)
Description
입력 지오메트리 집합의 합집합을 계산해요. "ST_UnionAgg보다 느리지만 각 지오메트리를 한 번에 모두가 아니라 개별적으로 합집합에 병합하므로 메모리 효율이 더 높을 수 있어요.
ST_Union_Agg
Signature
GEOMETRY ST_Union_Agg (col0 GEOMETRY)
Description
입력 지오메트리 집합의 합집합을 계산해요.
Macro Functions
ST_Rotate
Signature
GEOMETRY ST_Rotate (geom GEOMETRY, radians double)
Description
ST_RotateZ의 별칭이에요.
ST_RotateX
Signature
GEOMETRY ST_RotateX (geom GEOMETRY, radians double)
Description
지오메트리를 X 축을 중심으로 회전해요. ST_Affine을 호출하는 축약 매크로예요.
Example
-- Rotate a 3D point 90 degrees (π/2 radians) around the X-axis
SELECT ST_RotateX(ST_GeomFromText('POINT Z(0 1 0)'), pi()/2);
----
POINT Z (0 0 1)
ST_RotateY
Signature
GEOMETRY ST_RotateY (geom GEOMETRY, radians double)
Description
지오메트리를 Y 축을 중심으로 회전해요. ST_Affine을 호출하는 축약 매크로예요.
Example
-- Rotate a 3D point 90 degrees (π/2 radians) around the Y-axis
SELECT ST_RotateY(ST_GeomFromText('POINT Z(1 0 0)'), pi()/2);
----
POINT Z (0 0 -1)
ST_RotateZ
Signature
GEOMETRY ST_RotateZ (geom GEOMETRY, radians double)
Description
지오메트리를 Z 축을 중심으로 회전해요. ST_Affine을 호출하는 축약 매크로예요.
Example
-- Rotate a point 90 degrees (π/2 radians) around the Z-axis
SELECT ST_RotateZ(ST_Point(1, 0), pi()/2);
----
POINT (0 1)
ST_Scale
Signatures
GEOMETRY ST_Scale (geom GEOMETRY, xs double, ys double, zs double)
GEOMETRY ST_Scale (geom GEOMETRY, xs double, ys double)
ST_TransScale
Signature
GEOMETRY ST_TransScale (geom GEOMETRY, dx double, dy double, xs double, ys double)
Description
지오메트리를 X, Y 방향으로 이동(translate)한 뒤 크기 조정(scale)해요. ST_Affine을 호출하는 축약 매크로예요.
Example
-- Translate by (1, 2) then scale by (2, 3)
SELECT ST_TransScale(ST_Point(1, 1), 1, 2, 2, 3);
----
POINT (4 9)
ST_Translate
Signatures
GEOMETRY ST_Translate (geom GEOMETRY, dx double, dy double, dz double)
GEOMETRY ST_Translate (geom GEOMETRY, dx double, dy double)
Table Functions
ST_Drivers
Signature
ST_Drivers ()
Description
지원되는 GDAL 드라이버와 파일 형식 목록을 반환해요.
이 드라이버들 중 상당수가 제대로 테스트되지 않았다는 점에 유의하세요. 일부는 예상대로 동작하려면 추가 옵션을 전달해야 할 수도 있어요. 문제가 발생하면 먼저 GDAL 문서를 참고해 보세요.
Example
SELECT * FROM ST_Drivers();
ST_GeneratePoints
Signature
ST_GeneratePoints (col0 BOX_2D, col1 BIGINT)
ST_GeneratePoints (col0 BOX_2D, col1 BIGINT, col2 BIGINT)
Description
지정된 경계 상자 안에 무작위 점 집합을 생성해요.
경계 상자(min_x, min_y, max_x, max_y), 생성할 점의 개수, 그리고 선택적으로 난수 생성기의 시드(seed)를 받아요.
Example
SELECT * FROM ST_GeneratePoints({min_x: 0, min_y:0, max_x:10, max_y:10}::BOX_2D, 5, 42);
ST_Read
Signature
ST_Read (col0 VARCHAR, keep_wkb BOOLEAN, max_batch_size INTEGER, sequential_layer_scan BOOLEAN, layer VARCHAR, sibling_files VARCHAR[], spatial_filter WKB_BLOB, spatial_filter_box BOX_2D, allowed_drivers VARCHAR[], open_options VARCHAR[])
Description
GDAL 라이브러리를 사용해 다양한 지리공간 파일 형식을 읽고 가져와요.
ST_Read 테이블 함수는 GDAL 번역 라이브러리에 기반하며, 다양한 지리공간 벡터 파일 형식의 공간 데이터를 DuckDB 테이블처럼 읽을 수 있게 해줘요.
지원되는 파일 형식과 드라이버 목록은 ST_Drivers를 참고하세요.
path 파라미터를 제외한 모든 파라미터는 선택 사항이에요.
| 파라미터 | 타입 | 설명 |
|---|---|---|
path |
VARCHAR | 읽을 파일의 경로예요. 필수예요. |
sequential_layer_scan |
BOOLEAN | true로 설정하면 테이블 함수가 모든 레이어를 순차적으로 스캔해 주어진 레이어 이름과 일치하는 첫 번째 레이어를 반환해요. 일부 드라이버(예: OSM 드라이버)가 제대로 동작하려면 필요해요. |
spatial_filter |
WKB_BLOB | WKB blob으로 설정하면 테이블 함수가 주어진 WKB 지오메트리와 교차하는 행만 반환해요. 일부 드라이버는 기본적으로 효율적인 공간 필터링을 지원하며 이 경우 푸시다운돼요. 그렇지 않으면 필터링은 GDAL에 의해 수행되는데 훨씬 느릴 수 있어요. |
open_options |
VARCHAR[] | 파일 열기를 제어하기 위해 GDAL 드라이버에 전달되는 키-값 쌍 목록이에요. 예를 들어 GeoJSON 드라이버는 중첩 속성을 평탄화하는 FLATTEN_NESTED_ATTRIBUTES=YES 옵션을 지원해요. |
layer |
VARCHAR | 파일에서 읽을 레이어의 이름이에요. NULL이면 첫 번째 레이어가 반환돼요. 레이어 인덱스(0부터 시작)일 수도 있어요. |
allowed_drivers |
VARCHAR[] | 파일을 여는 데 허용되는 GDAL 드라이버 이름 목록이에요. 비어 있으면 모든 드라이버가 허용돼요. |
sibling_files |
VARCHAR[] | 파일을 여는 데 필요한 형제 파일(sibling file) 목록이에요. 예를 들어 ESRI Shapefile 드라이버는 .shx 파일이 있어야 해요. 다만 대부분의 경우 자동으로 발견될 수 있어요. |
spatial_filter_box |
BOX_2D | BOX_2D로 설정하면 테이블 함수가 주어진 경계 상자와 교차하는 행만 반환해요. spatial_filter와 유사해요. |
keep_wkb |
BOOLEAN | 설정하면 테이블 함수가 GEOMETRY 대신 WKB_BLOB 타입(그리고 BLOB으로 캐스트 가능)의 wkb_geometry 컬럼으로 지오메트리를 반환해요. DuckDB spatial이 아직 GEOMETRY 타입으로 표현을 지원하지 않는 더 이국적인 지오메트리 하위 타입과 함께 DuckDB를 사용하려는 경우 유용해요. |
GDAL은 단일 스레드이므로 이 테이블 함수는 병렬성을 완전히 활용하지 못한다는 점에 유의하세요.
ST_Read를 사용하면 spatial 확장은 일반적인 지리공간 파일 형식에 대한 "replacement scan(대체 스캔)"도 제공하므로, 이 형식들의 파일을 테이블처럼 직접 쿼리할 수 있어요.
SELECT * FROM './path/to/some/shapefile/dataset.shp';
실제로는 이것이 ST_Read를 호출하는 문법 설탕(syntax sugar)일 뿐이므로 성능 차이는 없어요. 추가 옵션을 전달하려면 ST_Read 테이블 함수를 직접 사용해야 해요.
현재 파일 확장자로 인식되는 형식은 다음과 같아요:
| 형식 | 확장자 |
|---|---|
| ESRI ShapeFile | .shp |
| GeoPackage | .gpkg |
| FlatGeoBuf | .fgb |
Example
-- Read a Shapefile
SELECT * FROM ST_Read('some/file/path/filename.shp');
-- Read a GeoJSON file
CREATE TABLE my_geojson_table AS SELECT * FROM ST_Read('some/file/path/filename.json');
ST_ReadOSM
Signature
ST_ReadOSM (col0 VARCHAR)
Description
ST_ReadOSM() 테이블 함수를 사용하면 압축된 OpenStreetMap 데이터를 .osm.pbf 파일에서 직접 읽을 수 있어요.
이 함수는 멀티스레딩과 zero-copy protobuf 파싱을 사용하므로 ST_Read() OSM 드라이버보다 훨씬 빠르지만, 실제 지오메트리를 구성하지 않고 원시 OSM 데이터(Nodes, Ways, Relations)만 출력해요. 단순한 노드 엔터티(예: PoI)의 경우 POINT 지오메트리를 쉽게 구성할 수 있지만, SQL에서 refs와 nodes를 수동으로 조인해 LINESTRING과 POLYGON 지오메트리를 구성하는 것도 가능해요. 다만 사용 가능한 메모리가 보통 제한 요인이 돼요.
ST_ReadOSM() 함수는 파일을 테이블처럼 직접 읽을 수 있게 해주는 "replacement scan"도 제공해요. 다만 이는 ST_ReadOSM()을 호출하는 문법 설탕일 뿐이에요. 예시:
SELECT * FROM 'tmp/data/germany.osm.pbf' LIMIT 5;
Example
SELECT *
FROM ST_ReadOSM('tmp/data/germany.osm.pbf')
WHERE tags['highway'] != []
LIMIT 5;
----
┌──────────────────────┬────────┬──────────────────────┬─────────┬────────────────────┬────────────┬───────────┬────────────────────────┐
│ kind │ id │ tags │ refs │ lat │ lon │ ref_roles │ ref_types │
│ enum('node', 'way'… │ int64 │ map(varchar, varch… │ int64[] │ double │ double │ varchar[] │ enum('node', 'way', … │
├──────────────────────┼────────┼──────────────────────┼─────────┼────────────────────┼────────────┼───────────┼────────────────────────┤
│ node │ 122351 │ {bicycle=yes, butt… │ │ 53.5492951 │ 9.977553 │ │ │
│ node │ 122397 │ {crossing=no, high… │ │ 53.520990100000006 │ 10.0156924 │ │ │
│ node │ 122493 │ {TMC:cid_58:tabcd_… │ │ 53.129614600000004 │ 8.1970173 │ │ │
│ node │ 123566 │ {highway=traffic_s… │ │ 54.617268200000005 │ 8.9718171 │ │ │
│ node │ 125801 │ {TMC:cid_58:tabcd_… │ │ 53.070685000000005 │ 8.7819939 │ │ │
└──────────────────────┴────────┴──────────────────────┴─────────┴────────────────────┴────────────┴───────────┴────────────────────────┘
ST_ReadSHP
Signature
ST_ReadSHP (col0 VARCHAR, encoding VARCHAR)
Description
GDAL 라이브러리에 의존하지 않고 Shapefile을 읽어요.
ST_Read_Meta
Signature
ST_Read_Meta (col0 VARCHAR)
ST_Read_Meta (col0 VARCHAR[])
Description
GDAL 라이브러리를 사용해 다양한 지리공간 파일 형식의 메타데이터를 읽어요.
ST_Read_Meta 테이블 함수는 ST_Read 테이블 함수와 함께 제공되지만, 파일의 내용을 읽는 대신 메타데이터를 스캔해요. 기반 GDAL 라이브러리의 데이터 모델이 꽤 유연하므로, 대부분의 흥미로운 메타데이터는 반환되는 layers 컬럼 안에 있는데, 이는 DuckDB STRUCT와 LIST 타입의 다소 복잡한 중첩 구조예요.
Example
-- Find the coordinate reference system authority name and code for the first layers first geometry column in the file
SELECT
layers[1].geometry_fields[1].crs.auth_name as name,
layers[1].geometry_fields[1].crs.auth_code as code
FROM st_read_meta('../../tmp/data/amsterdam_roads.fgb');
더 알아보기 (Learn more)
spatial 확장의 전체 개요와 설치·로드 방법은 [spatial extension]({% link docs/current/core_extensions/spatial/overview.md %}) 문서를 참고해요. R-Tree 인덱스 사용법은 [R-Tree Indexes]({% link docs/current/core_extensions/spatial/r-tree_indexes.md %}) 문서를 확인해 보세요.