6 ZAPYTAŃ PRZESTRZENNYCH, KTÓRE MUSISZ ZNAĆ, BĘDĄC GISOWCEM

Gisowiec, to taki człek, który poza zagadnieniami geograficznymi, powinien ogarniać też choć trochę programowanie. Inaczej się nie da. GIS jest na tyle interdyscyplinarny, że chcąc zrobić coś więcej, niż wyświetlenie szejpa w naszym ulubionym programie, w końcu napotykamy na „informatykę”. Celowo wziąłem w cudzysłów, bo informatyka ma wiele aspektów i niekoniecznie musimy wszystkie poznawać. Programowanie i bazy danych to obszary informatyczne, nierozerwalnie związane z gisem, które, na pewnym etapie rozwoju zawodowego, wypadałoby znać. To znaczy, wszystko zależy od ścieżki, jaką sobie obraliśmy, ale zakładam, że nie ma takiej działalności gisowej, w której by to się nie przydało choć trochę.

Bazy danych są już na tyle zaawansowane, że praktycznie każdy dostawca zapewnia rozszerzenie przestrzenne do swojej technologii. Mamy więc Oracle Spatial, PostGIS, Spatialite. Nawet SQL Server Microsoftu obsługuje dane przestrzenne. Myślę, że mając tylko bazę danych, dałoby się ogarnąć 90% najczęściej występujących gisowych zadań. Moi koledzy z pracy pewnie daliby radę ogarnąć 110%, ale ja powściągliwy jestem, więc ograniczyłem się do 90%.

Poniżej 6 zapytań, które musisz znać, jeśli chcesz zostać pracownikiem miesiąca. Zapytania są w PostGIS, bo opensource znam i używam.

Poznaj układ współrzędnych, w którym masz dane

select st_srid(geometria) from tabela1

Zapytanie zwróci kod EPSG układu współrzędnych np: 4326 – WGS84

Zrób transformację do innego układu współrzędnych

select st_transform(geometria, 2180) as geometria_nowa from tabela1

W zapytaniu należy podać kod EPSG układu docelowego. Tutaj 2180 – PUWG1992

Policz powierzchnię obiektów

select st_area(geometria) from tabela1

Wynikiem będzie powierzchnia obiektów podana w jednostkach układu w jakim są dane.

Stwórz bufory

select st_buffer(geometria, 50) as geometria_buf from tabela1

W wyniku tego zapytania zostanie utworzony bufor o wielkości 50 jednostek układu w jakim są dane np. 50 metrów.

Znajdź obiekty przecinające się

select t1.* from tabela1 t1, tabela2 t2 where st_intersects(t1.geometria, t2.geometria)

Zapytanie zwróci wszystkie obiekty z tabeli t1, które przecinają się z obiektami z tabeli t2. Przez tabelę należy rozumieć również warstwę geometryczną.

Zapisz jako gml

select st_AsGML(geometria, 11) from tabela1

Wynikiem będzie wyświetlenie danych w formacie GML. Jako parametr podajemy nazwę kolumny z geometrią i dokładność zapisu współrzędnych – w tym przypadku 11.

To tylko najprostsze przykłady, najprostszych zapytań. Dostępnych funkcji przestrzennych są setki. Można je łączyć i parametryzować. Serwer bazodanowy na pewno będzie też wydajniejszy niż oprogramowanie gisowe, pracujące na plikach, zwłaszcza, gdy pracujemy na dużej ilości danych. Dlatego właśnie, drogi gisowcu, żeby zdobyć swoją upragnioną plakietkę pracownika miesiąca, musisz znać SQL czy jakiś język programowania.

Related Posts