PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Jak postgis traktuje współrzędne wysyłane z różnymi SRID?

Transformacja SRS geometrii to znacznie więcej niż tylko zmiana ich SRID. Tak więc, jeśli z jakiegoś powodu po transformacji współrzędne zwracają dokładnie te same wartości, prawdopodobnie w ogóle nie było transformacji.

W tym przykładzie użyto ST_Transform przekształcić geometrię z 25832 do 4326 . Zobacz wyniki samodzielnie:

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)
  • Transformacja wielokąta w twoim pytaniu jest poprawna.

Upewnij się, że django naprawdę przechowuje wartości, o których wspomniałeś. Wyślij 25832 geometrię i bezpośrednio sprawdzić SRS w bazie danych. Jeśli sprawdzasz tylko za pomocą django, może się zdarzyć, że ponownie przekształca współrzędne w żądaniach, co może wyjaśniać, że nie widzisz żadnej różnicy.

Na Twoje pytanie:

WGS84 jest najczęściej używanym SRS na świecie, więc powiedziałbym, że tak, ale wszystko zależy od przypadku użycia. Jeśli nie masz pewności, którego SRS użyć, może to oznaczać, że Twój przypadek użycia nie nakłada na niego żadnych ograniczeń. Więc trzymaj się WGS84, ale pamiętaj, że nie mieszasz różnych SRS w swojej aplikacji. Btw:jeśli spróbujesz przechowywać geometrie w wielu SRS w tej samej tabeli, PostgreSQL zgłosi wyjątek;)

Dalsza lektura:ST_AsEWKT , WGS84



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. błąd kodowania znaków rodbc w PostgreSQL

  2. MySQL/Postgres odpytuje dane o interwale 5 minut

  3. Zresetuj klucz podstawowy PostgreSQL do 1

  4. Używanie tabeli tymczasowej do zastąpienia klauzuli WHERE IN

  5. Uśpienie komety PHP blokuje apache mpm?