Spec-Zone.ru › MySQL 5.7

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.
https://docs.oracle.com/cd/E17952_01/mysql-5.7-en/spatial-geohash-functions.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API