Zarządzanie Danymi Przestrzennymi

Ćwiczenie 4 - PostGIS - eksport do pliku ESRI Shapefile, funkcje cz.2

Eksport danych do pliku ESRI Shapefile

Po wykonaniu operacji na danych często w celach wizualizacji bądź importu koniecznu jest eksport do pliku w jednym z formatów gis np. shapefile. Można to zrobić na klika sposóbów:

  1. Wczytanie warstwy do klienta graficznego np. QGIS i zapis w formacie natywnym bądź dalszy eksport
  2. Użycie programiku pgsql2shp dostarczanego wraz z PostGIS (odwrotnie działa shp2pgsql)
  3. Wykorzystanie biblioteki OGR

Ze względu na uniwersalność, na zajęciach omówione zostanie ostatnie podejście. Polecenie, które umożliwia eksport danych z bazy PostGIS to ogr2ogr. Pełen zestaw opcji i składnie można poznać wydając w terminalu komende

man ogr2ogr

W podstawowej formie polecenie eskportujące całą bazę danych to:

ogr2ogr -f "ESRI Shapefile" katalog PG:"host=host user=użytkownik dbname=baza password=hasło"

natomiast pojedynczą tabelę:

ogr2ogr -f "ESRI Shapefile"plik.shp PG:"(..)" "nazwa_tabeli"

Prawdziwa funkcjonalność ogr2ogr polega na możliwości eksportu do dowolnego obsługiwanego przez GDAL/OGR formatu danych oraz przede wszystkim na wykorzystaniu zapytań SQL. Ta druga opcja pozwala na przekazywanie pełnych zapytań i generowanie plików wynikowych np. w celu wizualizacji czy kontroli ich poprawności. Służy do tego parametr -sql. Przykładowo:

ogr2ogr (...) -sql "SELECT name, geom FROM gis.nazwy_pl WHERE name='Poznań'"

utworzy plik zawierający wszystkie obiekty spełniające podany warunek.


ZADANIE 4.1: Utwórz plik wektorowy zawierający punkty z bazy Geonames znajdujące się wewnątrz województwa wielkopolskiego.

Operacje na geometriach

Oprócz funkcji zwracających wartości logiczne lub wybrane obiekty PostGIS dysponuje całą gamą funkcji przetwarzania, w których rezultatem działania jest nowy obiekt. Najprostsze z nich to:

ST_Union(geom1,geom2)
zwraca obiekt będący połączeniem geometri źródłowych
ST_Difference(geom1,geom2)
zwraca obiekt będący różnicą między dwiema geometriami (ważna kolejność)
ST_Buffer(geom1,dystans)
tworzy obiekt powiększony o bufor o podanej wielkości
ST_Intersection(geom1,geom2)
zwraca część wspólną geometrii
ST_Simplify(geom1,tolerancja)
zmniejsza ilość węzłów obiektu według algorytmu Douglasa-Peukera

ZADANIE 4.2:
1. Utwórz poligon reprezentujący 10-cio kilometrową strefę buforową województwa wielkopolskiego. Rezultat zapisz w postaci pliku ESRI Shapefile i KML. 2. Utwórz warstwę zawierająca wszystkie nazwy geograficzne zawierające się w uprzednio utworzonym pasie buforowym. 3. Utwórz reprezentacje dowolnego województwa na 3 stopniach uproszczenia.


Autor: Michał Rzeszewski, Instytut Geokologii i Geoinformacji, UAM Poznań, mail: mrzeszewski@gmail.com
Creative Commons License
Ten utwór jest dostępny na licencji Creative Commons Uznanie autorstwa-Użycie niekomercyjne-Na tych samych warunkach 2.5 Polska.