H3 지리 공간적 함수
적용 대상: Databricks SQL Databricks Runtime
H3는 글로벌 그리드 인덱싱 시스템입니다. 그리드 시스템은 사각형이나 삼각형과 같은 모양을 사용하여 표면(이 경우에는 지구 표면)을 바둑판 모양으로 만듭니다. H3 시스템은 육각형(및 오각형 몇 개)을 사용하도록 설계되었으며, 계층 구조 내에서 16개 수준의 해상도를 제공합니다. 해상도가 높을수록 바둑판 모양이 더 작습니다.
H3 식은 Databricks SQL pro 및 서버리스 계층의 Photon 지원 클러스터 및 Databricks SQL 웨어하우스에만 지원됩니다.
H3 해상도 및 H3의 원본에 대해 자세히 알아보세요.
다음을 참조하세요.
지리 공간적 분석용 H3
H3는 공간 데이터를 처리하고 분석하기 위한 일반적인 패턴을 지원합니다. 먼저 표준 형식(위도 및 경도, WKT(Well-Known Text), WKB(Well-Known Binary) 또는 GeoJSON)에서 H3 셀 ID로 지리 공간적 데이터를 인덱싱합니다. 단일 데이터 세트를 사용하면 셀 ID별로 집계하여 위치 기반 질문에 대답할 수 있습니다. 여러 인덱싱된 데이터 세트를 사용하면 셀 ID를 사용하여 결합하여 서로 다른 데이터 세트가 서로 어떤 관련이 있는지 확인할 수 있습니다. 이러한 데이터 세트 조인은 의미상 공간 조인이지만 공간 조건자가 필요하지 않습니다.
Databricks 내에서 H3를 사용하면 어떤 이점이 있나요?
H3 인덱싱 데이터의 효율적인 저장 및 레이아웃을 위해 Delta Lake 기능을 활용합니다. Z 순서 지정(H3 셀 ID 기준)을 사용하는 Delta Lake의 OPTIMIZE 작업을 사용하면 데이터를 공간적으로 공동 배치할 수 있습니다. 또한 Delta Lake의 데이터 건너뛰기 알고리즘은 공동 위치를 사용하여 읽어야 하는 데이터의 양을 지능적으로 줄입니다.
데이터 작업을 유연하게 수행할 수 있습니다. 정수(Big) 또는 문자열로 저장된 H3 셀 ID로 작업하도록 선택할 수 있습니다. H3 셀 ID를 사용할 때 최상의 성능을 발휘하려면 정수(Big) 표현을 사용합니다. H3 식의 자세한 사용법은 SQL 참조 가이드를 참조하세요.
참고 항목
H3 라이브러리를 설치할 필요가 없습니다. 이는 H3 Java 라이브러리 3.7.0 버전을 사용하는 Databricks Runtime 11.2부터 Databricks Runtime에 표시되는 종속성으로 포함됩니다.
Databricks 함수를 가져와 H3 가져오기(Databricks Runtime)
Databricks SQL 및 Spark SQL에는 가져오기가 필요 없습니다.
Notebook에서 Python 또는 Scala에 대한 H3 함수를 가져오려면 다음 명령을 사용합니다.
Python
from pyspark.databricks.sql import functions as dbf
Scala
import com.databricks.sql.functions._
H3 지리 공간적 함수 목록(Databricks SQL)
가져오기
함수 | 설명 |
---|---|
h3_coverash3(geographyExpr, resolutionExpr) | 입력 선형 또는 구형 지리를 완전히 포함하는 지정된 해상도의 최소 육각형 또는 펜타곤 집합에 해당하는 H3 셀 ID(BIGINT로 표시)의 배열을 반환합니다. |
h3_coverash3string(geographyExpr, resolutionExpr) | 입력 선형 또는 areal 지리를 완전히 포함하는 지정된 해상도의 최소 육각형 또는 펜타곤 집합에 해당하는 H3 셀 ID(STRING으로 표시됨)의 배열을 반환합니다. |
h3_longlatash3(longitudeExpr, latitudeExpr, resolutionExpr) | 지정된 해상도에서 제공된 경도 및 위도에 해당하는 H3 셀 ID(BIGINT로)를 반환합니다. |
h3_longlatash3string(longitudeExpr, latitudeExpr, resolutionExpr) | 지정된 해상도에서 제공된 경도 및 위도에 해당하는 H3 셀 ID(16진수 STRING)를 반환합니다. |
h3_pointash3(geographyExpr, resolutionExpr) | 지정된 해상도에서 제공된 포인트에 해당하는 H3 셀 ID(BIGINT로)를 반환합니다. |
h3_pointash3string(geographyExpr, resolutionExpr) | 지정된 해상도에서 제공된 지점에 해당하는 H3 셀 ID(STRING으로)를 반환합니다. |
h3_polyfillash3(geographyExpr, resolutionExpr) | 입력 areal geography에 포함된 지정된 해상도의 육각형 또는 펜타곤에 해당하는 H3 셀 ID(BIGINT로 표시)의 배열을 반환합니다. |
h3_polyfillash3string(geographyExpr, resolutionExpr) | 입력 areal geography에 포함된 지정된 해상도의 육각형 또는 펜타곤에 해당하는 H3 셀 ID(STRING으로 표시됨)의 배열을 반환합니다. |
h3_tessellateaswkb(geographyExpr, resolutionExpr) | 지정된 해상도에서 H3 셀을 사용하여 입력 지리의 테셀레이션 을 반환합니다. |
h3_try_polyfillash3(geographyExpr, resolutionExpr) | 입력 areal geography에 포함된 지정된 해상도의 육각형 또는 펜타곤에 해당하는 H3 셀 ID(BIGINT로 표시)의 배열을 반환합니다. |
h3_try_polyfillash3string(geographyExpr, resolutionExpr) | 입력 areal geography에 포함된 지정된 해상도의 육각형 또는 펜타곤에 해당하는 H3 셀 ID(STRING으로 표시됨)의 배열을 반환합니다. |
내보내기
함수 | 설명 |
---|---|
h3_boundaryasgeojson(h3CellIdExpr) | 입력 H3 셀의 다각형 경계를 GeoJSON 형식으로 반환합니다. |
h3_boundaryaswkb(h3CellIdExpr) | 입력 H3 셀의 다각형 경계를 WKB 형식으로 반환합니다. |
h3_boundaryaswkt(h3CellIdExpr) | 입력 H3 셀의 다각형 경계를 WKT 형식으로 반환합니다. |
h3_centerasgeojson(h3CellIdExpr) | 입력 H3 셀의 중심을 GeoJSON 형식의 점으로 반환합니다. |
h3_centeraswkb(h3CellIdExpr) | 입력 H3 셀의 중심을 WKB 형식의 점으로 반환합니다. |
h3_centeraswkt(h3CellIdExpr) | 입력 H3 셀의 중심을 WKT 형식의 점으로 반환합니다. |
변환
함수 | 설명 |
---|---|
h3_h3tostring(h3CellIdExpr) | 입력 H3 셀 ID를 해당하는 16진수 문자열 표현으로 변환합니다. |
h3_stringtoh3(h3CellIdStringExpr) | H3 셀 ID를 나타내는 16진수 문자열로 예상되는 입력 문자열을 H3 셀 ID의 해당 BIGINT 표현으로 변환합니다. |
조건자
함수 | 설명 |
---|---|
h3_ischildof(h3CellId1Expr, h3CellId2Expr) | 첫 번째 H3 셀 ID가 두 번째 H3 셀 ID와 같거나 자식이면 true를 반환합니다. |
h3_ispentagon(h3CellIdExpr) | 입력 BIGINT 또는 16진수 STRING이 오각형 H3 셀에 해당하는지 여부에 따라 true를 반환합니다. |
유효성 검사
함수 | 설명 |
---|---|
h3_isvalid(expr) | 입력 BIGINT 또는 STRING이 유효한 H3 셀 ID이면 true를 반환합니다. |
h3_try_validate(h3CellIdExpr) | 유효한 H3 셀 ID에 해당하는 경우 BIGINT 또는 STRING 형식의 입력 값을 반환하고 그렇지 않으면 NULL을 반환합니다. |
h3_validate(h3CellIdExpr) | 유효한 H3 셀 ID에 해당하는 경우 BIGINT 또는 STRING 형식의 입력 값을 반환하고 그렇지 않으면 오류를 내보냅니다. |
거리 관련
함수 | 설명 |
---|---|
h3_distance(h3CellId1Expr, h3CellId2Expr) | 두 입력 H3 셀 ID의 그리드 거리를 반환합니다. |
h3_hexring(h3CellIdExpr, kExpr) | 원본 H3 셀을 중심으로 속이 빈 육각형 고리를 형성하고 원본 H3 셀에서 그리드 거리 k 에 있는 H3 셀 ID의 배열을 반환합니다. |
h3_kring(h3CellIdExpr, kExpr) | 원본 셀 ID의(그리드) 거리 k 내에 있는 H3 셀 ID를 반환합니다. |
h3_kringdistances(h3CellIdExpr, kExpr) | 원본 H3 셀 ID에서 그리드 거리 k 내에 있는 모든 H3 셀 ID(정수(Long) 또는 문자열로 표시)를 원본 H3 셀 ID로부터의 거리와 함께 반환합니다. |
h3_try_distance(h3CellId1Expr, h3CellId2Expr) | 동일한 해상도의 두 입력 H3 셀 ID의 그리드 거리를 반환하고, 거리가 정의되지 않은 경우 NULL을 반환합니다. |
순회
함수 | 설명 |
---|---|
h3_maxchild(h3CellIdExpr, resolutionExpr) | 지정된 해상도에서 입력 H3 셀의 최댓값의 자식을 반환합니다. |
h3_minchild(h3CellIdExpr, resolutionExpr) | 지정된 해상도에서 입력 H3 셀의 최솟값의 자식을 반환합니다. |
h3_resolution(h3CellIdExpr) | 입력 H3 셀 ID의 해상도를 반환합니다. |
h3_tochildren(h3CellIdExpr, resolutionExpr) | 지정된 해상도에서 입력 H3 셀 ID의 자식 H3 셀 ID의 배열을 반환합니다. |
h3_toparent(h3CellIdExpr, resolutionExpr) | 지정된 해상도에서 입력 H3 셀 ID의 부모 H3 셀 ID를 반환합니다. |
압축
함수 | 설명 |
---|---|
h3_compact(h3CellIdsExpr) | H3 셀 ID의 입력 집합을 최대한 압축합니다. |
h3_uncompact(h3CellIdsExpr, resolutionExpr) | H3 셀 ID의 입력 집합을 지정된 해상도로 압축을 풉니다. |