ST_GeomFromGeoJSON() în MySQL

Citește un obiect GeoJSON și returnează geometria; implicit, rezultatul are SRID 4326.

Sintaxă
ST_GeomFromGeoJSON(geojson [, optiuni [, srid]])

Ce face ST_GeomFromGeoJSON()

ST_GeomFromGeoJSON() transformă textul GeoJSON (de exemplu primit de la o hartă web) într-o geometrie MySQL. Dacă obiectul este un Feature sau un FeatureCollection, se extrage doar geometria. Câmpul type ține cont de majuscule: "Point", nu "point".

Fără al treilea argument, geometria primește SRID 4326. Coordonatele GeoJSON sunt longitudine, latitudine, deci ST_AsText() le afișează inversat (lat long). optiuni spune ce se întâmplă cu coordonatele în plus (de exemplu altitudinea): 1 (implicit) dă eroare, 2, 3 sau 4 le ignoră.

Parametri

Parametru Descriere
geojson Textul GeoJSON.
optiuni Opțional: 1 = eroare la coordonate 3D (implicit); 2, 3, 4 = elimină coordonatele în plus.
srid Opțional: SRID-ul rezultatului (implicit 4326).

Ce returnează

Geometria citită.

Exemple

Exemplul 1: Un punct GeoJSON pentru Cluj-Napoca

SET @json = '{"type": "Point", "coordinates": [23.6236, 46.7712]}';

SELECT ST_AsText(ST_GeomFromGeoJSON(@json)) AS wkt,
       ST_SRID(ST_GeomFromGeoJSON(@json)) AS srid,
       ST_Longitude(ST_GeomFromGeoJSON(@json)) AS longitudine;

Rezultat

+------------------------+------+-------------+
| wkt                    | srid | longitudine |
+------------------------+------+-------------+
| POINT(46.7712 23.6236) | 4326 |     23.6236 |
+------------------------+------+-------------+

Exemplul 2: Feature cu altitudine: ignorată cu opțiunea 2

SET @json = '{"type": "Feature", "properties": {"nume": "Iași"},
             "geometry": {"type": "Point", "coordinates": [27.6014, 47.1585, 45]}}';

SELECT ST_AsText(ST_GeomFromGeoJSON(@json, 2)) AS punct,
       ST_AsText(ST_GeomFromGeoJSON(@json, 2, 0)) AS punct_srid_0;

Rezultat

+------------------------+------------------------+
| punct                  | punct_srid_0           |
+------------------------+------------------------+
| POINT(47.1585 27.6014) | POINT(27.6014 47.1585) |
+------------------------+------------------------+

Greșeli frecvente

  • Trimiți coordonate cu altitudine fără al doilea argument. Primești eroare; adaugă optiuni 2 ca să fie ignorată.

Comenzi înrudite

  • ST_AsGeoJSON(): Transformă o geometrie în GeoJSON, formatul folosit de hărțile web (Leaflet, Mapbox, OpenLayers).
  • ST_GeomFromText(): Creează o geometrie de orice tip din textul ei WKT („Well-Known Text”), opțional cu SRID.
  • ST_SRID(): Returnează sistemul de coordonate (SRID) al unei geometrii sau, cu al doilea argument, îl schimbă fără a muta coordonatele.