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șteST_Transform(). - Inserezi într-o coloană
POINT SRID 4326unPoint(x, y)simplu. Primești eroare, pentru că punctul are SRID 0; foloseșteST_SRID(Point(...), 4326)sauST_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.