SZYBKA ZAMIANA WSPÓŁRZĘDNYCH W POSTGIS

Czasem istnieje potrzeba zamiany współrzędnych miejscami, X z Y czy tam długości z szerokością. Byliśmy pod takim wrażeniem, jakie wywarły na nas nowe pomysły przełożonego, że zwyczajnie pomyliliśmy kolumny przy wciąganiu danych. Do czasu pojawienia się PostGISa w wersji 2.0 nie było to szczególnie łatwe, trzeba było robić transformacje afiniczną czy inne cuda. Z geodezyjnego punktu widzenia cały problem sprowadza się do obrotu obiektu/warstwy wokół linii opisanej równaniem y=x. W wersji 2.0 PostGISa pojawiła się funkcja st_FlipCoordinates(), która zamienia miejscami współrzędne. Szybko łatwo i przyjemnie.

Przykład

flip1

 

Tak wygląda granica Warszawy. Teraz magicznie zamieniamy współrzędne całej warstwy przy użyciu wspomnianej funkcji. Konkretnie mówiąc to tworzymy nową warstwę z zamienionymi współrzędnymi.

 

create table public.warszawa_granica_flip as
select osm_id, st_flipcoordinates(geometria) as geometria from public.warszawa_granica

 

Nowoutworzona warstwa wygląda tak:

flip2

Żeby się upenić czy faktycznie współrzędne zostały zamienione możemy zwrócić współrzędne centroidów obu obiektów:

select st_astext(st_centroid(geometria)) from public.warszawa_granica 
select st_astext(st_centroid(geometria)) from public.warszawa_granica_flip

Otrzymamy takie wartości:

POINT(2343016.89398359 6841717.37677447)
POINT(6841717.37677447 2343016.89398359)

Co potwierdza nam poprawne działanie funkcji.

 

Related Posts