공간 함수

공간 함수 (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 좌표를 반환해요.

집계 함수 (Aggregate Functions)

함수 요약
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 입력 지오메트리 집합의 합집합을 계산해요.

매크로 함수 (Macro Functions)

함수 요약
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

테이블 함수 (Table Functions)

함수 요약
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_2DLINESTRING_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_limitjoin_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와 달리, 이 함수는 geom2geom1의 경계에 정확히 위치해도 true를 반환해요. 지오메트리는 항상 자기 자신을 ST_Contains 하지만, 자기 자신을 ST_ContainsProperly 하지는 않아요.


ST_ContainsProperly

Signature

BOOLEAN ST_ContainsProperly (geom1 GEOMETRY, geom2 GEOMETRY)

Description

첫 번째 지오메트리가 두 번째 지오메트리를 "제대로(properly)" 포함하면 true를 반환해요.

ST_Contains와 달리, geom2geom1의 경계에 정확히 위치해 있으면 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은 현재 WKBEWKB를 구분하지 않으므로, ST_GeomFromHEXWKBST_GeomFromHEXEWKB는 서로의 별칭일 뿐이에요.


ST_GeomFromHEXWKB

Signature

GEOMETRY ST_GeomFromHEXWKB (hexwkb VARCHAR)

Description

HEX(E)WKB 인코딩 문자열에서 GEOMETRY를 역직렬화해요.

DuckDB spatial은 현재 WKBEWKB를 구분하지 않으므로, ST_GeomFromHEXWKBST_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 STRUCTLIST 타입의 다소 복잡한 중첩 구조예요.

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 %}) 문서를 확인해 보세요.