카테고리:

지리 공간 함수

ST_GEOHASH

GEOGRAPHY 또는 GEOMETRY 오브젝트에 대한 지오해시 를 반환합니다. 지오해시는 세계의 위치를 포함하는 측지 직사각형을 식별하는 짧은 base32 문자열입니다.

지오해시의 문자 수에 따라 정밀도가 결정됩니다. 지오해시 끝에서 문자를 제거하는 경우, 더 큰 직사각형 영역을 식별하는, 정밀도가 떨어지는 지오해시가 생성됩니다.

ST_GEOHASH는 20자 길이의 지오해시를 반환합니다. 선택적 precision 인자는 반환된 지오해시의 정밀도를 지정합니다. 예를 들어, precision5 를 전달하는 경우, 정확도가 떨어지는 더 짧은 지오해시(5자 길이)가 반환됩니다.

참고

점이 아닌 지리 공간 오브젝트의 경우, 함수는 precision 에 대한 기본값 또는 지정된 값과 관계없이, 정밀도가 낮은 지오해시를 반환할 수 있습니다.

이러한 경우, 정밀도는 지리 공간 오브젝트의 경계 상자에 의해 결정됩니다. ST_GEOHASH는 먼저 경계 상자의 왼쪽 하단 및 오른쪽 상단 모서리의 지오해시를 결정한 다음, 이러한 두 지오해시에 공통적인 접두사를 반환합니다.

참고 항목:

ST_GEOGFROMGEOHASH, ST_GEOGPOINTFROMGEOHASH

구문

ST_GEOHASH( <geography_expression> [, <precision> ] )

ST_GEOHASH( <geometry_expression> [, <precision> ] )
Copy

인자

필수:

geography_expression

인자는 GEOGRAPHY 형식의 식이어야 합니다.

geometry_expression

인자는 SRID가 4326인 GEOMETRY 형식의 식이어야 합니다.

선택 사항:

precision

지오해시에서 사용할 문자 수입니다. 1 에서 20 사이의 값을 지정할 수 있습니다.

기본적으로 precision20 이며, 이는 20자 길이의 지오해시를 생성합니다.

반환

지정된 오브젝트에 대한 지오해시(STRING 형식의 값)를 반환합니다.

오브젝트가 다각형이고 경계 상자의 두 점이 동일 지오해시 접두사를 공유하지 않는 경우, 함수는 빈 문자열을 반환할 수 있습니다.

다음 예는 GEOGRAPHY 점에 대한 지오해시를 반환합니다.

SELECT ST_GEOHASH(
  TO_GEOGRAPHY('POINT(-122.306100 37.554162)'))
  AS geohash_of_point_a;
Copy
+----------------------+
| GEOHASH_OF_POINT_A   |
|----------------------|
| 9q9j8ue2v71y5zzy0s4q |
+----------------------+

다음 예는 정밀도가 낮은 동일한 GEOGRAPHY 점에 대한 지오해시를 반환합니다.

SELECT ST_GEOHASH(
  TO_GEOGRAPHY('POINT(-122.306100 37.554162)'),
  5) AS less_precise_geohash_a;
Copy
+------------------------+
| LESS_PRECISE_GEOHASH_A |
|------------------------|
| 9q9j8                  |
+------------------------+

다음 예는 GEOMETRY 점에 대한 지오해시를 반환합니다.

SELECT ST_GEOHASH(
  TO_GEOMETRY('POINT(-122.306100 37.554162)', 4326))
  AS geohash_of_point_a;
Copy
+----------------------+
| GEOHASH_OF_POINT_A   |
|----------------------|
| 9q9j8ue2v71y5zzy0s4q |
+----------------------+

다음 예는 동일 접두사를 공유하여 두 GEOGRAPHY 점이 서로 가깝다는 것을 나타내는 두 개의 지오해시를 보여줍니다.

SELECT
  ST_GEOHASH(
    TO_GEOGRAPHY('POINT(-122.306100 37.554162)'))
    AS geohash_of_point_a,
  ST_GEOHASH(
    TO_GEOGRAPHY('POINT(-122.323111 37.562333)'))
    AS geohash_of_point_b;
Copy
+----------------------+----------------------+
| GEOHASH_OF_POINT_A   | GEOHASH_OF_POINT_B   |
|----------------------+----------------------|
| 9q9j8ue2v71y5zzy0s4q | 9q9j8qp02yms1tpjesmc |
+----------------------+----------------------+
SELECT
  ST_GEOHASH(
    TO_GEOGRAPHY('POINT(-122.306100 37.554162)'),
    5) AS less_precise_geohash_a,
  ST_GEOHASH(
    TO_GEOGRAPHY('POINT(-122.323111 37.562333)'),
    5) AS less_precise_geohash_b;
Copy
+------------------------+------------------------+
| LESS_PRECISE_GEOHASH_A | LESS_PRECISE_GEOHASH_B |
|------------------------+------------------------|
| 9q9j8                  | 9q9j8                  |
+------------------------+------------------------+

다음 예는 다각형에 대한 지오해시를 반환합니다. 이 다각형의 경계 상자의 왼쪽 하단 모서리와 오른쪽 상단 모서리는 이전 예에서 사용된 것과 동일한 두 GEOGRAPHY 점입니다. 이 예에서 볼 수 있듯이 ST_GEOHASH는 경계 상자의 왼쪽 하단 및 오른쪽 상단 모서리의 지오해시에 공통된 접두사를 반환합니다.

SELECT
  ST_GEOHASH(
    TO_GEOGRAPHY(
      'POLYGON((-122.306100 37.554162, -122.306100 37.562333, -122.323111 37.562333, -122.323111 37.554162, -122.306100 37.554162))'
    )
  ) AS geohash_of_polygon;
Copy
+--------------------+
| GEOHASH_OF_POLYGON |
|--------------------|
| 9q9j8              |
+--------------------+