표준 SQL의 지리 함수

지리 함수는 BigQuery GEOGRAPHY 값에 대해 작동하거나 이러한 값을 생성합니다. 지리 함수의 서명은 ST_로 시작합니다. BigQuery는 지리 데이터 분석, 지형 지물 간의 공간적 관계 파악, GEOGRAPHY 구성 또는 조작에 사용할 수 있는 다음과 같은 함수를 지원합니다.

지리 함수는 함수 동작에 따라 다음과 같은 카테고리로 분류됩니다.

  • 생성자: ST_GEOGPOINT 같은 기존 GEOGRAPHY나 좌표를 사용하여 새 GEOGRAPHY 값을 생성하는 함수입니다.
  • 파서: WKTGeoJSON 같은 외부 형식을 사용하여 GEOGRAPHY를 생성하는 함수입니다. 예를 들어 ST_GEOGFROMTEXT는 WKT를 사용하여 GEOGRAPHY를 생성합니다.
  • 포맷터: GEOGRAPHY를 WKT 및 GeoJSON 같은 외부 형식으로 내보내는 함수입니다. 예를 들어 ST_ASTEXTGEOGRAPHY를 WKT 형식으로 만듭니다.
  • 변환: 다른 GEOGRAPHY에서 일부 속성은 유지하고 새 GEOGRAPY를 생성하는 함수입니다. 예를 들어 ST_INTERSECTIONST_BOUNDARY가 이에 해당합니다.
  • 조건자: 두 GEOGRAPHY 간의 공간적 관계나 특정 지리 속성에 대해 TRUE 또는 FALSE를 반환하는 함수입니다. 이 함수는 일반적으로 필터 절에 사용됩니다. 예를 들어 ST_DWITHIN이 조건자입니다.
  • 접근자: GEOGRAPHY의 속성에 부작용 없이 액세스할 수 있도록 하는 함수입니다(예: ST_NUMPOINTS).
  • 측정자: 하나 이상의 GEOGRAPHY에 대한 측정값을 계산하는 함수입니다(예: ST_DISTANCE).
  • 집계 함수: 지리 관련 집계 함수입니다(예: ST_UNION_AGG).

모든 BigQuery 지리 함수는 입력된 인수가 NULL일 때 NULL을 반환합니다.

ST_GEOGPOINT

ST_GEOGPOINT(longitude, latitude)

설명

단일 점을 사용하여 GEOGRAPHY를 생성합니다. ST_GEOGPOINT는 지정된 FLOAT64 경도 및 위도 매개변수를 사용하여 단일 점을 생성한 후 GEOGRAPHY 값으로 반환합니다.

제약조건

  • 위도 범위는 [-90, 90]입니다. 위도가 이 범위를 벗어나면 오류가 발생합니다.
  • 경도는 [-180, 180] 범위를 벗어나도 됩니다. ST_GEOGPOINT는 입력 경도를 360으로 나눈 나머지를 사용하여 [-180, 180] 범위 내의 경도를 구합니다.

반환 유형

GEOGRAPHY

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 유형의 경우 입력된 GEOGRAPHYNULL이면 ST_MAKELINENULL을 반환합니다. 두 번째 유형의 경우 입력된 ARRAY 또는 입력된 ARRAY의 요소가 NULL이면 ST_MAKELINENULL을 반환합니다.

제약조건

모든 모서리의 범위는 180도 미만이어야 합니다.

참고: BigQuery의 맞추기 프로세스는 아주 짧은 모서리를 삭제하고 2개의 끝점을 함께 맞춥니다. 예를 들어 두 입력 GEOGRAPHY에 각각 점이 하나씩 포함되어 있고 두 점이 맞추기 반경보다 작은 거리로 분리되었으면 점이 함께 맞춰집니다. 이러한 경우 결과는 정확히 1개의 점만 있는 GEOGRAPHY가 됩니다.

반환 유형

GEOGRAPHY

ST_MAKEPOLYGON

ST_MAKEPOLYGON(geography_expression)
ST_MAKEPOLYGON(geography_expression, array_of_geography)

설명

입력 유도선을 사용하여 단일 다각형을 포함하는 GEOGRAPHY를 생성합니다. 이때 각 입력 유도선은 다각형 링을 구성하는 데 사용됩니다.

ST_MAKEPOLYOGN에는 2가지 유형이 있습니다. 첫 번째 유형의 경우 정확히 하나의 유도선을 포함하는 단일 GEOGRAPHY가 입력 유도선을 제공합니다. 두 번째 유형의 경우 입력이 각각 정확히 하나의 유도선을 포함하는 단일 GEOGRAPHYGEOGRAPHY의 배열로 구성됩니다. 두 유형의 첫 번째 GEOGRAPHY는 다각형 셸을 구성하는 데 사용됩니다. 입력된 ARRAY에 제공된 추가 GEOGRAPHY는 다각형 구멍을 지정합니다. 정확히 1개의 유도선을 포함하는 모든 GEOGRAPHY 입력은 다음 조건을 충족해야 합니다.

  • 유도선은 3개 이상의 개별 꼭짓점으로 구성되어야 합니다.
  • 유도선은 닫혀 있어야 합니다. 즉, 첫 번째 꼭짓점과 마지막 꼭짓점이 동일해야 합니다. 첫 번째 꼭짓점과 마지막 꼭짓점이 다르면 이 함수는 첫 번째 꼭짓점에서 시작해 마지막 꼭짓점에서 끝나는 모서리를 구성합니다.

첫 번째 ST_MAKEPOLYGON 유형의 경우 입력된 GEOGRAPHYNULL이면 ST_MAKEPOLYGONNULL을 반환합니다. 두 번째 유형의 경우 입력된 ARRAY 또는 ARRAY의 요소가 NULL이면 ST_MAKEPOLYOGNNULL을 반환합니다.

참고: 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_MAKEPOLYGONORIENTEDNULL을 반환합니다.

참고: ST_MAKEPOLYGONORIENTED의 입력 인수에는 빈 GEOGRAPHY가 포함될 수 있습니다. ST_MAKEPOLYGONORIENTED은 빈 GEOGRAPHY를 빈 유도선이 있는 것으로 해석하여 완전한 루프, 즉 지구 전체를 포함하는 다각형을 생성합니다.

제약조건

입력 링을 결합하면 유효한 다각형이 형성되어야 합니다.

  • 다각형 셸에는 각 다각형 구멍이 포함되어야 합니다.
  • 다각형 셸은 하나만 있어야 하며 첫 번째 입력 링이어야 합니다. 즉, 다각형 구멍은 중첩될 수 없습니다.
  • 다각형 링은 두 링의 경계에 있는 꼭짓점에서만 교차할 수 있습니다.

모든 모서리의 범위는 180도 미만이어야 합니다.

ST_MAKEPOLYGONORIENTED는 각 유도선의 입력 꼭짓점 순서에 따라 다각형의 방향을 결정합니다. 다각형 셸과 모든 다각형 구멍에도 같은 방식이 적용됩니다. ST_MAKEPOLYGONORIENTED을 사용할 때 모든 다각형 구멍은 셸과 반대 방향이어야 합니다. 다른 다각형 생성자와 유효한 다각형 생성에 대한 기타 제약조건은 ST_MAKEPOLYGON을 참조하세요.

참고: BigQuery의 맞추기 프로세스로 인해 길이가 아주 짧은 모서리는 삭제되고 2개의 끝점이 단일 점으로 맞춰집니다. 따라서 하나 이상의 모서리가 사라지도록 유도선의 꼭짓점을 함께 맞출 수 있습니다. 결과적으로 아주 작은 다각형 구멍이 사라지거나 결과 GEOGRAPHY에 선이나 점만 포함될 수 있습니다.

반환 유형

GEOGRAPHY

ST_GEOGFROMGEOJSON

ST_GEOGFROMGEOJSON(geojson_string)

설명

입력된 GeoJSON 표현에 해당하는 GEOGRAPHY 값을 반환합니다.

ST_GEOGFROMGEOJSONRFC 7946을 준수하는 입력을 사용합니다.

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_GEOGFROMGEOJSONcoordinates 멤버의 위치에 선택적인 세 번째 요소를 지원하지 않습니다.

반환 유형

GEOGRAPHY

ST_GEOGFROMTEXT

ST_GEOGFROMTEXT(wkt_string)
ST_GEOGFROMTEXT(wkt_string, oriented)

설명

입력된 WKT 표현에 해당하는 GEOGRAPHY 값을 반환합니다.

이 함수는 BOOL, oriented 유형의 선택적 매개변수를 지원합니다. 이 매개변수가 TRUE로 설정되었으면 입력에 포함된 모든 다각형의 방향을 특정 방식으로 간주하게 됩니다. 즉, 다각형 경계를 입력 꼭짓점의 순서대로 이동할 때 왼쪽 영역이 다각형의 내부가 됩니다. 이 경우 WKT는 반구보다 큰 다각형을 나타낼 수 있습니다. orientedFALSE이거나 생략되었으면 이 함수는 보다 작은 면적의 다각형을 반환합니다. oriented=TRUEST_GEOGFROMTEXT와 유사한 ST_MAKEPOLYGONORIENTED도 참조하세요.

GEOGRAPHY를 WKT 형식으로 만들려면 ST_ASTEXT를 사용하세요.

제약조건

모든 입력 모서리는 평면 직선이 아니라 구면 측지선으로 간주됩니다. 평면 투영 데이터를 읽으려면 ST_GEOGFROMGEOJSON을 사용하는 것이 좋습니다. 구면 측지선과 평면 선의 차이점에 관한 자세한 내용은 좌표계와 모서리를 참조하세요.

반환 유형

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     |
+-------------------+---------------+-----------+

ST_GEOGFROMWKB

ST_GEOGFROMWKB(wkb_bytes)

설명

입력된 WKB 표현에 해당하는 GEOGRAPHY 값을 반환합니다.

GEOGRAPHY를 WKB 형식으로 만들려면 ST_ASBINARY를 사용하세요.

제약조건

모든 입력 모서리는 평면 직선이 아니라 구면 측지선으로 간주됩니다. 평면 투영 데이터를 읽으려면 ST_GEOGFROMGEOJSON을 사용하는 것이 좋습니다.

반환 유형

GEOGRAPHY

ST_GEOGPOINTFROMGEOHASH

ST_STGEOGPOINTFROMGEOHASH(geohash)

설명

GeoHash에 정의된 경계 상자의 가운데 점에 해당하는 GEOGRAPHY 값을 반환합니다.

반환 유형

GEOGRAPHY

ST_ASGEOJSON

ST_ASGEOJSON(geography_expression)

설명

입력된 GEOGRAPHYRFC 7946 준수 GeoJSON 표현을 반환합니다.

BigQuery GEOGRAPHY에는 구면 측지 모서리가 사용되는 반면 GeoJSON Geometry 객체에는 명시적으로 평면 모서리가 사용됩니다. 이 두 유형의 모서리를 서로 변환하기 위해 필요한 경우 BigQuery는 선에 별도의 점을 추가하여 변환된 일련의 모서리가 원래 모서리에서 10미터 이내에 유지되도록 합니다.

GeoJSON을 사용하여 GEOGRAPHY를 구성하려면 ST_GEOGFROMGEOJSON을 참조하세요.

반환 유형

STRING

ST_ASTEXT

ST_ASTEXT(geography_expression)

설명

입력된 GEOGRAPHYWKT 표현을 반환합니다.

WKT를 사용하여 GEOGRAPHY를 구성하려면 ST_GEOGFROMTEXT를 참조하세요.

반환 유형

STRING

ST_GEOHASH

ST_GEOHASH(geography_expression, maxchars)

설명

geography_expressionGeoHash 표현을 반환합니다. 반환되는 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_ASBINARY

ST_ASBINARY(geography_expression)

설명

입력된 GEOGRAPHYWKB 표현을 반환합니다.

WKB를 사용하여 GEOGRAPHY를 구성하려면 ST_GEOGFROMWKB를 참조하세요.

반환 유형

BYTES

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_CLOSESTPOINT

ST_CLOSESTPOINT(geography_1, geography_2)
ST_CLOSESTPOINT(geography_1, geography_2, use_spheroid)

설명

geography_1 상에서 geography_2와의 거리가 가능한 한 가장 짧은 한 점을 포함하는 GEOGRAPHY를 반환합니다. 이는 ST_CLOSESTPOINT에서 반환된 점과 geography_2 사이의 거리가 geography_1에 있는 어떤 점과 geography_2 사이의 거리보다도 짧거나 같다는 것을 의미합니다.

입력 GEOGRAPHY 중 어느 하나라도 비어 있으면 ST_CLOSESTPOINTNULL을 반환합니다.

선택적인 use_spheroid 매개변수는 이 함수의 거리 측정 방식을 결정합니다. use_spheroidFALSE이면 이 함수는 완전한 구의 표면에서 거리를 측정합니다.

use_spheroid 매개변수는 현재 FALSE 값만 지원합니다. use_spheroid의 기본값은 FALSE입니다.

반환 유형

GEOGRAPHY

ST_DIFFERENCE

ST_DIFFERENCE(geography_1, geography_2)

설명

geography_1geography_2의 점 차집합을 나타내는 GEOGRAPHY를 반환합니다.

geometry_1geometry_2에 완전히 포함되어 있으면 ST_DIFFERENCE는 빈 GEOGRAPHY를 반환합니다.

제약조건

BigQuery GEOGRAPHY가 나타내는 기본 도형 객체는 닫힌 점 집합에 해당합니다. 따라서 ST_DIFFERENCEgeography_1geography_2의 점 차집합을 닫은 것입니다. 이는 geography_1geography_2가 교차할 경우 geography_2의 경계 일부가 차이에 포함될 수 있음을 뜻합니다.

반환 유형

GEOGRAPHY

ST_INTERSECTION

ST_INTERSECTION(geography_1, geography_2)

설명

두 입력 GEOGRAPHY의 점 교집합을 나타내는 GEOGRAPHY를 반환합니다. 따라서 교집합의 모든 점은 geography_1geography_2 모두에 나타납니다.

두 입력 GEOGRAPHY가 분리된 경우, 즉 입력된 geometry_1geometry_2 모두에 나타나는 점이 없는 경우에는 빈 GEOGRAPHY가 반환됩니다.

관련 조건자 함수는 ST_INTERSECTS, ST_DISJOINT를 참조하세요.

반환 유형

GEOGRAPHY

ST_SNAPTOGRID

ST_SNAPTOGRID(geography_expression, grid_size)

설명

각 꼭짓점이 경도/위도 그리드에 맞춰진 입력 GEOGRAPHY를 반환합니다. 그리드 크기는 도 단위로 지정된 grid_size 매개변수에 따라 결정됩니다.

제약조건

임의의 그리드 크기는 지원되지 않습니다. grid_size 매개변수는 \(10^n\) 형식이 되도록 반올림됩니다. 단, \(-10 < n < 0\)입니다.

반환 유형

GEOGRAPHY

ST_UNION

ST_UNION(geography_1, geography_2)
ST_UNION(array_of_geography)

설명

입력된 모든 GEOGRAPHY의 점 합집합을 나타내는 GEOGRAPHY를 반환합니다.

ST_UNION에는 2가지 유형이 있습니다. 첫 번째 유형은 GEOGRAPHY 2개를 입력해야 합니다. 두 번째 유형은 GEOGRAPHY 유형의 ARRAY를 입력해야 합니다.

첫 번째 ST_UNION 유형의 경우 입력된 GEOGRAPHYNULL이면 ST_UNIONNULL을 반환합니다. 두 번째 유형의 경우 입력된 ARRAY 값이 NULL이면 ST_UNIONNULL을 반환합니다. NULL이 아닌 ARRAY 입력의 경우 합집합이 계산되고, 출력에 영향을 주지 않도록 NULL 요소가 무시됩니다.

ST_UNION의 집계 버전은 ST_UNION_AGG를 참조하세요.

반환 유형

GEOGRAPHY

ST_X

ST_X(geography_expression)

설명

단일 점 입력 GEOGRAPHY의 경도를 도 단위로 반환합니다.

입력 GEOGRAPHY가 단일 점이 아니면(빈 GEOGRAPHY인 경우 포함) ST_X는 오류를 반환합니다. NULL이 반환되도록 하려면 SAFE. 프리픽스를 사용하세요.

반환 유형

FLOAT64

예시

다음 예에서는 ST_XST_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를 참조하세요.

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_COVEREDBY

ST_COVEREDBY(geography_1, geography_2)

설명

geography_1 또는 geography_2가 비어 있으면 FALSE를 반환합니다. geography_1의 어떤 점도 geography_2의 외부에 있지 않으면 TRUE를 반환합니다.

GEOGRAPHYa, 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_DISJOINT

ST_DISJOINT(geography_1, geography_2)

설명

geography_1geography_2의 교차 영역이 비어 있으면, 즉 geography_1geography_2에 모두 나타나는 점이 없으면 TRUE를 반환합니다.

ST_DISJOINTST_INTERSECTS의 논리적 부정입니다.

반환 유형

GEOGRAPHY

ST_DWITHIN

ST_DWITHIN(geography_1, geography_2), distance)
ST_DWITHIN(geography_1, geography_2, distance, use_spheroid)

설명

geography_1에 있는 하나 이상의 점과 geography_2에 있는 한 점 사이의 거리가 distance 인수로 지정된 거리보다 짧거나 같으면 TRUE를 반환하고, 그렇지 않으면 FALSE를 반환합니다. 두 입력 GEOGRAPHY 중 어느 하나가 비어 있으면 ST_DWithinFALSE를 반환합니다. 지정된 distance는 지구 표면 상의 미터 단위 거리입니다.

선택적인 use_spheroid 매개변수는 이 함수의 거리 측정 방식을 결정합니다. use_spheroidFALSE이면 이 함수는 완전한 구의 표면에서 거리를 측정합니다.

use_spheroid 매개변수는 현재 FALSE 값만 지원합니다. use_spheroid의 기본값은 FALSE입니다.

반환 유형

BOOL

ST_EQUALS

ST_EQUALS(geography_1, geography_2)

설명

geography_1geography_2가 동일한 GEOGRAPHY 값을 나타내면 TRUE를 반환합니다. 더 정확히 말해 이는 다음 조건 중 하나가 충족됨을 의미합니다.

  • ST_COVERS(geography_1, geography_2) = TRUE이고 ST_COVERS(geography_2, geography_1) = TRUE입니다.
  • geography_1geography_2가 모두 비어 있습니다.

따라서 점과 꼭짓점의 순서가 다르더라도 동일한 도형 구조를 나타내기만 하면 두 개의 GEOGRAPHY가 동일할 수 있습니다.

제약조건

ST_EQUALS는 전환 함수가 아닐 수도 있습니다.

반환 유형

BOOL

ST_INTERSECTS

ST_INTERSECTS(geography_1, geography_2)

설명

geography_1geography_2의 점 교집합이 비어 있지 않으면 TRUE를 반환합니다. 따라서 두 GEOGRAPHY 입력 모두에 나타나는 점이 하나 이상 있으면 이 함수는 TRUE를 반환합니다.

ST_INTERSECTSTRUE를 반환한다면 ST_DISJOINTFALSE를 반환합니다.

반환 유형

BOOL

ST_INTERSECTSBOX

ST_INTERSECTSBOX(geography, lng1, lat1, lng2, lat2)

설명

geography[lng1, lng2][lat1, lat2] 사이의 직사각형과 교차하면 TRUE를 반환합니다. 직사각형의 모서리는 상수 경도 및 위도 선을 따릅니다. lng1lng2는 직사각형의 경계를 이루는 최소 및 최대 경도 선을 지정하고, lat1lat2은 직사각형의 경계를 이루는 최소 및 최대 상수 위도 선을 지정합니다.

모든 경도 및 위도 인수는 도 단위로 지정합니다.

제약조건

입력 인수에는 다음과 같은 제약조건이 적용됩니다.

  • 위도는 도 단위로 [-90, 90] 범위여야 합니다.
  • 경도는 도 단위로 [-180, 180] 범위여야 합니다.

반환 유형

BOOL

ST_TOUCHES

ST_TOUCHES(geography_1, geography_2)

설명

다음 두 조건이 충족되면 TRUE를 반환합니다.

  1. geography_1geography_2와 교차합니다.
  2. geography_1의 내부와 geography_2의 내부는 분리되어 있습니다.

반환 유형

BOOL

ST_WITHIN

ST_WITHIN(geography_1, geography_2)

설명

geography_1의 어떤 점도 geography_2 외부에 있지 않고 geography_1geography_2의 내부가 교차하면 TRUE를 반환합니다.

두 지리 위치가 a, b일 때 ST_WITHIN(a, b)ST_CONTAINS(b, a)와 동일한 결과를 반환합니다. 인수 순서가 반대임에 유의하세요.

반환 유형

BOOL

ST_ISEMPTY

ST_ISEMPTY(geography_expression)

설명

지정된 GEOGRAPHY가 비어 있으면, 즉 GEOGRAPHY에 점, 선 또는 다각형이 전혀 포함되어 있지 않으면 TRUE를 반환합니다.

참고: 빈 BigQuery GEOGRAPHY는 특정 도형과 연결되어 있지 않습니다. 예를 들어 표현식 ST_GEOGFROMTEXT('POINT EMPTY')ST_GEOGFROMTEXT('GEOMETRYCOLLECTION EMPTY')의 결과가 동일합니다.

반환 유형

BOOL

ST_ISCOLLECTION

ST_ISCOLLECTION(geography_expression)

설명

점, 유도선, 다각형의 총 개수가 1보다 크면 TRUE를 반환합니다.

GEOGRAPHY는 컬렉션이 아닙니다.

반환 유형

BOOL

ST_DIMENSION

ST_DIMENSION(geography_expression)

설명

입력 GEOGRAPHY의 요소 중 가장 고차원인 요소의 차원 수를 반환합니다.

가능한 각 요소의 차원은 다음과 같습니다.

  • 점의 차원 수는 0입니다.
  • 유도선의 차원 수는 1입니다.
  • 다각형의 차원 수는 2입니다.

입력 GEOGRAPHY가 비어 있으면 ST_DIMENSION-1을 반환합니다.

반환 유형

INT64

ST_NUMPOINTS

ST_NUMPOINTS(geography_expression)

설명

입력 GEOGRAPHY의 꼭짓점 수를 반환합니다. 이 수에는 점 수, 유도선 꼭짓점 수, 다각형 꼭짓점 수가 포함됩니다.

참고: 다각형 링의 첫 번째 꼭짓점과 마지막 꼭지점은 별개의 꼭지점으로 간주됩니다.

반환 유형

INT64

ST_AREA

ST_AREA(geography_expression)
ST_AREA(geography_expression, use_spheroid)

설명

입력 GEOGRAPHY에서 다각형이 차지하는 면적을 제곱미터 단위로 반환합니다.

geography_expression이 점 또는 선이면 0이 반환됩니다. geography_expression이 컬렉션이면 컬렉션의 다각형 면적이 반환됩니다. 컬렉션에 다각형이 포함되지 않았으면 0이 반환됩니다.

선택적인 use_spheroid 매개변수는 이 함수의 거리 측정 방식을 결정합니다. use_spheroidFALSE이면 이 함수는 완전한 구의 표면에서 거리를 측정합니다.

use_spheroid 매개변수는 현재 FALSE 값만 지원합니다. use_spheroid의 기본값은 FALSE입니다.

반환 유형

FLOAT64

ST_DISTANCE

ST_DISTANCE(geography_1, geography_2)
ST_DISTANCE(geography_1, geography_2, use_spheroid)

설명

비어 있지 않은 두 GEOGRAPHY 간의 최단 거리를 미터 단위로 반환합니다.

입력 GEOGRAPHY 중 어느 하나라도 비어 있으면 ST_DISTANCENULL을 반환합니다.

선택적인 use_spheroid 매개변수는 이 함수의 거리 측정 방식을 결정합니다. use_spheroidFALSE이면 이 함수는 완전한 구의 표면에서 거리를 측정합니다.

use_spheroid 매개변수는 현재 FALSE 값만 지원합니다. use_spheroid의 기본값은 FALSE입니다.

반환 유형

FLOAT64

ST_LENGTH

ST_LENGTH(geography_expression)
ST_LENGTH(geography_expression, use_spheroid)

설명

입력 GEOGRAPHY에 있는 선의 총 길이를 미터 단위로 반환합니다.

geography_expression이 점 또는 다각형이면 0이 반환됩니다. geography_expression이 컬렉션이면 컬렉션의 선 길이가 반환됩니다. 컬렉션에 선이 포함되지 않았으면 0이 반환됩니다.

선택적인 use_spheroid 매개변수는 이 함수의 거리 측정 방식을 결정합니다. use_spheroidFALSE이면 이 함수는 완전한 구의 표면에서 거리를 측정합니다.

use_spheroid 매개변수는 현재 FALSE 값만 지원합니다. use_spheroid의 기본값은 FALSE입니다.

반환 유형

FLOAT64

ST_MAXDISTANCE

ST_MAXDISTANCE(geography_1, geography_2)
ST_MAXDISTANCE(geography_1, geography_2, use_spheroid)

비어 있지 않은 두 GEOGRAPHY 사이의 최장 거리, 즉 첫 번째 GEOGRAPHY에 있는 꼭짓점과 두 번째 GEOGRAPHY에 있는 꼭짓점 사이의 최장 거리를 미터 단위로 반환합니다. geography_1geography_2가 동일한 GEOGRAPHY이면 이 함수는 해당 GEOGRAPHY에서 가장 멀리 떨어진 두 꼭짓점 사이의 거리를 반환합니다.

입력 GEOGRAPHY 중 어느 하나라도 비어 있으면 ST_MAXDISTANCENULL을 반환합니다.

선택적인 use_spheroid 매개변수는 이 함수의 거리 측정 방식을 결정합니다. use_spheroidFALSE이면 이 함수는 완전한 구의 표면에서 거리를 측정합니다.

use_spheroid 매개변수는 현재 FALSE 값만 지원합니다. use_spheroid의 기본값은 FALSE입니다.

반환 유형

FLOAT64

ST_PERIMETER

ST_PERIMETER(geography_expression)
ST_PERIMETER(geography_expression, use_spheroid)

설명

입력 GEOGRAPHY의 다각형 경계 길이를 미터 단위로 반환합니다.

geography_expression이 점 또는 선이면 0이 반환됩니다. geography_expression이 컬렉션이면 컬렉션의 다각형 둘레가 반환됩니다. 컬렉션에 다각형이 포함되지 않았으면 0이 반환됩니다.

선택적인 use_spheroid 매개변수는 이 함수의 거리 측정 방식을 결정합니다. use_spheroidFALSE이면 이 함수는 완전한 구의 표면에서 거리를 측정합니다.

use_spheroid 매개변수는 현재 FALSE 값만 지원합니다. use_spheroid의 기본값은 FALSE입니다.

반환 유형

FLOAT64

ST_UNION_AGG

ST_UNION_AGG(geography)

설명

입력된 모든 GEOGRAPHY의 점 합집합을 나타내는 GEOGRAPHY를 반환합니다.

ST_UNION_AGG는 입력된 GEOGRAPHYNULL 값을 무시합니다.

ST_UNION_AGG의 비집계 버전은 ST_UNION을 참조하세요.

반환 유형

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는 입력된 GEOGRAPHYNULL 값을 무시합니다.

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)      |
+-----------------+
이 페이지가 도움이 되었나요? 평가를 부탁드립니다.

다음에 대한 의견 보내기...

도움이 필요하시나요? 지원 페이지를 방문하세요.