ST_LatFromGeoHash(), ST_LongFromGeoHash(), ST_PointFromGeoHash() în MySQL

Decodifică un geohash: latitudinea, longitudinea sau direct un punct.

Sintaxă
ST_LatFromGeoHash(geohash)
ST_LongFromGeoHash(geohash)
ST_PointFromGeoHash(geohash, srid)

Ce face ST_LatFromGeoHash(), ST_LongFromGeoHash(), ST_PointFromGeoHash()

Funcțiile fac operația inversă lui ST_GeoHash(). ST_LatFromGeoHash() dă latitudinea (între -90 și 90), ST_LongFromGeoHash() dă longitudinea (între -180 și 180), iar ST_PointFromGeoHash() dă un punct cu X = longitudine și Y = latitudine, în SRID-ul cerut.

Un geohash reprezintă o celulă, nu un punct exact, așa că rezultatul este centrul celulei: cu cât codul este mai scurt, cu atât poziția este mai aproximativă.

Parametri

Parametru Descriere
geohash Textul geohash.
srid SRID-ul punctului rezultat (de obicei 0).

Ce returnează

Un număr (latitudine sau longitudine) sau un POINT.

Exemple

Exemplul 1: Precizia scade cu lungimea codului

SELECT ST_LatFromGeoHash('u87sk0fw') AS lat8, ST_LongFromGeoHash('u87sk0fw') AS long8,
       ST_LatFromGeoHash('u87s') AS lat4, ST_LongFromGeoHash('u87s') AS long4;

Rezultat

+---------+---------+------+-------+
| lat8    | long8   | lat4 | long4 |
+---------+---------+------+-------+
| 47.1586 | 27.6013 | 47.2 |  27.6 |
+---------+---------+------+-------+

Exemplul 2: Punct din geohash

SELECT ST_AsText(ST_PointFromGeoHash('u87sk0fw', 0)) AS punct;

Rezultat

+------------------------+
| punct                  |
+------------------------+
| POINT(27.6013 47.1586) |
+------------------------+

Greșeli frecvente

  • Tratezi rezultatul ca poziția exactă. Este centrul unei celule; un geohash de 4 caractere poate fi la zeci de kilometri de punctul inițial.

Comenzi înrudite

  • ST_GeoHash(): Codifică o poziție (longitudine, latitudine) într-un geohash: un text scurt, ca u87sk0fw pentru Iași.
  • ST_X() și ST_Y(): Returnează coordonata X sau Y a unui punct; cu al doilea argument, returnează punctul cu coordonata schimbată.
  • ST_Latitude() și ST_Longitude(): Returnează latitudinea sau longitudinea unui punct geografic (de exemplu SRID 4326) ori îl modifică.