Geohash 함수

Geohash 함수

Geohash는 지구 표면을 격자 모양의 버킷으로 세분하고 각 셀을 짧은 문자·숫자 문자열로 인코딩하는 지오코드(geocode) 시스템이에요. 계층적 데이터 구조라서 geohash 문자열이 길수록 지리적 위치가 더 정밀해져요.

지리 좌표를 geohash 문자열로 직접 변환해야 한다면 geohash.org를 사용할 수 있어요.

출처: 문서

본문

geohashEncode

위도와 경도를 geohash 문자열로 인코딩해요.

구문 (Syntax)

geohashEncode(longitude, latitude, [precision])

입력 값 (Input values)

  • longitude — 인코딩할 좌표의 경도 부분이에요. 범위 [-180°, 180°]의 부동소수 값. Float.
  • latitude — 인코딩할 좌표의 위도 부분이에요. 범위 [-90°, 90°]의 부동소수 값. Float.
  • precision (선택) — 결과 인코딩 문자열의 길이예요. 기본값은 12. 범위 [1, 12]의 정수. Int8.

참고: - 모든 좌표 인자는 Float32 또는 Float64 중 동일한 타입이어야 해요.

  • precision 인자는 1보다 작거나 12보다 큰 값이 조용히 12로 변환돼요.

반환 값 (Returned values)

  • 인코딩된 좌표의 영숫자 문자열이에요(base32-encoding 알파벳의 수정 버전을 사용해요). String.

예시 (Example)

SELECT geohashEncode(-5.60302734375, 42.593994140625, 0) AS res;
┌─res──────────┐
│ ezs42d000000 │
└──────────────┘

geohashDecode

geohash 인코딩 문자열을 경도와 위도로 디코딩해요.

구문 (Syntax)

geohashDecode(hash_str)

입력 값 (Input values)

  • hash_str — Geohash 인코딩된 문자열이에요.

반환 값 (Returned values)

  • 경도와 위도의 Float64 값 튜플 (longitude, latitude)이에요. Tuple(Float64)

예시 (Example)

SELECT geohashDecode('ezs42') AS res;
┌─res─────────────────────────────┐
│ (-5.60302734375,42.60498046875) │
└─────────────────────────────────┘

geohashesInBox

주어진 정밀도로, 주어진 박스 안쪽에 들어가고 경계선과 교차하는 geohash 문자열의 배열을 반환해요. 기본적으로 2차원 격자를 배열로 평탄화한 것이에요.

구문 (Syntax)

geohashesInBox(longitude_min, latitude_min, longitude_max, latitude_max, precision)

인자 (Arguments)

  • longitude_min — 최소 경도. 범위: [-180°, 180°]. Float.
  • latitude_min — 최소 위도. 범위: [-90°, 90°]. Float.
  • longitude_max — 최대 경도. 범위: [-180°, 180°]. Float.
  • latitude_max — 최대 위도. 범위: [-90°, 90°]. Float.
  • precision — Geohash 정밀도. 범위: [1, 12]. UInt8.

참고: 모든 좌표 인자는 Float32 또는 Float64 중 동일한 타입이어야 해요.

반환 값 (Returned values)

  • 제공된 영역을 덮는, 정밀도만큼 길이의 geohash 박스 문자열 배열이에요. 항목의 순서에 의존하면 안 돼요. Array(String).
  • [] - 최소 위도·경도 값이 대응하는 최대 값보다 작지 않으면 빈 배열이에요.

참고: 결과 배열이 10,000,000개 항목보다 길면 함수가 예외를 던져요.

예시 (Example)

SELECT geohashesInBox(24.48, 40.56, 24.785, 40.81, 4) AS thasos;
┌─thasos──────────────────────────────────────┐
│ ['sx1q','sx1r','sx32','sx1w','sx1x','sx38'] │
└─────────────────────────────────────────────┘

더 알아보기 (Learn more)

  • ClickHouse 함수 목록 전체는 함수 개요를 참고해요.