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ă.