지리 함수는 BigQuery GEOGRAPHY
값에 대해 작동하거나 이러한 값을 생성합니다. 지리 함수의 서명은 ST_
로 시작합니다. BigQuery는 지리 데이터 분석, 지형 지물 간의 공간적 관계 파악, GEOGRAPHY
구성 또는 조작에 사용할 수 있는 다음과 같은 함수를 지원합니다.
입력 인수가 NULL
이면 모든 BigQuery 지리 함수는 NULL
을 반환합니다.
카테고리
지리 함수는 함수 동작에 따라 다음과 같은 카테고리로 분류됩니다.
카테고리 | 함수 | 설명 |
생성자 |
ST_GEOGPOINT ST_MAKELINE ST_MAKEPOLYGON ST_MAKEPOLYGONORIENTED
|
좌표 또는 기존 지리로부터 새 지리 값을 빌드하는 함수입니다. |
파서 |
ST_GEOGFROMGEOJSON ST_GEOGFROMTEXT ST_GEOGFROMWKB ST_GEOGPOINTFROMGEOHASH |
WKT 및 GeoJSON 같은 외부 형식을 사용하여 지리를 생성하는 함수입니다. |
포맷터 |
ST_ASBINARY ST_ASGEOJSON ST_ASTEXT ST_GEOHASH
|
WKT 같은 외부 형식으로 지리를 내보내는 함수입니다. |
변환 |
ST_BOUNDARY ST_CENTROID ST_CENTROID_AGG (집계)ST_CLOSESTPOINT ST_CONVEXHULL ST_DIFFERENCE ST_DUMP ST_INTERSECTION ST_SIMPLIFY ST_SNAPTOGRID ST_UNION ST_UNION_AGG (집계) |
입력에 따라 새 지리를 생성하는 함수입니다. |
접근자 |
ST_DIMENSION ST_DUMP ST_ISCOLLECTION ST_ISEMPTY ST_NPOINTS ST_NUMPOINTS ST_X ST_Y |
지리 속성에 부작용 없이 액세스할 수 있는 함수입니다. |
조건자 |
ST_CONTAINS ST_COVEREDBY ST_COVERS ST_DISJOINT ST_DWITHIN ST_EQUALS ST_INTERSECTS ST_INTERSECTSBOX ST_TOUCHES ST_WITHIN |
두 지리 또는 지리의 속성 사이의 공간적 관계에 TRUE 또는 FALSE 를 반환하는 함수입니다. 이 함수는 일반적으로 필터 절에 사용됩니다.
|
조치 |
ST_AREA ST_DISTANCE ST_LENGTH ST_MAXDISTANCE ST_PERIMETER |
하나 이상의 지리에서 측정값을 계산하는 함수입니다. |
클러스터링 |
ST_CLUSTERDBSCAN
|
지리에서 클러스터링을 수행하는 함수입니다. |
ST_AREA
ST_AREA(geography_expression[, use_spheroid])
설명
입력 GEOGRAPHY
에서 다각형이 차지하는 면적을 제곱미터 단위로 반환합니다.
geography_expression
이 점 또는 선이면 0이 반환됩니다. geography_expression
이 컬렉션이면 컬렉션의 다각형 면적이 반환됩니다. 컬렉션에 다각형이 포함되지 않았으면 0이 반환됩니다.
선택적인 use_spheroid
매개변수는 이 함수의 거리 측정 방식을 결정합니다. use_spheroid
가 FALSE
이면 이 함수는 완전한 구의 표면에서 거리를 측정합니다.
use_spheroid
매개변수는 현재 FALSE
값만 지원합니다. use_spheroid
의 기본값은 FALSE
입니다.
반환 유형
FLOAT64
ST_ASBINARY
ST_ASBINARY(geography_expression)
설명
입력된 GEOGRAPHY
의 WKB 표현을 반환합니다.
WKB를 사용하여 GEOGRAPHY
를 구성하려면 ST_GEOGFROMWKB
를 참조하세요.
반환 유형
BYTES
ST_ASGEOJSON
ST_ASGEOJSON(geography_expression)
설명
입력된 GEOGRAPHY
의 RFC 7946 준수 GeoJSON 표현을 반환합니다.
BigQuery GEOGRAPHY
에는 구면 측지 모서리가 사용되는 반면 GeoJSON Geometry
객체에는 명시적으로 평면 모서리가 사용됩니다.
이 두 유형의 모서리가 서로 변환되도록 BigQuery는 필요한 경우 선에 점을 추가하여 변환된 일련의 모서리가 원래 모서리로부터 10미터 이내에서 유지되도록 합니다.
GeoJSON을 사용하여 GEOGRAPHY
를 구성하려면 ST_GEOGFROMGEOJSON
을 참조하세요.
반환 유형
STRING
ST_ASTEXT
ST_ASTEXT(geography_expression)
설명
입력된 GEOGRAPHY
의 WKT 표현을 반환합니다.
WKT를 사용하여 GEOGRAPHY
를 구성하려면 ST_GEOGFROMTEXT
를 참조하세요.
반환 유형
STRING
ST_BOUNDARY
ST_BOUNDARY(geography_expression)
설명
지정된 입력 GEOGRAPHY
에 있는 각 구성요소 경계의 합집합을 포함하는 단일 GEOGRAPHY
를 반환합니다.
GEOGRAPHY
의 각 구성요소 경계는 다음과 같이 정의됩니다.
- 점의 경계는 비어 있습니다.
- 유도선의 경계는 유도선의 끝점으로 구성됩니다.
- 다각형의 경계는 다각형 셸을 형성하는 유도선과 각 다각형 구멍으로 구성됩니다.
반환 유형
GEOGRAPHY
ST_CENTROID
ST_CENTROID(geography_expression)
설명
입력된 GEOGRAPHY
의 중심을 단일 점 GEOGRAPHY
로 반환합니다.
GEOGRAPHY
의 중심은 GEOGRAPHY
에서 가장 고차원인 구성요소의 가중 평균 중심입니다. 각 차원의 구성요소 중심은 다음과 같이 정의됩니다.
- 점의 중심은 입력 좌표의 산술 평균입니다.
- 유도선의 중심은 길이에 따라 가중치가 적용된 모든 모서리의 중심입니다. 각 모서리의 중심은 모서리의 측지 중간점입니다.
- 다각형의 중심은 질량 중심입니다.
입력 GEOGRAPHY
가 비어 있으면 빈 GEOGRAPHY
가 반환됩니다.
제약조건
드물지만 GEOGRAPHY
의 중심을 지구 표면의 단일 점으로 정의할 수 없는 경우에는 확정된 점이나 임의의 점이 반환됩니다. 이러한 경우는 대척점 쌍의 중심과 같이 중심이 정확히 지구 중심에 존재하는 경우에만 발생할 수 있으며 발생 가능성이 거의 없습니다.
반환 유형
GEOGRAPHY
ST_CENTROID_AGG
ST_CENTROID_AGG(geography)
설명
입력 GEOGRAPHY
집합의 중심을 단일 점 GEOGRAPHY
로 계산합니다.
입력 GEOGRAPHY
집합의 중심은 각 개별 GEOGRAPHY
중심의 가중 평균입니다. 전체 집합의 중심을 계산하는 데는 입력에 있는 가장 고차원인 GEOGRAPHY
만 사용됩니다. 예를 들어 입력에 선이 있는 GEOGRAPHY
와 점만 있는 GEOGRAPHY
가 모두 포함되었으면 선이 있는 경우가 가장 차원이 높으므로 ST_CENTROID_AGG
는 이 GEOGRAPHY
의 가중 평균을 반환합니다. 이 예시에서 ST_CENTROID_AGG
는 집계 중심을 계산할 때 점만 있는 GEOGRAPHY
를 무시합니다.
ST_CENTROID_AGG
는 입력된 GEOGRAPHY
의 NULL
값을 무시합니다.
ST_CENTROID_AGG
의 비집계 버전과 개별 GEOGRAPHY
값의 중심에 대한 정의는 ST_CENTROID
를 참조하세요.
반환 유형
GEOGRAPHY
예시
다음 쿼리는 GEOGRAPHY
값 집합의 집계 중심을 계산합니다. 첫 번째 쿼리의 입력에는 점만 포함되어 있으므로 각 값이 집계 중심을 계산하는 데 사용됩니다. 또한 ST_UNION_AGG
결과에 대해 ST_CENTROID
를 호출할 경우 ST_CENTROID_AGG
와 달리 합집합을 구하는 과정에서 중복 요소가 삭제되므로 ST_CENTROID_AGG
와 같지 않습니다. 두 번째 쿼리의 입력에는 차원이 혼합되었으므로 집합에서 가장 고차원 값인 선만 집계 중심에 영향을 줍니다.
SELECT ST_CENTROID_AGG(points) AS st_centroid_agg,
ST_CENTROID(ST_UNION_AGG(points)) AS centroid_of_union
FROM UNNEST([ST_GEOGPOINT(1, 5),
ST_GEOGPOINT(1, 2),
ST_GEOGPOINT(1, -1),
ST_GEOGPOINT(1, -1)]) points;
+---------------------------+-------------------+
| st_centroid_agg | centroid_of_union |
+---------------------------+-------------------+
| POINT(1 1.24961422620969) | POINT(1 2) |
+---------------------------+-------------------+
SELECT ST_CENTROID_AGG(points) AS st_centroid_agg
FROM UNNEST([ST_GEOGPOINT(50, 26),
ST_GEOGPOINT(34, 33.3),
ST_GEOGFROMTEXT('LINESTRING(0 -1, 0 1)')
ST_GEOGFROMTEXT('LINESTRING(0 1, 0 3)')]) points;
+-----------------+
| st_centroid_agg |
+-----------------+
| POINT(0 1) |
+-----------------+
ST_CLOSESTPOINT
ST_CLOSESTPOINT(geography_1, geography_2[, use_spheroid])
설명
geography_1
상에서 geography_2
와의 거리가 가능한 한 가장 짧은 한 점을 포함하는 GEOGRAPHY
를 반환합니다. 이는 ST_CLOSESTPOINT
에서 반환된 점과 geography_2
사이의 거리가 geography_1
에 있는 어떤 점과 geography_2
사이의 거리보다 짧거나 같다는 의미입니다.
입력 GEOGRAPHY
중 어느 하나라도 비어 있으면 ST_CLOSESTPOINT
는 NULL
을 반환합니다.
선택적인 use_spheroid
매개변수는 이 함수의 거리 측정 방식을 결정합니다. use_spheroid
가 FALSE
이면 이 함수는 완전한 구의 표면에서 거리를 측정합니다.
use_spheroid
매개변수는 현재 FALSE
값만 지원합니다. use_spheroid
의 기본값은 FALSE
입니다.
반환 유형
GEOGRAPHY
ST_CLUSTERDBSCAN
ST_CLUSTERDBSCAN(geography_column, epsilon, minimum_geographies) OVER (...)
지리 열에서 DBSCAN 클러스터링을 수행합니다. 0부터 시작하는 클러스터 번호를 반환합니다.
입력 매개변수
geography_column
: 클러스터링된GEOGRAPHY
의 열입니다.epsilon
: 코어 값 주변의 미터로 측정된 반경을 지정하는 epsilon입니다. 음수가 아닌FLOAT64
값입니다.minimum_geographies
: 단일 클러스터의 최소 지리 수를 지정합니다. 고밀도 입력만 클러스터를 형성하고, 그렇지 않으면 노이즈로 분류됩니다. 음수가 아닌INT64
값입니다.OVER
: 범위를 지정합니다. 분석 함수를 참조하세요.OVER
절과ST_CLUSTERDBSCAN
을 함께 사용하면 다음과 호환됩니다.PARTITION BY
: 선택사항.ORDER BY
: 선택사항.window_frame_clause
: 허용되지 않습니다.
지리 유형 및 DBSCAN 알고리즘
DBSCAN 알고리즘은 고밀도 데이터 클러스터를 식별하고 저밀도 노이즈 영역의 이상점을 표시합니다. geography_column
을 통해 전달된 지리 정보는 DBSCAN 알고리즘으로, 다음 세 가지 방법 중 하나로 분류됩니다.
- 핵심 값: 지리는 자체 지리 값을 포함하여
minimum_geographies
지리에서epsilon
거리 내에 있는 경우 핵심 값입니다. 핵심 값은 새 클러스터를 시작하거나epsilon
거리 내에 핵심 값과 동일한 클러스터에 추가됩니다. 핵심 값은 클러스터에서epsilon
거리 내에 있는 다른 모든 핵심 및 경계 값과 함께 그룹화됩니다. - 경계 값: 지리가 핵심 값의 epsilon 거리 내에 있는 경우 경계 값입니다.
epsilon
거리 내 핵심 값과 동일한 클러스터에 추가됩니다. 경계 값은 둘 이상의 클러스터에서epsilon
거리 이내일 수 있습니다. 이 경우 한 클러스터에 임의로 할당할 수 있으며 함수에서 후속 호출 시 동일한 결과를 생성합니다. - 노이즈: 핵심 값이나 경계 값도 아닌 경우 지리는 노이즈입니다.
노이즈 값은
NULL
클러스터에 할당됩니다. 빈GEOGRAPHY
는 언제나 항상 노이즈로 분류됩니다.
제약조건
minimum_geographies
인수는 음수가 아닌INT64
이며,epsilon
은 음수가 아닌FLOAT64
입니다.EMPTY
지리 객체는 클러스터에 조인할 수 없습니다.- 경계 값에 대해 여러 클러스터링 할당을 수행할 수 있습니다. 지리가 경계 값인 경우
ST_CLUSTERDBSCAN
이 임의의 유효한 클러스터에 이 값을 할당합니다.
반환 유형
지리 열의 각 지리에 대한 INT64
입니다.
예시
이 예시에서는 minimum_geographies
인수가 1인 반경 100,000미터로 DBSCAN 클러스터링을 수행합니다. 분석 대상 지리는 점, 선, 다각형이 혼합되어 있습니다.
WITH Geos as
(SELECT 1 as row_id, st_geogfromtext('point empty') as geo UNION ALL
SELECT 2, st_geogfromtext('multipoint(1 1, 2 2, 4 4, 5 2)') UNION ALL
SELECT 3, st_geogfromtext('point(14 15)') UNION ALL
SELECT 4, st_geogfromtext('linestring(40 1, 42 34, 44 39)') UNION ALL
SELECT 5, st_geogfromtext('polygon((40 2, 40 1, 41 2, 40 2))'))
SELECT row_id, geo, ST_CLUSTERDBSCAN(geo, 1e5, 1) OVER () AS cluster_num FROM
Geos ORDER BY row_id
+--------+-----------------------------------+-------------+
| row_id | geo | cluster_num |
+--------+-----------------------------------+-------------+
| 1 | GEOMETRYCOLLECTION EMPTY | NULL |
| 2 | MULTIPOINT(1 1, 2 2, 5 2, 4 4) | 0 |
| 3 | POINT(14 15) | 1 |
| 4 | LINESTRING(40 1, 42 34, 44 39) | 2 |
| 5 | POLYGON((40 2, 40 1, 41 2, 40 2)) | 2 |
+--------+-----------------------------------+-------------+
ST_CONTAINS
ST_CONTAINS(geography_1, geography_2)
설명
geography_2
의 어떤 점도 geography_1
외부에 있지 않고 내부가 교차하면 TRUE
를 반환하고, 그렇지 않으면 FALSE
를 반환합니다.
참고: GEOGRAPHY
에는 고유한 경계가 포함되어 있지 않습니다. ST_COVERS
와 비교하세요.
반환 유형
BOOL
예시
다음 쿼리는 다각형 POLYGON((1 1, 20 1, 10 20, 1 1))
에 각각 다각형의 외부, 경계, 내부에 위치한 3개의 점 (0, 0)
, (1, 1)
, (10, 10)
이 포함되어 있는지 테스트합니다.
SELECT
ST_GEOGPOINT(i, i) AS p,
ST_CONTAINS(ST_GEOGFROMTEXT('POLYGON((1 1, 20 1, 10 20, 1 1))'),
ST_GEOGPOINT(i, i)) AS `contains`
FROM UNNEST([0, 1, 10]) AS i;
+--------------+----------+
| p | contains |
+--------------+----------+
| POINT(0 0) | false |
| POINT(1 1) | false |
| POINT(10 10) | true |
+--------------+----------+
ST_CONVEXHULL
ST_CONVEXHULL(geography_expression)
설명
GEOGRAPHY
입력에 대한 볼록 Hull을 반환합니다.
볼록 Hull은 입력을 처리하는 가장 작은 볼록 GEOGRAPHY
입니다. GEOGRAPHY
의 모든 점 쌍에서 점을 연결하는 측지선 에지도 동일한 GEOGRAPHY
에 포함되는 경우 GEOGRAPHY
는 볼록입니다.
대부분의 경우 볼록 Hull은 단일 다각형으로 구성됩니다. 주목할만한 에지 케이스에는 다음이 포함됩니다.
- 또한 단일 점의 볼록 Hull도 점입니다.
- 공선점이 두 개 이상 있는 볼록 Hull은 해당 유도선이 볼록한 한 유도선입니다.
GEOGRAPHY
입력이 반구보다 더 넓게 걸쳐 있으면 볼록 Hull은 구체 전체가 됩니다. 여기에는 대척점 쌍을 포함해 모든 입력이 포함됩니다.- 입력이
NULL
이거나 빈GEOGRAPHY
인 경우ST_CONVEXHULL
은NULL
을 반환합니다.
반환 유형
GEOGRAPHY
예시
ST_CONVEXHULL
에서 반환된 볼록 Hull은 입력에 따라 점, 유도선 또는 다각형이 될 수 있습니다.
WITH Geographies AS
(SELECT ST_GEOGFROMTEXT('POINT(1 1)') AS g UNION ALL
SELECT ST_GEOGFROMTEXT('LINESTRING(1 1, 2 2)') AS g UNION ALL
SELECT ST_GEOGFROMTEXT('MULTIPOINT(2 11, 4 12, 0 15, 1 9, 1 12)') AS g)
SELECT
g AS input_geography,
ST_CONVEXHULL(g) AS convex_hull
FROM Geographies;
+-----------------------------------------+--------------------------------------------------------+
| input_geography | convex_hull |
+-----------------------------------------+--------------------------------------------------------+
| POINT(1 1) | POINT(0.999999999999943 1) |
| LINESTRING(1 1, 2 2) | LINESTRING(2 2, 1.49988573656168 1.5000570914792, 1 1) |
| MULTIPOINT(1 9, 4 12, 2 11, 1 12, 0 15) | POLYGON((1 9, 4 12, 0 15, 1 9)) |
+-----------------------------------------+--------------------------------------------------------+
ST_COVEREDBY
ST_COVEREDBY(geography_1, geography_2)
설명
geography_1
또는 geography_2
가 비어 있으면 FALSE
를 반환합니다. geography_1
의 어떠한 점도 geography_2
의 외부에 있지 않으면 TRUE
를 반환합니다.
두 GEOGRAPHY
가 a
, b
일 때 ST_COVEREDBY(a, b)
는 ST_COVERS
(b, a)
와 동일한 결과를 반환합니다. 인수 순서가 반대라는 점에 유의하세요.
반환 유형
BOOL
ST_COVERS
ST_COVERS(geography_1, geography_2)
설명
geography_1
또는 geography_2
가 비어 있으면 FALSE
를 반환합니다.
geography_2
의 어떠한 점도 geography_1
의 외부에 있지 않으면 TRUE
를 반환합니다.
반환 유형
BOOL
예시
다음 쿼리는 다각형 POLYGON((1 1, 20 1, 10 20, 1 1))
에 각각 다각형의 외부, 경계, 내부에 위치한 3개의 점 (0, 0)
, (1, 1)
, (10, 10)
이 포함되어 있는지 테스트합니다.
SELECT
ST_GEOGPOINT(i, i) AS p,
ST_COVERS(ST_GEOGFROMTEXT('POLYGON((1 1, 20 1, 10 20, 1 1))'),
ST_GEOGPOINT(i, i)) AS `covers`
FROM UNNEST([0, 1, 10]) AS i;
+--------------+--------+
| p | covers |
+--------------+--------+
| POINT(0 0) | false |
| POINT(1 1) | true |
| POINT(10 10) | true |
+--------------+--------+
ST_DIFFERENCE
ST_DIFFERENCE(geography_1, geography_2)
설명
geography_1
과 geography_2
의 점 차집합을 나타내는 GEOGRAPHY
를 반환합니다.
geometry_1
이 geometry_2
에 완전히 포함되어 있으면 ST_DIFFERENCE
는 빈 GEOGRAPHY
를 반환합니다.
제약조건
BigQuery GEOGRAPHY
가 나타내는 기본 도형 객체는 닫힌 점 집합에 해당합니다. 따라서 ST_DIFFERENCE
는 geography_1
과 geography_2
의 닫힌 점 차집합을 구하는 것입니다. 이는 geography_1
과 geography_2
가 교차할 경우 geography_2
의 경계 일부가 차집합에 포함될 수 있다는 의미입니다.
반환 유형
GEOGRAPHY
ST_DIMENSION
ST_DIMENSION(geography_expression)
설명
입력 GEOGRAPHY
의 요소 중 가장 고차원인 요소의 차원 수를 반환합니다.
가능한 각 요소의 차원은 다음과 같습니다.
- 점의 차원 수는
0
입니다. - 유도선의 차원 수는
1
입니다. - 다각형의 차원 수는
2
입니다.
입력 GEOGRAPHY
가 비어 있으면 ST_DIMENSION
은 -1
을 반환합니다.
반환 유형
INT64
ST_DISJOINT
ST_DISJOINT(geography_1, geography_2)
설명
geography_1
과 geography_2
의 교차 영역이 비어 있으면, 즉 geography_1
과 geography_2
에 어떠한 점도 나타나지 않으면 TRUE
를 반환합니다.
ST_DISJOINT
는 ST_INTERSECTS
의 논리적 부정입니다.
반환 유형
BOOL
ST_DISTANCE
ST_DISTANCE(geography_1, geography_2[, use_spheroid])
설명
비어 있지 않은 두 GEOGRAPHY
간의 최단 거리를 미터 단위로 반환합니다.
입력 GEOGRAPHY
중 어느 하나라도 비어 있으면 ST_DISTANCE
는 NULL
을 반환합니다.
선택적인 use_spheroid
매개변수는 이 함수의 거리 측정 방식을 결정합니다. use_spheroid
가 FALSE
이면 이 함수는 완전한 구의 표면에서 거리를 측정합니다.
use_spheroid
매개변수는 현재 FALSE
값만 지원합니다. use_spheroid
의 기본값은 FALSE
입니다.
반환 유형
FLOAT64
ST_DUMP
ST_DUMP(geography[, dimension])
설명
각 요소가 GEOGRAPHY
입력의 구성요소인 단순 GEOGRAPHY
의 ARRAY
를 반환합니다. 단순 GEOGRAPHY
는 단일점, 유도선 또는 다각형으로 구성됩니다. GEOGRAPHY
입력이 단순이면 결과는 단일 요소입니다. GEOGRAPHY
입력이 컬렉션이면 ST_DUMP
는 컬렉션의 각 구성요소에 대해 단순 GEOGRAPHY
가 있는 ARRAY
를 반환합니다.
dimension
가 제공되면 이 함수는 상응하는 차원의 GEOGRAPHY
만 반환합니다. 차원이 -1이며 dimension
을 생략하는 것과 같습니다.
반환 유형
ARRAY
예시
다음 예시에서는 ST_DUMP
가 복잡한 지리 내에서 단순 지리를 반환하는 방법을 보여줍니다.
WITH example AS (
SELECT ST_GeogFromText('POINT(0 0)') AS geography
UNION ALL
SELECT ST_GeogFromText('MULTIPOINT(0 0, 1 1)') AS geography
UNION ALL
SELECT ST_GeogFromText('GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(1 2, 2 1))'))
SELECT
geography AS original_geography,
ST_DUMP(geography) AS dumped_geographies
FROM example
+-------------------------------------+-------------------------------+
| original_geographies | dumped_geographies |
+-------------------------------------+-------------------------------+
| POINT(0 0) | [POINT(0 0)] |
+-------------------------------------+-------------------------------+
| MULTIPOINT(0 0, 1 1) | [POINT(0 0), POINT(1 1)] |
+-------------------------------------+-------------------------------+
| GEOMETRYCOLLECTION(POINT(0 0), | [POINT(0 0), |
| LINESTRING(1 2, 2 1)) | LINESTRING(1 2, 2 1)] |
+-------------------------------------+-------------------------------+
다음 예시에서는 차원 인수를 갖는 ST_DUMP
가 지정된 차원의 단순 지리를 반환하는 방법을 보여줍니다.
WITH example AS (
SELECT ST_GeogFromText('GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(1 2, 2 1))') AS geography)
SELECT
geography AS original_geography,
ST_DUMP(geography, 1) AS dumped_geographies
FROM example
+-------------------------------------+------------------------------+
| original_geographies | dumped_geographies |
+-------------------------------------+------------------------------+
| GEOMETRYCOLLECTION(POINT(0 0), | [LINESTRING(1 2, 2 1)] |
| LINESTRING(1 2, 2 1)) | |
+-------------------------------------+------------------------------+
ST_DWITHIN
ST_DWITHIN(geography_1, geography_2, distance[, use_spheroid])
설명
geography_1
에 있는 1개 이상의 점과 geography_2
에 있는 한 점 사이의 거리가 distance
인수로 지정된 거리보다 짧거나 같으면 TRUE
를 반환하고, 그렇지 않으면 FALSE
를 반환합니다. 두 입력 GEOGRAPHY
중 어느 하나가 비어 있으면 ST_DWithin
은 FALSE
를 반환합니다. 지정된 distance
는 지구 표면 상의 미터 단위 거리입니다.
선택적인 use_spheroid
매개변수는 이 함수의 거리 측정 방식을 결정합니다. use_spheroid
가 FALSE
이면 이 함수는 완전한 구의 표면에서 거리를 측정합니다.
use_spheroid
매개변수는 현재 FALSE
값만 지원합니다. use_spheroid
의 기본값은 FALSE
입니다.
반환 유형
BOOL
ST_EQUALS
ST_EQUALS(geography_1, geography_2)
설명
geography_1
과 geography_2
가 동일한 값을 나타내면 TRUE
를 반환합니다.
동일한 값: GEOGRAPHY
. 더 정확히 말해 이는 다음 조건 중 하나가 충족됨을 의미합니다.
+ ST_COVERS(geography_1, geography_2) = TRUE
및 ST_COVERS(geography_2,
geography_1) = TRUE
+ geography_1
및 geography_2
둘 다 비어 있습니다.
따라서 점과 꼭짓점의 순서가 다르더라도 동일한 도형 구조를 나타내기만 하면 2개의 GEOGRAPHY
가 동일할 수 있습니다.
제약조건
ST_EQUALS
는 전환 함수가 아닐 수도 있습니다.
반환 유형
BOOL
ST_GEOGFROMGEOJSON
ST_GEOGFROMGEOJSON(geojson_string [, make_valid => constant_expression])
설명
입력된 GeoJSON 표현에 해당하는 GEOGRAPHY
값을 반환합니다.
ST_GEOGFROMGEOJSON
은 RFC 7946을 준수하는 입력을 받습니다.
매개변수 make_valid
가 TRUE
로 설정되면 이 함수는 Open Geospatial Consortium 시맨틱스를 준수하지 않는 다각형 복구하려고 합니다.
이 매개변수는 명명된 인수 구문을 사용하며 make_valid => argument_value
구문을 사용하여 지정해야 합니다.
BigQuery GEOGRAPHY
에는 구면 측지 모서리가 사용되는 반면 GeoJSON Geometry
객체에는 명시적으로 평면 모서리가 사용됩니다.
이 두 유형의 모서리가 서로 변환되도록 BigQuery는 필요한 경우 선에 점을 추가하여 변환된 일련의 모서리가 원래 모서리로부터 10미터 이내에서 유지되도록 합니다.
GEOGRAPHY
를 GeoJSON 형식으로 만들려면 ST_ASGEOJSON
을 참조하세요.
제약조건
입력에는 다음과 같은 제약조건이 적용됩니다.
ST_GEOGFROMGEOJSON
은 JSON 도형 조각만 허용하며 전체 JSON 문서를 수집하는 데 사용할 수는 없습니다.- 입력된 JSON 조각은 GeoJSON 도형 유형으로 구성되어야 하며, 여기에는
Point
,MultiPoint
,LineString
,MultiLineString
,Polygon
,MultiPolygon
,GeometryCollection
이 포함됩니다.Feature
,FeatureCollection
등의 다른 GeoJSON 유형이 있으면 오류가 발생합니다. - GeoJSON 도형 유형의
coordinates
멤버에 지정되는 위치는 정확히 2개의 요소로 구성되어야 합니다. 첫 번째 요소는 경도이고 두 번째 요소는 위도입니다. 따라서ST_GEOGFROMGEOJSON
은coordinates
구성원의 위치에 선택적인 세 번째 요소를 지원하지 않습니다.
반환 유형
GEOGRAPHY
ST_GEOGFROMTEXT
서명 1
ST_GEOGFROMTEXT(wkt_string[, oriented])
설명
입력된 WKT 표현에 해당하는 GEOGRAPHY
값을 반환합니다.
이 함수는 BOOL
, oriented
유형의 선택적 매개변수를 지원합니다. 이 매개변수가 TRUE
로 설정되었으면 입력에 포함된 모든 다각형의 방향을 특정 방식으로 간주하게 됩니다. 즉, 다각형 경계를 입력 꼭짓점의 순서대로 이동할 때 왼쪽 영역이 다각형의 내부가 됩니다. 이 경우 WKT는 반구보다 큰 다각형을 나타낼 수 있습니다. oriented
가 FALSE
이거나 생략되었으면 이 함수는 보다 작은 면적의 다각형을 반환합니다.
oriented=TRUE
인 ST_GEOGFROMTEXT
와 유사한 ST_MAKEPOLYGONORIENTED
도 참조하세요.
GEOGRAPHY
를 WKT 형식으로 만들려면 ST_ASTEXT
를 사용합니다.
제약조건
- 모든 입력 모서리는 평면 직선이 아닌 구면 측지선으로 간주됩니다. 평면 투영 데이터를 읽으려면
ST_GEOGFROMGEOJSON
을 사용하는 것이 좋습니다. 구면 측지선과 평면 선 간의 차이점에 대한 자세한 내용은 좌표계와 에지를 참조하세요. - 이 함수는
Z
서픽스가 있는 3차원 도형이나M
서픽스가 있는 선형 참조 시스템 도형을 지원하지 않습니다. - 이 함수는 도형 기본 요소 및 멀티파트 도형만 지원합니다. 특히 Point, MultiPoint, LineString, MultiLineString, Polygon, MultiPolygon, GeometryCollection만 지원합니다.
반환 유형
GEOGRAPHY
예시
다음 쿼리는 WKT 문자열 POLYGON((0 0, 0 2, 2 2, 0 2, 0 0))
을 방향이 지정되지 않은 다각형과 방향이 지정된 다각형으로 읽고 각 결과에 점 (1, 1)
이 포함되었는지 확인합니다.
WITH polygon AS (SELECT 'Polygon((0 0, 0 2, 2 2, 2 0, 0 0))' AS p)
SELECT
ST_CONTAINS(ST_GEOGFROMTEXT(p), ST_GEOGPOINT(1, 1)) AS fromtext_default,
ST_CONTAINS(ST_GEOGFROMTEXT(p, FALSE), ST_GEOGPOINT(1, 1)) AS non_oriented,
ST_CONTAINS(ST_GEOGFROMTEXT(p, TRUE), ST_GEOGPOINT(1, 1)) AS oriented
FROM polygon;
+-------------------+---------------+-----------+
| fromtext_default | non_oriented | oriented |
+-------------------+---------------+-----------+
| true | true | false |
+-------------------+---------------+-----------+
서명 2
ST_GEOGFROMTEXT(wkt_string[, oriented => boolean_constant_1]
[, planar => boolean_constant_2] [, make_valid => boolean_constant_3])
설명
입력된 WKT 표현에 해당하는 GEOGRAPHY
값을 반환합니다.
이 함수는 BOOL
유형(oriented
, planar
, make_valid
)의 선택적 매개변수 세 가지를 지원합니다.
이 서명은 명명된 인수 구문을 사용하며 매개변수는 어떠한 순서로든 parameter_name => parameter_value
구문을 사용하여 지정해야 합니다.
oriented
매개변수가 TRUE
로 설정되었으면 입력에 포함된 모든 다각형의 방향을 특정 방식으로 간주하게 됩니다. 즉, 입력 꼭짓점의 순서대로 다각형 경계를 따라 이동할 때 왼쪽 영역이 다각형의 내부가 됩니다. 이 경우 WKT는 반구보다 큰 다각형을 나타낼 수 있습니다. oriented
가 FALSE
이거나 생략되었으면 이 함수는 보다 작은 면적의 다각형을 반환합니다.
oriented=TRUE
이 있는 ST_GEOGFROMTEXT
와 유사한 ST_MAKEPOLYGONORIENTED
도 참조하세요.
매개변수 planar
이 TRUE
로 설정되면 선 문자열과 다각형의 모서리가 BigQuery 기본 구면 측지선 시맨틱스 대신 평면 지도 시맨틱스를 사용하는 것으로 가정합니다. 구면 측지선과 평면 선 간의 차이점에 대한 자세한 내용은 좌표계와 에지를 참조하세요.
매개변수 make_valid
가 TRUE
로 설정되면 이 함수는 Open Geospatial Consortium 시맨틱스를 준수하지 않는 다각형 복구하려고 합니다.
GEOGRAPHY
를 WKT 형식으로 만들려면 ST_ASTEXT
를 사용합니다.
제약조건
- 모든 입력 모서리는 기본적으로 평면 직선이 아닌 구면 측지선으로 간주됩니다. 평면 투영 데이터를 읽으려면
planar => TRUE
인수를 전달하거나ST_GEOGFROMGEOJSON
를 사용하는 것이 좋습니다. 구면 측지선과 평면 선 간의 차이점에 대한 자세한 내용은 좌표계와 에지를 참조하세요. - 이 함수는
Z
서픽스가 있는 3차원 도형이나M
서픽스가 있는 선형 참조 시스템 도형을 지원하지 않습니다. - 이 함수는 도형 기본 요소 및 멀티파트 도형만 지원합니다. 특히 Point, MultiPoint, LineString, MultiLineString, Polygon, MultiPolygon, GeometryCollection만 지원합니다.
oriented
와planar
가 동시에TRUE
와 같을 수는 없습니다.oriented
와make_valid
가 동시에TRUE
와 같을 수는 없습니다.
예시
다음 쿼리는 WKT 문자열 POLYGON((0 0, 0 2, 2 2, 0 2, 0 0))
을 방향이 지정되지 않은 다각형과 방향이 지정된 다각형으로 읽고 각 결과에 점 (1, 1)
이 포함되었는지 확인합니다.
WITH polygon AS (SELECT 'Polygon((0 0, 0 2, 2 2, 2 0, 0 0))' AS p)
SELECT
ST_CONTAINS(ST_GEOGFROMTEXT(p), ST_GEOGPOINT(1, 1)) AS fromtext_default,
ST_CONTAINS(ST_GEOGFROMTEXT(p, oriented => FALSE), ST_GEOGPOINT(1, 1)) AS non_oriented,
ST_CONTAINS(ST_GEOGFROMTEXT(p, oriented => TRUE), ST_GEOGPOINT(1, 1)) AS oriented
FROM polygon;
+-------------------+---------------+-----------+
| fromtext_default | non_oriented | oriented |
+-------------------+---------------+-----------+
| true | true | false |
+-------------------+---------------+-----------+
다음 쿼리는 잘못된 다각형이 있는 WKT 문자열을 GEOGRAPHY
으로 변환합니다. WKT 문자열은 유효한 다각형의 두 가지 속성을 위반합니다. 즉, 다각형을 설명하는 루프가 닫히지 않았으며 자체 교차로가 포함되어 있습니다. make_valid
옵션을 사용하면 ST_GeogFromText
가 이를 여러 다각형 형태로 성공적으로 변환합니다.
WITH data AS (
SELECT 'polygon((0 -1, 2 1, 2 -1, 0 1))' wkt)
SELECT
SAFE.ST_GeogFromText(wkt) as geom,
SAFE.ST_GeogFromText(wkt, make_valid => TRUE) as valid_geom
FROM data
+------+-----------------------------------------------------------------+
| geom | valid_geom |
+------+-----------------------------------------------------------------+
| NULL | MULTIPOLYGON(((0 -1, 1 0, 0 1, 0 -1)), ((1 0, 2 -1, 2 1, 1 0))) |
+------+-----------------------------------------------------------------+
ST_GEOGFROMWKB
ST_GEOGFROMWKB(wkb_bytes)
설명
입력된 WKB 표현에 해당하는 GEOGRAPHY
값을 반환합니다.
GEOGRAPHY
를 WKB 형식으로 만들려면 ST_ASBINARY
를 사용합니다.
제약조건
모든 입력 모서리는 평면 직선이 아닌 구면 측지선으로 간주됩니다. 평면 투영 데이터를 읽으려면 ST_GEOGFROMGEOJSON
을 사용하는 것이 좋습니다.
반환 유형
GEOGRAPHY
ST_GEOGPOINT
ST_GEOGPOINT(longitude, latitude)
설명
단일 점을 사용하여 GEOGRAPHY
를 생성합니다.
ST_GEOGPOINT
는 지정된 FLOAT64
경도 및 위도 매개변수를 사용하여 단일 점을 생성한 후 GEOGRAPHY
값으로 반환합니다.
제약조건
- 위도 범위는 [-90, 90]입니다. 위도가 이 범위를 벗어나면 오류가 발생합니다.
- 경도는 [-180, 180] 범위를 벗어나도 됩니다.
ST_GEOGPOINT
는 입력 경도를 360으로 나눈 나머지를 사용하여 [-180, 180] 범위 내의 경도를 구합니다.
반환 유형
GEOGRAPHY
ST_GEOGPOINTFROMGEOHASH
ST_GEOGPOINTFROMGEOHASH(geohash)
설명
GeoHash에 정의된 경계 상자의 가운데 점에 해당하는 GEOGRAPHY
값을 반환합니다.
반환 유형
GEOGRAPHY
ST_GEOHASH
ST_GEOHASH(geography_expression, maxchars)
설명
geography_expression
의 GeoHash 표현을 반환합니다. 반환되는 GeoHash에는 최대 maxchars
자(영문 기준)가 포함됩니다. 이보다 적은 수의 문자는 더 낮은 정밀도에 해당합니다. 달리 설명하면 더 큰 경계 상자에 해당합니다.
빈 GEOGRAPHY
객체에 대한 ST_GeoHash는 NULL
을 반환합니다.
제약조건
- 단일 점을 나타내는
GEOGRAPHY
객체만 지원됩니다. maxchars
의 최댓값은 20입니다.
예시
시애틀 센터의 GeoHash를 10자 정밀도로 반환합니다.
SELECT ST_GEOHASH(ST_GEOGPOINT(-122.35, 47.62), 10) geohash
+--------------+
| geohash |
+--------------+
| c22yzugqw7 |
+--------------+
반환 유형
STRING
ST_INTERSECTION
ST_INTERSECTION(geography_1, geography_2)
설명
두 입력 GEOGRAPHY
의 점 교집합을 나타내는 GEOGRAPHY
를 반환합니다. 따라서 교집합의 모든 점은 geography_1
과 geography_2
모두에 나타납니다.
두 입력 GEOGRAPHY
에 공통 요소가 없는 경우, 즉 입력 geometry_1
과 geometry_2
모두에 공통적으로 있는 점이 없는 경우에는 빈 GEOGRAPHY
가 반환됩니다.
관련 조건자 함수는 ST_INTERSECTS, ST_DISJOINT를 참조하세요.
반환 유형
GEOGRAPHY
ST_INTERSECTS
ST_INTERSECTS(geography_1, geography_2)
설명
geography_1
과 geography_2
의 점 교집합이 비어 있지 않으면 TRUE
를 반환합니다. 따라서 입력된 두 GEOGRAPHY
에 나타나는 점이 1개 이상 있으면 이 함수는 TRUE
를 반환합니다.
ST_INTERSECTS
가 TRUE
를 반환하면 ST_DISJOINT
는 FALSE
를 반환합니다.
반환 유형
BOOL
ST_INTERSECTSBOX
ST_INTERSECTSBOX(geography, lng1, lat1, lng2, lat2)
설명
geography
가 [lng1, lng2]
와 [lat1, lat2]
사이의 직사각형과 교차하면 TRUE
를 반환합니다. 직사각형의 모서리는 상수 경도 및 위도 선을 따릅니다. lng1
및 lng2
는 직사각형의 경계를 이루는 최소 및 최대 경도 선을 지정하고, lat1
및 lat2
은 직사각형의 경계를 이루는 최소 및 최대 상수 위도 선을 지정합니다.
모든 경도 및 위도 인수는 도 단위로 지정합니다.
제약조건
입력 인수에는 다음과 같은 제약조건이 적용됩니다.
- 위도는 도 단위로
[-90, 90]
범위여야 합니다. - 경도는 도 단위로
[-180, 180]
범위여야 합니다.
반환 유형
BOOL
ST_ISCOLLECTION
ST_ISCOLLECTION(geography_expression)
설명
점, 유도선, 다각형의 총 개수가 1보다 크면 TRUE
를 반환합니다.
빈 GEOGRAPHY
는 컬렉션이 아닙니다.
반환 유형
BOOL
ST_ISEMPTY
ST_ISEMPTY(geography_expression)
설명
지정된 GEOGRAPHY
가 비어 있으면, 즉 GEOGRAPHY
에 점, 선 또는 다각형이 전혀 포함되어 있지 않으면 TRUE
를 반환합니다.
참고: 빈 BigQuery GEOGRAPHY
는 특정 도형과 연결되어 있지 않습니다. 예를 들어 표현식 ST_GEOGFROMTEXT('POINT EMPTY')
와 ST_GEOGFROMTEXT('GEOMETRYCOLLECTION EMPTY')
의 결과가 동일합니다.
반환 유형
BOOL
ST_LENGTH
ST_LENGTH(geography_expression[, use_spheroid])
설명
입력 GEOGRAPHY
에 있는 선의 총 길이를 미터 단위로 반환합니다.
geography_expression
이 점 또는 다각형이면 0이 반환됩니다. geography_expression
이 컬렉션이면 컬렉션의 선 길이가 반환됩니다. 컬렉션에 선이 포함되지 않았으면 0이 반환됩니다.
선택적인 use_spheroid
매개변수는 이 함수의 거리 측정 방식을 결정합니다. use_spheroid
가 FALSE
이면 이 함수는 완전한 구의 표면에서 거리를 측정합니다.
use_spheroid
매개변수는 현재 FALSE
값만 지원합니다. use_spheroid
의 기본값은 FALSE
입니다.
반환 유형
FLOAT64
ST_MAKELINE
ST_MAKELINE(geography_1, geography_2)
ST_MAKELINE(array_of_geography)
설명
각 입력된 GEOGRAPHY
의 점 또는 선 꼭짓점을 지정된 순서대로 연결하여 단일 유도선이 있는 GEOGRAPHY
를 만듭니다.
ST_MAKELINE
에는 2가지 유형이 있습니다. 첫 번째 유형에서는 GEOGRAPHY
를 2개 입력해야 합니다. 두 번째 유형에서는 GEOGRAPHY
유형의 ARRAY
를 입력해야 합니다. 두 유형에서 입력된 각 GEOGRAPHY
는 다음 값 중 하나로 구성되어야 합니다.
- 정확히 1개의 점
- 정확히 1개의 유도선
첫 번째 ST_MAKELINE
유형의 경우 입력된 GEOGRAPHY
가 NULL
이면 ST_MAKELINE
은 NULL
을 반환합니다.
두 번째 유형의 경우 입력된 ARRAY
또는 ARRAY
의 요소가 NULL
이면 ST_MAKELINE
은 NULL
을 반환합니다.
제약조건
모든 모서리의 범위는 180도 미만이어야 합니다.
참고: BigQuery의 맞추기 프로세스는 아주 짧은 모서리를 삭제하고 2개의 끝점을 함께 맞춥니다. 예를 들어 두 입력 GEOGRAPHY
에 각각 점이 하나씩 포함되어 있고 두 점이 맞추기 반경보다 작은 거리로 분리되었으면 점이 함께 맞춰집니다. 이러한 경우 결과는 정확히 1개의 점만 있는 GEOGRAPHY
가 됩니다.
반환 유형
GEOGRAPHY
ST_MAKEPOLYGON
ST_MAKEPOLYGON(geography_expression[, array_of_geography])
설명
입력 유도선을 사용하여 단일 다각형을 포함하는 GEOGRAPHY
를 만듭니다. 이때 각 입력 유도선은 다각형 링을 구성하는 데 사용됩니다.
ST_MAKEPOLYGON
에는 2가지 유형이 있습니다. 첫 번째 유형의 경우 정확히 1개의 유도선을 포함하는 단일 GEOGRAPHY
가 입력 유도선을 제공합니다. 두 번째 유형의 경우 입력은 각각 정확히 1개의 유도선을 포함하는 단일 GEOGRAPHY
및 GEOGRAPHY
의 배열로 구성됩니다.
두 유형의 첫 번째 GEOGRAPHY
는 다각형 셸을 생성하는 데 사용됩니다. 입력된 ARRAY
에 제공되는 추가 GEOGRAPHY
는 다각형 구멍을 지정합니다. 정확히 1개의 유도선을 포함하는 모든 입력 GEOGRAPHY
는 다음 조건을 충족해야 합니다.
- 유도선은 3개 이상의 개별 꼭짓점으로 구성되어야 합니다.
- 유도선은 닫혀 있어야 합니다. 즉, 첫 번째 꼭짓점과 마지막 꼭짓점이 동일해야 합니다. 첫 번째 꼭짓점과 마지막 꼭짓점이 다르면 이 함수는 첫 번째 꼭짓점에서 시작해 마지막 꼭짓점에서 끝나는 모서리를 구성합니다.
첫 번째 ST_MAKEPOLYGON
유형의 경우 입력된 GEOGRAPHY
가 NULL
이면 ST_MAKEPOLYGON
은 NULL
을 반환합니다. 두 번째 유형의 경우 입력된 ARRAY
또는 ARRAY
의 요소가 NULL
이면 ST_MAKEPOLYGON
은 NULL
을 반환합니다.
참고: ST_MAKEPOLYGON
에 빈 GEOGRAPHY
를 입력할 수 있습니다. ST_MAKEPOLYGON
은 빈 GEOGRAPHY
를 빈 유도선이 있는 것으로 해석하여 완전한 루프, 즉 지구 전체를 포함하는 다각형을 만듭니다.
제약조건
입력 링을 결합하면 유효한 다각형이 형성되어야 합니다.
- 다각형 셸에는 각 다각형 구멍이 포함되어야 합니다.
- 다각형 셸은 하나만 있을 수 있으며 첫 번째 입력 링이어야 합니다. 즉, 다각형 구멍은 중첩될 수 없습니다.
- 다각형 링은 두 링의 경계에 있는 꼭짓점에서만 교차할 수 있습니다.
모든 모서리의 범위는 180도 미만이어야 합니다.
각 다각형 링은 구를 2개의 영역으로 나눕니다. ST_MAKEPOLYGON
의 첫 번째 입력 유도선은 다각형 셸을 형성하며 다각형 내부는 두 영역 중 더 작은 영역으로 선택됩니다. 이후의 각 입력 유도선은 다각형 구멍을 지정하므로 다각형의 내부가 정확하게 정의됩니다. 다각형 셸을 정의할 때 두 영역 중 더 큰 영역이 다각형 내부가 되도록 하려면 ST_MAKEPOLYGONORIENTED
를 참조하세요.
참고: BigQuery의 맞추기 프로세스는 아주 짧은 모서리를 삭제하고 2개의 끝점을 함께 맞춥니다. 따라서 꼭짓점이 함께 맞춰질 때 아주 작은 다각형 구멍이 사라지거나 출력 GEOGRAPHY
에 선 또는 점만 포함될 수 있습니다.
반환 유형
GEOGRAPHY
ST_MAKEPOLYGONORIENTED
ST_MAKEPOLYGONORIENTED(array_of_geography)
설명
ST_MAKEPOLYGON
과 유사하지만 각 입력 유도선의 꼭짓점 순서에 따라 각 다각형 링의 방향이 결정된다는 차이점이 있습니다. 다각형 링의 방향은 다각형의 내부를 정의합니다. 다각형 경계를 입력 꼭짓점의 순서대로 이동할 때 왼쪽 영역이 다각형의 내부입니다. 지정된 각 다각형 링에 동일한 정의가 적용됩니다.
ST_MAKEPOLYGONORIENTED
는 다각형 내부가 다각형 링의 어느 한 쪽으로 정의되는 다각형을 구성할 수 있으므로 이 변이된 다각형 생성자가 보다 유연합니다. 그러나 다각형을 원하는 대로 구성하기 위해서는 다각형 링의 올바른 방향이 중요합니다.
입력된 ARRAY
또는 ARRAY
의 요소가 NULL
이면 ST_MAKEPOLYGONORIENTED
는 NULL
을 반환합니다.
참고: ST_MAKEPOLYGONORIENTED
의 입력 인수에 빈 GEOGRAPHY
가 포함될 수 있습니다. ST_MAKEPOLYGONORIENTED
는 빈 GEOGRAPHY
를 빈 유도선이 있는 것으로 해석하여 완전한 루프, 즉 지구 전체를 포함하는 다각형을 만듭니다.
제약조건
입력 링을 결합하면 유효한 다각형이 형성되어야 합니다.
- 다각형 셸에는 각 다각형 구멍이 포함되어야 합니다.
- 다각형 셸은 하나만 있어야 하며 첫 번째 입력 링이어야 합니다. 즉, 다각형 구멍은 중첩될 수 없습니다.
- 다각형 링은 두 링의 경계에 있는 꼭짓점에서만 교차할 수 있습니다.
모든 모서리의 범위는 180도 미만이어야 합니다.
ST_MAKEPOLYGONORIENTED
는 각 유도선의 입력 꼭짓점 순서에 따라 다각형의 방향을 결정합니다. 다각형 셸과 모든 다각형 구멍에도 같은 방식이 적용됩니다. ST_MAKEPOLYGONORIENTED
를 사용할 때 모든 다각형 구멍은 셸과 반대 방향이어야 합니다. 다른 다각형 생성자와 유효한 다각형 빌드 시의 기타 제약조건은 ST_MAKEPOLYGON
을 참조하세요.
참고: BigQuery의 맞추기 프로세스로 인해 길이가 아주 짧은 모서리는 삭제되고 2개의 끝점이 단일 점으로 맞춰집니다. 따라서 하나 이상의 모서리가 사라지도록 유도선의 꼭짓점을 함께 맞출 수 있습니다. 결과적으로 아주 작은 다각형 구멍이 사라지거나 결과 GEOGRAPHY
에 선이나 점만 포함될 수 있습니다.
반환 유형
GEOGRAPHY
ST_MAXDISTANCE
ST_MAXDISTANCE(geography_1, geography_2[, use_spheroid])
비어 있지 않은 두 GEOGRAPHY
사이의 최장 거리, 즉 첫 번째 GEOGRAPHY
에 있는 꼭짓점과 두 번째 GEOGRAPHY
에 있는 꼭짓점 사이의 최장 거리를 미터 단위로 반환합니다. geography_1
과 geography_2
가 동일한 GEOGRAPHY
이면 이 함수는 해당 GEOGRAPHY
에서 가장 멀리 떨어진 두 꼭짓점 사이의 거리를 반환합니다.
입력 GEOGRAPHY
중 어느 하나라도 비어 있으면 ST_MAXDISTANCE
는 NULL
을 반환합니다.
선택적인 use_spheroid
매개변수는 이 함수의 거리 측정 방식을 결정합니다. use_spheroid
가 FALSE
이면 이 함수는 완전한 구의 표면에서 거리를 측정합니다.
use_spheroid
매개변수는 현재 FALSE
값만 지원합니다. use_spheroid
의 기본값은 FALSE
입니다.
반환 유형
FLOAT64
ST_NPOINTS
ST_NPOINTS(geography_expression)
설명
ST_NUMPOINTS의 별칭입니다.
ST_NUMPOINTS
ST_NUMPOINTS(geography_expression)
설명
입력 GEOGRAPHY
의 꼭짓점 수를 반환합니다. 이 수에는 점 수, 유도선 꼭짓점 수, 다각형 꼭짓점 수가 포함됩니다.
참고: 다각형 링의 첫 번째 꼭짓점과 마지막 꼭지점은 별개의 꼭지점으로 간주됩니다.
반환 유형
INT64
ST_PERIMETER
ST_PERIMETER(geography_expression[, use_spheroid])
설명
입력 GEOGRAPHY
의 다각형 경계 길이를 미터 단위로 반환합니다.
geography_expression
이 점 또는 선이면 0이 반환됩니다. geography_expression
이 컬렉션이면 컬렉션의 다각형 둘레가 반환됩니다. 컬렉션에 다각형이 포함되지 않았으면 0이 반환됩니다.
선택적인 use_spheroid
매개변수는 이 함수의 거리 측정 방식을 결정합니다. use_spheroid
가 FALSE
이면 이 함수는 완전한 구의 표면에서 거리를 측정합니다.
use_spheroid
매개변수는 현재 FALSE
값만 지원합니다. use_spheroid
의 기본값은 FALSE
입니다.
반환 유형
FLOAT64
ST_SIMPLIFY
ST_SIMPLIFY(geography, tolerance_meters)
설명
지정된 입력 GEOGRAPHY
인 geography
의 간소화된 버전을 반환합니다. GEOGRAPHY
입력은 짧은 모서리의 직선에 가까운 체인을 단일 긴 모서리로 대체하여 단순화됩니다. 입력 geography
는 tolerance_meters
에 지정된 허용 범위를 초과하여 변경되지 않습니다. 따라서 단순화된 모서리는 해당 모서리에서 삭제된 모든 꼭짓점의 원본 위치의 tolerance_meters
내에서 전달됩니다. 지정된 tolerance_meters
는 지구 표면상의 미터 단위 거리입니다.
ST_SIMPLIFY
는 토폴로지 관계를 유지하므로 새로운 교차 모서리가 생성되지 않고 출력이 유효합니다. 허용 범위가 충분히 크면 인접 도형이 단일 객체로 축소되거나 도형이 더 작은 치수의 도형으로 단순화될 수 있습니다.
제약조건
ST_SIMPLIFY
가 적용되려면 tolerance_meters
가 0이 아닌 값이어야 합니다.
tolerance_meters
에 의해 지정된 허용 범위가 다음 중 하나인 경우 ST_SIMPLIFY
는 오류를 반환합니다.
- 음수인 허용 범위
- 7,800km를 초과하는 허용 범위
반환 유형
GEOGRAPHY
예시
다음 예시에서는 ST_SIMPLIFY
가 중간 꼭짓점을 삭제하여 입력 줄 GEOGRAPHY
를 간소화하는 방법을 보여줍니다.
WITH example AS
(SELECT ST_GEOGFROMTEXT('LINESTRING(0 0, 0.05 0, 0.1 0, 0.15 0, 2 0)') AS line)
SELECT
line AS original_line,
ST_SIMPLIFY(line, 1) AS simplified_line
FROM example;
+---------------------------------------------+----------------------+
| original_line | simplified_line |
+---------------------------------------------+----------------------+
| LINESTRING(0 0, 0.05 0, 0.1 0, 0.15 0, 2 0) | LINESTRING(0 0, 2 0) |
+---------------------------------------------+----------------------+
다음 예시는 ST_SIMPLIFY
의 결과가 원래 도형보다 더 낮은 치수를 가질 수 있는 방법을 보여줍니다.
WITH example AS
(SELECT
ST_GEOGFROMTEXT('POLYGON((0 0, 0.1 0, 0.1 0.1, 0 0))') AS polygon,
t AS tolerance
FROM UNNEST([1000, 10000, 100000]) AS t)
SELECT
polygon AS original_triangle,
tolerance AS tolerance_meters,
ST_SIMPLIFY(polygon, tolerance) AS simplified_result
FROM example
+-------------------------------------+------------------+-------------------------------------+
| original_triangle | tolerance_meters | simplified_result |
+-------------------------------------+------------------+-------------------------------------+
| POLYGON((0 0, 0.1 0, 0.1 0.1, 0 0)) | 1000 | POLYGON((0 0, 0.1 0, 0.1 0.1, 0 0)) |
| POLYGON((0 0, 0.1 0, 0.1 0.1, 0 0)) | 10000 | LINESTRING(0 0, 0.1 0.1) |
| POLYGON((0 0, 0.1 0, 0.1 0.1, 0 0)) | 100000 | POINT(0 0) |
+-------------------------------------+------------------+-------------------------------------+
ST_SNAPTOGRID
ST_SNAPTOGRID(geography_expression, grid_size)
설명
각 꼭짓점이 경도/위도 그리드에 맞춰진 입력 GEOGRAPHY
를 반환합니다. 그리드 크기는 도 단위로 지정된 grid_size
매개변수에 따라 결정됩니다.
제약조건
임의의 그리드 크기는 지원되지 않습니다. grid_size
매개변수는 \(10^n\) 형식이 되도록 반올림됩니다. 단, \(-10 < n < 0\)입니다.
반환 유형
GEOGRAPHY
ST_TOUCHES
ST_TOUCHES(geography_1, geography_2)
설명
다음 두 조건이 충족되면 TRUE
를 반환합니다.
geography_1
이geography_2
와 교차합니다.geography_1
의 내부와geography_2
의 내부는 분리되어 있습니다.
반환 유형
BOOL
ST_UNION
ST_UNION(geography_1, geography_2)
ST_UNION(array_of_geography)
설명
모든 입력 GEOGRAPHY
의 점 합집합을 나타내는 GEOGRAPHY
를 반환합니다.
ST_UNION
에는 2가지 유형이 있습니다. 첫 번째 유형에서는 GEOGRAPHY
를 2개 입력해야 합니다. 두 번째 유형에서는 GEOGRAPHY
유형의 ARRAY
를 입력해야 합니다.
첫 번째 ST_UNION
유형의 경우 입력된 GEOGRAPHY
가 NULL
이면 ST_UNION
은 NULL
을 반환합니다. 두 번째 유형의 경우 입력된 ARRAY
값이 NULL
이면 ST_UNION
은 NULL
을 반환합니다. 입력된 ARRAY
가 NULL
이 아니면 합집합이 계산되고 출력에 영향을 주지 않도록 NULL
요소가 무시됩니다.
ST_UNION
의 집계 버전은 ST_UNION_AGG
를 참조하세요.
반환 유형
GEOGRAPHY
ST_UNION_AGG
ST_UNION_AGG(geography)
설명
모든 입력 GEOGRAPHY
의 점 합집합을 나타내는 GEOGRAPHY
를 반환합니다.
ST_UNION_AGG
는 입력된 GEOGRAPHY
의 NULL
값을 무시합니다.
ST_UNION_AGG
의 비집계 버전은 ST_UNION
을 참조하세요.
반환 유형
GEOGRAPHY
ST_WITHIN
ST_WITHIN(geography_1, geography_2)
설명
geography_1
의 어떠한 점도 geography_2
외부에 있지 않고 geography_1
과 geography_2
의 내부가 교차하면 TRUE
를 반환합니다.
두 지리 위치가 a
, b
일 때 ST_WITHIN(a, b)
은 ST_CONTAINS
(b, a)
와 동일한 결과를 반환합니다 인수 순서가 반대라는 점에 유의하세요.
반환 유형
BOOL
ST_X
ST_X(geography_expression)
설명
단일 점 입력 GEOGRAPHY
의 경도를 도 단위로 반환합니다.
입력 GEOGRAPHY
가 단일 점이 아니면(빈 GEOGRAPHY
인 경우 포함) ST_X
는 오류를 반환합니다. NULL
이 반환되도록 하려면 SAFE.
프리픽스를 사용하세요.
반환 유형
FLOAT64
예시
다음 예시에서는 ST_X
및 ST_Y
를 사용하여 단일 점 지리 객체의 좌표를 추출합니다.
WITH points AS
(SELECT ST_GEOGPOINT(i, i + 1) AS p FROM UNNEST([0, 5, 12]) AS i)
SELECT
p,
ST_X(p) as longitude,
ST_Y(p) as latitude
FROM points;
+--------------+-----------+----------+
| p | longitude | latitude |
+--------------+-----------+----------+
| POINT(0 1) | 0.0 | 1.0 |
| POINT(5 6) | 5.0 | 6.0 |
| POINT(12 13) | 12.0 | 13.0 |
+--------------+-----------+----------+
ST_Y
ST_Y(geography_expression)
설명
단일 점 입력 GEOGRAPHY
의 위도를 도 단위로 반환합니다.
입력 GEOGRAPHY
가 단일 점이 아니면(빈 GEOGRAPHY
인 경우 포함) ST_Y
는 오류를 반환합니다. 대신 NULL
이 반환되도록 하려면 SAFE.
프리픽스를 사용하세요.
반환 유형
FLOAT64
예시
사용 예시는 ST_X
를 참조하세요.