12.16.10 Функции пространственных геохешей
Геохеш — это система кодирования координат широты и долготы произвольной точности в строку текста. Значения геохешей — это строки, содержащие только символы из "0123456789bcdefghjkmnpqrstuvwxyz".
Функции в этом разделе позволяют манипулировать значениями геохешей, что предоставляет приложениям возможности импорта и экспорта данных геохеша, а также индексации и поиска значений геохешей.
-
ST_GeoHash(,longitude,latitude,max_length)ST_GeoHash(point,max_length)Возвращает строку геохеша в наборе символов и порядке сортировки соединения.
Если какой-либо аргумент равен
NULL, возвращаемое значение равноNULL. Если какой-либо аргумент недействителен, возникает ошибка.Для первого синтаксиса
longitudeдолжно быть числом в диапазоне [−180, 180], аlatitudeдолжно быть числом в диапазоне [−90, 90]. Для второго синтаксиса требуется значениеPOINT, где координаты X и Y находятся в допустимых диапазонах для долготы и широты соответственно.Полученная строка не длиннее чем
max_lengthсимволов, верхний предел которого составляет 100. Строка может быть короче чемmax_lengthсимволов, потому что алгоритм, создающий значение геохеша, продолжается до тех пор, пока не будет создана строка, которая является либо точным представлением местоположения, либоmax_lengthсимволов, в зависимости от того, что произойдёт раньше.mysql>
SELECT ST_GeoHash(180,0,10), ST_GeoHash(-180,-90,15);+----------------------+-------------------------+ | ST_GeoHash(180,0,10) | ST_GeoHash(-180,-90,15) | +----------------------+-------------------------+ | xbpbpbpbpb | 000000000000000 | +----------------------+-------------------------+ -
ST_LatFromGeoHash(geohash_str)Возвращает широту из значения строки геохеша как значение
DOUBLEв диапазоне [−90, 90].Если аргумент равен
NULL, возвращаемое значение равноNULL. Если аргумент недействителен, возникает ошибка.Функция декодирования
ST_LatFromGeoHash()считывает не более 433 символов из аргументаgeohash_str. Это представляет собой верхний предел информации во внутреннем представлении значений координат. Символы после 433-го игнорируются, даже если они в противном случае являются недопустимыми и приводят к ошибке.mysql>
SELECT ST_LatFromGeoHash(ST_GeoHash(45,-20,10));+------------------------------------------+ | ST_LatFromGeoHash(ST_GeoHash(45,-20,10)) | +------------------------------------------+ | -20 | +------------------------------------------+ -
ST_LongFromGeoHash(geohash_str)Возвращает долготу из значения строки геохеша как значение
DOUBLEв диапазоне [−180, 180].Если аргумент равен
NULL, возвращаемое значение равноNULL. Если аргумент недействителен, возникает ошибка.Замечания в описании
ST_LatFromGeoHash()относительно максимального количества обработанных символов из аргументаgeohash_strтакже применяются кST_LongFromGeoHash().mysql>
SELECT ST_LongFromGeoHash(ST_GeoHash(45,-20,10));+-------------------------------------------+ | ST_LongFromGeoHash(ST_GeoHash(45,-20,10)) | +-------------------------------------------+ | 45 | +-------------------------------------------+ -
ST_PointFromGeoHash(geohash_str,srid)Возвращает значение
POINT, содержащее декодированное значение геохеша, заданное значением строки геохеша.Координаты X и Y точки — это соответственно долгота в диапазоне [−180, 180] и широта в диапазоне [−90, 90].
Если какой-либо аргумент равен
NULL, возвращаемое значение равноNULL. Если какой-либо аргумент недействителен, возникает ошибка.sridаргумент — это целое 32-битное число без знака.Замечания в описании
ST_LatFromGeoHash()относительно максимального количества обработанных символов из аргументаgeohash_strтакже применяются кST_PointFromGeoHash().mysql>
SET @gh = ST_GeoHash(45,-20,10);mysql>SELECT ST_AsText(ST_PointFromGeoHash(@gh,0));+---------------------------------------+ | ST_AsText(ST_PointFromGeoHash(@gh,0)) | +---------------------------------------+ | POINT(45 -20) | +---------------------------------------+
© 2025 Oracle
Licensed under the GPLv2 License.