ST_SRID() în MySQL

Returnează sistemul de coordonate (SRID) al unei geometrii sau, cu al doilea argument, îl schimbă fără a muta coordonatele.

Sintaxă
ST_SRID(geometrie)
ST_SRID(geometrie, srid_nou)

Ce face ST_SRID()

SRID („Spatial Reference System Identifier”) spune cum se interpretează coordonatele: 0 este un plan cartezian fără unități, 4326 este WGS 84 (latitudine și longitudine în grade, ca la GPS). Toate sistemele cunoscute sunt în tabelul INFORMATION_SCHEMA.ST_SPATIAL_REFERENCE_SYSTEMS.

Cu un singur argument, ST_SRID() returnează SRID-ul. Cu două, returnează aceeași geometrie, dar cu SRID-ul nou; coordonatele nu se transformă (pentru asta există ST_Transform()). Forma cu două argumente este utilă pentru a corecta date salvate cu SRID greșit.

O coloană definită cu POINT SRID 4326 acceptă doar valori cu acest SRID și poate avea index spațial.

Parametri

Parametru Descriere
geometrie Valoarea spațială.
srid_nou Opțional: SRID-ul de pus pe geometrie.

Ce returnează

Un număr (SRID-ul) sau, cu două argumente, geometria cu noul SRID.

Exemple

Exemplul 1: SRID-ul unor geometrii

SELECT ST_SRID(Point(1, 2)) AS plan,
       ST_SRID(ST_GeomFromText('POINT(47.1585 27.6014)', 4326)) AS gps,
       ST_SRID(ST_SRID(Point(27.6014, 47.1585), 4326)) AS schimbat;

Rezultat

+------+------+----------+
| plan | gps  | schimbat |
+------+------+----------+
|    0 | 4326 |     4326 |
+------+------+----------+

Exemplul 2: Ce înseamnă SRID-urile 4326 și 3844

SELECT SRS_ID, SRS_NAME
FROM INFORMATION_SCHEMA.ST_SPATIAL_REFERENCE_SYSTEMS
WHERE SRS_ID IN (4326, 3844)
ORDER BY SRS_ID;

Rezultat

+--------+-----------------------------+
| SRS_ID | SRS_NAME                    |
+--------+-----------------------------+
|   3844 | Pulkovo 1942(58) / Stereo70 |
|   4326 | WGS 84                      |
+--------+-----------------------------+

Exemplul 3: Coloană cu SRID fix

CREATE TABLE puncte (loc POINT NOT NULL SRID 4326);
INSERT INTO puncte VALUES (ST_SRID(Point(27.6014, 47.1585), 4326));

SELECT ST_AsText(loc) AS loc, ST_SRID(loc) AS srid FROM puncte;

Rezultat

+------------------------+------+
| loc                    | srid |
+------------------------+------+
| POINT(47.1585 27.6014) | 4326 |
+------------------------+------+

Greșeli frecvente

  • Folosești ST_SRID(g, 4326) ca să „convertești” coordonate dintr-un alt sistem. Funcția doar schimbă eticheta; pentru transformare reală folosește ST_Transform().
  • Inserezi într-o coloană POINT SRID 4326 un Point(x, y) simplu. Primești eroare, pentru că punctul are SRID 0; folosește ST_SRID(Point(...), 4326) sau ST_GeomFromText(..., 4326).

Comenzi înrudite

  • ST_Transform(): Transformă coordonatele unei geometrii dintr-un sistem de coordonate în altul (de exemplu din GPS în Stereo 70).
  • ST_GeomFromText(): Creează o geometrie de orice tip din textul ei WKT („Well-Known Text”), opțional cu SRID.
  • Point(): Creează un punct din coordonatele lui x și y; este cel mai simplu mod de a construi o geometrie.