Loading...
MySQL 9.5 Reference Manual 9.5의 14.16.10 Spatial Geohash Functions의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
Geohash는 위도와 경도 좌표를 임의의 정밀도로 텍스트 문자열로 인코딩하기 위한 시스템입니다. Geohash 값은 "0123456789bcdefghjkmnpqrstuvwxyz" 에서 선택된 문자만을 포함하는 문자열입니다.
이 절의 함수는 geohash 값을 조작할 수 있게 해 주며, 이를 통해 애플리케이션이 geohash 데이터를 가져오고 내보내며, geohash 값을 인덱싱 및 검색할 수 있는 기능을 제공합니다.
별도의 명시가 없는 한, 이 절에 있는 함수는 그 geometry 인자를 다음과 같이 처리합니다:
어떤 인자라도 NULL이면, 반환 값은 NULL입니다.
어떤 인자라도 유효하지 않으면, 에러가 발생합니다.
어떤 인자라도 범위를 벗어나는 경도 또는 위도를 가지면, 에러가 발생합니다:
경도 값이 범위 (−180, 180]에 있지 않으면,
ER_GEOMETRY_PARAM_LONGITUDE_OUT_OF_RANGE
에러가 발생합니다.
위도 값이 범위 [−90, 90]에 있지 않으면,
ER_GEOMETRY_PARAM_LATITUDE_OUT_OF_RANGE
에러가 발생합니다.
표시된 범위는 도 단위입니다. 정확한 범위 한계는 부동 소수점 연산으로 인해 약간 벗어날 수 있습니다.
어떤 point 인자라도 SRID 0 또는 4326을 가지지 않으면,
ER_SRS_NOT_FOUND 에러가 발생합니다. point 인자 SRID의 유효성은 검사하지 않습니다.
어떤 SRID 인자라도 정의되지 않은 공간 기준 시스템(SRS)을 참조하면,
ER_SRS_NOT_FOUND 에러가 발생합니다.
어떤 SRID 인자라도 32비트 부호 없는 정수의 범위를 벗어나면,
ER_DATA_OUT_OF_RANGE 에러가 발생합니다.
그 외의 경우, 반환 값은 NULL이 아닙니다.
사용 가능한 geohash 함수는 다음과 같습니다:
Connection 문자 집합 및 정렬 순서로 geohash 문자열을 반환합니다.
첫 번째 구문의 경우, _longitude_는 범위 [−180, 180]의 숫자여야 하고, _latitude_는 범위 [−90, 90]의 숫자여야 합니다. 두 번째 구문의 경우, X와 Y 좌표가 각각 경도와 위도에 대해 유효한 범위에 있는 POINT 값이 필요합니다.
결과 문자열은 길이가 max_length 문자보다 길지 않으며, 상한은 100입니다. 문자열은
max_length 문자보다 짧을 수 있는데, geohash 값을 생성하는 알고리즘이 해당 위치를 정확히 표현하는 문자열을 만들었거나 max_length 문자에 도달할 때까지 계속되기 때문이며, 둘 중 먼저 충족되는 조건에서 멈춥니다.
ST_GeoHash()는 이 절의 서두에서 설명한 대로 인자를 처리합니다.
1mysql> SELECT ST_GeoHash(180,0,10), ST_GeoHash(-180,-90,15); 2+----------------------+-------------------------+ 3| ST_GeoHash(180,0,10) | ST_GeoHash(-180,-90,15) | 4+----------------------+-------------------------+ 5| xbpbpbpbpb | 000000000000000 | 6+----------------------+-------------------------+
Geohash 문자열 값에서 위도를 반환하며, 범위 [−90, 90]의 배정밀도 숫자입니다.
ST_LatFromGeoHash() 디코딩 함수는 geohash_str 인자에서 최대 433 문자까지만 읽습니다. 이는 좌표 값의 내부 표현에 들어갈 수 있는 정보의 상한을 나타냅니다. 433번째 문자를 초과하는 문자들은, 그것이 잘못된 문자이고 에러를 일으킬 수 있는 문자라 하더라도 무시됩니다.
ST_LatFromGeoHash()는 이 절의 서두에서 설명한 대로 인자를 처리합니다.
1mysql> SELECT ST_LatFromGeoHash(ST_GeoHash(45,-20,10)); 2+------------------------------------------+ 3| ST_LatFromGeoHash(ST_GeoHash(45,-20,10)) | 4+------------------------------------------+ 5| -20 | 6+------------------------------------------+
Geohash 문자열 값에서 경도를 반환하며, 범위 [−180, 180]의 배정밀도 숫자입니다.
ST_LatFromGeoHash() 설명의 비고 사항 가운데 geohash_str 인자에서 처리되는 최대 문자 수에 대한 내용은
ST_LongFromGeoHash()에도 동일하게 적용됩니다.
ST_LongFromGeoHash()는 이 절의 서두에서 설명한 대로 인자를 처리합니다.
1mysql> SELECT ST_LongFromGeoHash(ST_GeoHash(45,-20,10)); 2+-------------------------------------------+ 3| ST_LongFromGeoHash(ST_GeoHash(45,-20,10)) | 4+-------------------------------------------+ 5| 45 | 6+-------------------------------------------+
Geohash 문자열 값이 주어졌을 때, 디코딩된 geohash 값을 포함하는 POINT 값을 반환합니다.
Point의 X와 Y 좌표는 각각 범위 [−180, 180]의 경도와 범위 [−90, 90]의 위도입니다.
srid 인자는 32비트 부호 없는 정수입니다.
ST_LatFromGeoHash() 설명의 비고 사항 가운데 geohash_str 인자에서 처리되는 최대 문자 수에 대한 내용은
ST_PointFromGeoHash()에도 동일하게 적용됩니다.
ST_PointFromGeoHash()는 이 절의 서두에서 설명한 대로 인자를 처리합니다.
1mysql> SET @gh = ST_GeoHash(45,-20,10); 2mysql> SELECT ST_AsText(ST_PointFromGeoHash(@gh,0)); 3+---------------------------------------+ 4| ST_AsText(ST_PointFromGeoHash(@gh,0)) | 5+---------------------------------------+ 6| POINT(45 -20) | 7+---------------------------------------+
14.16.9 Functions That Test Spatial Relations Between Geometry Objects
14.16.11 Spatial GeoJSON Functions