sql >> Database teknologi >  >> RDS >> PostgreSQL

Hvordan behandler postgis koordinater sendt med forskellige SRID

At transformere SRS af geometrier er meget mere end blot at ændre deres SRID. Så hvis koordinaterne af en eller anden grund efter en transformation vender tilbage med nøjagtig de samme værdier, var der højst sandsynligt ingen transformation overhovedet.

Dette eksempel bruger ST_Transform at transformere en geometri fra 25832 til 4326 . Se selv resultaterne:

WITH j (geom) AS (
 VALUES('SRID=25832;POINT (11.061 49.463)'::geometry))
SELECT ST_AsEWKT(geom),ST_AsEWKT(ST_Transform(geom,4326)) FROM j;

 

       st_asewkt            |                      st_asewkt                       
---------------------------------+------------------------------------------------------
 SRID=25832;POINT(11.061 49.463) | SRID=4326;POINT(4.511355210946569 0.000446125446657)
(1 Zeile)
  • Polygon-transformationen i dit spørgsmål er forresten korrekt.

Sørg for, at django virkelig gemmer de værdier, du nævnte. Send en 25832 geometri og direkte tjekke SRS i databasen. Hvis du kun tjekker ved hjælp af django, kan det være, at det transformerer koordinaterne tilbage igen i anmodningerne, hvilket kan forklare, at du ikke kan se nogen forskel.

Til dit spørgsmål:

WGS84 er den mest brugte SRS på verdensplan, så jeg ville være tilbøjelig til at sige ja, men det hele afhænger af din use case. Hvis du er usikker på, hvilken SRS du skal bruge, kan det tyde på, at din use case ikke pålægger det nogen begrænsning. Så hold dig til WGS84, men husk at du ikke blander forskellige SRS i din applikation. Btw:Hvis du forsøger at geometrier i flere SRS i samme tabel, vil PostgreSQL rejse en undtagelse;)

Yderligere læsning:ST_AsEWKT , WGS84



  1. Hvordan kan jeg læse data fra en krypteret DB ved hjælp af SQLiteAssetHelper?

  2. Hvad er der galt med min MySQL-sætning?

  3. ORA slette / afkorte

  4. Betydning af n:m og 1:n i databasedesign