Obsługa baz danych przestrzennych w oprogramowaniu
PostgreSQL z rozszerzeniem PostGIS
oraz
Wizualizacja danych przestrzennych w QGIS
Krajowe warsztaty CASCADOSS
Zastosowania oprogramowania Open Source GIS
(FOSS4G ang. Free and Open Source Software for Geospatial)
w ochronie przyrody
12-13 lutego 2009, Warszawa
2
1.
Wprowadzenie do PostgreSQL/PostGIS oraz Quantum GIS
PostgreSQL (dawniej Postgres i Postgres95) jest systemem zarządzania relacyjnymi
bazami danych RDBMS z rozszerzeniami obiektowymi, zgodnym ze standardem języka
zapytań SQL. PostgreSQL dostępny jest na platformy: AIX, FreeBSD, HP-UX, IRIX,
Linux, Mac OS, Microsoft Windows (2000, XP, 2003, Vista), NetBSD, OpenBSD,
Solaris i UnixWare. Oprogramowanie udostępniane jest na licencji BSD.
Oprócz PostgreSQL do otwartych systemów zarządzania bazami danych zaliczyć można
także: MySQL i Firebird. Wśród systemów zamkniętych (komercyjnych) warto
wymienić: Oracle, Sybase, IBM DB2 i MSSQL.
Strona domowa projektu:
http://www.postgresql.org/
PostGIS jest dostępnym na licencji GNU GPL rozszerzeniem systemu zarządzania
relacyjnymi bazami danych PostgreSQL. Oprogramowanie umożliwia wprowadzanie
danych geograficznych bezpośrednio do bazy, a także ich przetwarzanie.
Strona domowa projektu:
http://postgis.refractions.net/
Quantum GIS (wprowadzenie w skrypcie dotyczącym ćwiczenia w QGIS)
Ważne: QGIS nie jest kompatybilny z systemem operacyjnym MS Windows Vista.
Zalecane jest korzystanie z aplikacji pod systemami MS Windows XP lub 2000.
Strona domowa projektu:
http://www.qgis.org/
2.
Instalacja i uruchamianie PostgreSQL/PostGIS
2.1. Instalacja PostgreSQL
1. Otwórz folder:
D:\CASCADOSS\PostgreSQL\PostgreSQL_PostGIS_QGIS_INSTALL\
postgresql-8.3.3-1 i uruchom plik postgresql-8.3.msi
(w sali 14A na dysku C)
2. Postępuj zgodnie z wyświetlanymi instrukcjami. Ikona
oznacza konieczność
przejścia do następnego okna dialogowego:
−
ustaw język instalacji – domyślnie język angielski (
),
−
zapoznaj się z uwagami dotyczącymi instalacji (
),
3
−
kliknij lewym przyciskiem myszy w symbol obok napisu „PostgreSQL”, położony
na najwyższej gałęzi „drzewa” i zaznacz „Entire feature will be installed on local
hard driver” – wszystkie składowe aplikacji zostaną zainstalowane na dysku
lokalnym (
),
−
w nowym oknie dialogowym wpisz następujące parametry:
Install as a service (box zaznaczony)
Service name: PostgreSQL Database Server 8.3
Account name: postgres
Account domain: (domyślnie nazwa komputera użytkownika – zostaw bez zmian)
Account password: (wybierz hasło)
(
),
−
po pojawieniu się ekranu Initialize database cluster wpisz następujące parametry:
Initialize database cluster (box zaznaczony)
Port number: 5432
Addresses: Accept connections on all addresses, not just localhost (box
zaznaczony)
Locale: (wybór użytkownika)
4
Encoding (Server): WIN1250; (Client): WIN1250 (pozostaw domyślne)
Superuser name: postgres
Password: (wybierz hasło, może być inne niż poprzednio; Ważne: hasło to będzie
potrzebne podczas instalacji PostGIS)
(
),
−
jeśli ukaże się wiadomość systemowa Remote connections, zatwierdź OK,
−
w kolejnym oknie dialogowym zaznacz języki proceduralne, które będą
obsługiwane (
),
−
zaznacz wszystkie dostępne moduły, które mają być zainstalowane wraz
z oprogramowaniem PostgreSQL – najważniejszy to Adminpack,
−
naciśnij dwukrotnie
– aplikacja zostanie zainstalowana
−
gdy pojawi się ekran Installation complete! NIE uruchamiaj Launch Stack Builder
at exit (odznacz box – patrz poniżej)
−
naciśnij Finish. Instalacja programu została pomyślnie zakończona.
5
2.2. Instalacja rozszerzenia PostGIS:
1. Otwórz folder:
D:\CASCADOSS\PostgreSQL\PostgreSQL_PostGIS_QGIS_INSTALL \postgresql-
8.3.3-1\Extensions i uruchom plik postgis_1_3_3_pg83.exe
(w sali 14A na dysku C)
2. Postępuj zgodnie z instrukcjami. Ikona
oznacza konieczność przejścia do
następnego okna dialogowego:
−
zapoznaj się i zaakceptuj (lub odrzuć – wtedy nie ukończysz instalacji!!!)
postanowienia licencyjne (
),
−
pozostaw zaznaczone PostGIS oraz Create spatial database – oba komponenty
zostaną uwzględnione w trakcie instalacji (
),
−
NIE zmieniaj domyślnego folderu, w którym zostanie zainstalowany program
(
),
−
na kolejnym wyświetlanym ekranie wprowadź następujące parametry:
User name: postgres
Password: użyj hasła dla “Superuser” podczas instalacji PosgtreSQL
Port: 5432
(
),
−
ustaw Database name: postgis,
6
−
naciśnij Install, a następnie Close po zakończeniu procesu instalacji.
2.3. Uruchamianie PostgreSQL 8.3 z rozszerzeniem PostGIS i tworzenie struktury nowej
bazy danych
1.
Otwórz listę programów (Wszystkie programy) w Menu Start,
2.
Rozwiń zakładkę PostgreSQL 8.3 i wybierz pgAdmin III,
3.
W celu połączenia się z serwerem PostgreSQL Database Server 8.3 kliknij
PRAWYM przyciskiem myszy w jego nazwę, znajdującą się na liście Serwery
w Oknie obiektów i wybierz Połącz. Następnie wpisz hasło podane przy instalacji
programu i zatwierdź, klikając OK,
Zawartość serwera można przejrzeć, korzystając z przycisku „+” znajdującego się po
lewej stronie nazwy serwera w Oknie obiektów.
4.
Rozwiń listę PostgresSQL Database Server 8.3, a następnie kliknij prawym
przyciskiem myszy w gałąź Bazy danych i wybierz polecenie Nowa baza danych. W
oknie Nowa baza danych… wpisz następujące parametry:
−
w zakładce Właściwości wpisz odpowiednią nazwę bazy (Administration)
i wybierz „postgres” jako Właściciela,
−
w zakładce Uprawnienia nadaj Rolę „public” dla ALL (zaznacz box ALL
i naciśnij przycisk Dodaj/Zmień – rezultat swych działań ujrzysz w okienku
powyżej,
7
−
zatwierdzaj zmiany przyciskiem OK. Utworzona zostanie pusta baza danych
o nazwie Administration.
W ten sposób utwórz kolejnych pięć pustych baz danych o nazwach: Environment,
Other,
Settlements,
Statistics,
Transportation,
pamiętając
każdorazowo
o uwzględnieniu wypisanych powyżej parametrów.
Liczba i nazwy tworzonych pustych baz danych zależne są od struktury bazy danych
(grup tematycznych), jaką posiadasz. Na potrzeby poniższego ćwiczenia należy
skorzystać z bazy danych przestrzennych dla obszaru Karpat, która podzielona została
na 6 grup tematycznych. Ich nazwy są zgodne z nazwami nowo utworzonych baz
5.
Do nowo zaprojektowanej struktury bazodanowej należy następnie zaimportować
wcześniej przygotowane dane (pliki *.backup). W tym celu:
−
kliknij prawym przyciskiem myszy na nową bazę (np. „Administration”)
i wybierz opcję Przywróć,
−
w polu Nazwa pliku odszukaj, korzystając z przycisku
i eksplorując folder
D:\CASCADOSS\PostgreSQL\PostgreSQL_backup_files
(w sali 14A na dysku
C), odpowiedni plik (np. „Administration.backup”)
,
−
zatwierdź wybór, klikając Otwórz, a następnie OK.
−
Poczekaj na zakończenie procesu odtwarzania bazy, a następnie zamknij okno
przyciskiem
lub
.
8
Postępując zgodnie z instrukcją, przywróć kolejno pozostałe pliki *.backup wszystkich
wyszczególnionych baz.
Korzystanie z funkcji tworzenia plików *.backup umożliwia m.in. przenoszenie danych
do bazy znajdującej się na innym komputerze oraz zabezpiecza użytkownika przed utratą
danych w przypadku awarii komputera. Możliwe jest wówczas łatwe odtworzenie
struktury bazodanowej. W celu utworzenia pliku *.backup danej bazy należy:
−
kliknąć prawym przyciskiem myszy jej nazwę (np. „Administration”)
−
wybrać z listy opcję Backup,
−
w nowo otwartym oknie wybrać odpowiednią ścieżkę i nazwę dla tworzonego pliku,
−
ustawić parametry tworzonego pliku (opcje zaawansowane) lub pozostawić
ustawienia domyślne.
Wprowadzanie do bazy PostgreSQL/PostGIS nieprzetworzonych danych geograficznych
np. w formacie .shp opisano w części rozszerzonej niniejszego skryptu (pkt. 6).
3. Wizualizacja danych przestrzennych z bazy PostgreSQL/PostGIS
w programie Quantum GIS
Uwaga: Przed rozpoczęciem wykonywania dalszej części ćwiczenia należy sprawdzić,
czy na danym komputerze zainstalowano aplikację QGIS. W przypadku braku
9
powyższego oprogramowania należy ściągnąć plik instalacyjny ze strony
www.qgis.org
oraz zainstalować aplikację, pamiętając o jego niekompatybilności z systemem Windows
Vista.
Celem poniższej części ćwiczenia jest wizualizacja danych przestrzennych z obszaru
Karpat osadzonych w bazie PostgreSQL/PostGIS. Możliwość wyświetlania, a także edycji
warstw wektorowych, rastrowych oraz warstw PostGIS i WMS (serwery Web Map
Service) daje m.in. aplikacja QGIS.
Na potrzeby poniższego ćwiczenia utworzony został plik projektu w formacie .QGS,
w którym zapisane zostały parametry połączenia z bazami Postgis, ustawienia wyglądu
poszczególnych warstw tematycznych oraz dodatkowo mapy w formacie GeoTiff,
umieszczone bezpośrednio na dysku jako osobne pliki (nie ma możliwości obsługi danych
rastrowych w bazie PostgreSQL/PostGIS). Aby otworzyć projekt:
1.
Przejdź do folderu:
D:\CASCADOSS\PostgreSQL\QuantumGIS_project_files i otwórz plik
D_Carpathian_DB.qgs
(w sali 14A C_Carpathian_DB.qgs na dysku C)
Aby zobaczyć właściwości otwartego projektu należy w zakładce Ustawienia wybrać
Właściwości projektu. We właściwościach możesz na przykład sprawdzić parametry
odwzorowania danego projektu (zakładka Projection).
10
2.
Wizualizacji zawartości utworzonej bazy (kilku baz) danych dokonuje się poprzez
zaznaczanie lub odznaczanie odpowiednich warstw – „gałęzi drzewa”. Można także
dowolnie modyfikować parametry wyświetlania (kolor, rodzaj, grubość obrysu,
wypełnienie, symbol itp.), a także kolejność, w jakiej będą wyświetlane warstwy
(metodą „drag-and-drop”).
11
3.
Ustaw warstwy rastrowe (grupa Thematic Maps) jako podkład do danych
wektorowych – przeciągnij grupę Thematic Maps na sam dół listy warstw
w legendzie, a następnie wyświetl mapę hipsometryczną oraz warstwy: Boundaries,
KEO Extent, Cities, Lakes, Rivers, Protected Areas, Priority Areas.
Rysunek 1. Wizualizacja danych przestrzennych dla obszaru Karpat.
4.
Zmodyfikuj funkcje wyświetlania wybranej warstwy (Cities). W tym celu
dwukrotnie kliknij w obszarze Legendy w warstwę Cities. W oknie Właściwości
warstwy przejdź do zakładki Etykiety, a następnie:
−
zaznacz opcję Wyświetlaj etykiety. Jako Pole zawierające etykiety wybierz City
name. W oknie z lewej strony zaznacz pole Czcionka i ustaw odpowiednie
parametry napisów – rozmiar, kolor i umiejscowienie – wyświetlone zostaną
etykiety wybranej warstwy,
−
kliknij pole Bufor (lewe okno) oraz zaznacz kwadrat Bufor etykiet?. Następnie
ustal rozmiar i kolor bufora, czyli tła, na jakim będą wyświetlane nazwy miast.
−
kliknij pole Pozycja (lewe okno) i ustaw przesunięcie napisów (X Offset,
Y Offset) tak, aby nie zasłaniały symbolu miasta, którego dotyczą.
Wszystkie parametry przedstawiono na poniższych zrzutach ekranowych.
12
Zwizualizowane wcześniej dane przestrzenne zostały osadzone w przestrzeni
geograficznej.
Rysunek 2. Fragment mapy Karpat ze zmodyfikowanymi funkcjami wyświetlania warstwy
Cities (miasta).
5.
Istnieje również możliwość dodania do otwartej bazy danych warstwy z innej
PostGIS-owej bazy danych. W tym celu należy:
−
rozwinąć w menu programu QGIS zakładkę Warstwa i wybrać opcję Dodaj
warstwę PostGIS,
−
w oknie Dodaj tabelę PostGIS w części połączenie PostgreSQL kliknąć Nowy,
13
−
w kolejnym oknie dialogowym wpisać następujące parametry:
Nazwa: np. Administration (lub inna)
Host: localhost
Baza danych: np. Administration (lub inna)
Port: 5432
Użytkownik: postgres
Hasło: (hasło dla superuser)
−
kliknąć OK i Połącz (może zaistnieć konieczność ponownego wpisania hasła).
4. Import danych w formacie *.shp do bazy PostgreSQL/PostGIS
za pomocą Quantum GIS
Jedną z możliwości zasilenia bazy PostgreSQL/PostGIS jest bezpośredni import danych
w formacie *.shp poprzez wtyczkę „SPIT” w programie Quantum GIS:
1.
Po uruchomieniu QGIS w panelu górnym wybierz Wtyczki
→
Spit
→
Importuj format
shape do PostgreSQL.
2.
W oknie SPIT – Narzędzie importu z pliku shape do PostGIS w części Połączenia
PostgreSQL wybierz z listy rozwijanej bazę danych, do której zostaną zaimportowane
pliki *.shp.
Jeśli połączenie z serwerem nie zostało wcześniej utworzone, żadna baza nie będzie
widoczna. Należy wówczas skonfigurować połączenie, klikając Nowy. Po wpisaniu
wszystkich parametrów (patrz okno poniżej) przeprowadź Test połączenia, a gdy
wynik jest pomyślny, zatwierdź przyciskiem OK.
14
3.
Po ustanowieniu połączenia z serwerem za pomocą przycisku Dodaj wybierz pliki,
które chcesz zaimportować.
4.
Zatwierdź wybór plików, klikając OK.
5.
Poprawność zaimportowanych danych można sprawdzić, uruchamiając pgAdmin III
i odświeżając odpowiednią bazę danych w Oknie obiektów.
15
CZĘŚĆ ROZSZERZONA
6. Konwersja danych w formacie *.shp
Import danych do bazy PostgreSQL/PostGIS za pomocą narzędzi
shp2pgsql.exe oraz psql.exe poprzez konsolę Command Prompt
Ważne: Proszę przygotować dane w formacie *.shp (skopiować do katalogu roboczego
D:\CASCADOSS\PostgreSQL\SHP) i zanotować, jaki nadano im układ współrzędnych.
W celu wprowadzenia dodatkowych danych przestrzennych do bazy, należy dokonać
konwersji danych z formatu *.shp na format *.sql.
1.
Otwórz listę Programów w Menu Start, rozwiń zakładkę PostgreSQL 8.3 i wybierz
Command Prompt
2.
Ustaw ścieżkę na:
D:\CASCADOSS\PostgreSQL\SHP>
w następujący sposób:
−
przejdź na dysk D poleceniem „
d:
” (zatwierdź Enterem)
(w sali komputerowej małej – 14A przejdź na dysk C)
,
16
−
ustaw bieżący katalog roboczy poleceniem „
cd cascadoss\postgresql\shp
”
(zatwierdź Enterem)
3.
Uruchom narzędzie shp2pgsql i dokonaj konwersji danych w następujący sposób,
wpisując w linii komend:
D:\CASCADOSS\PostgreSQL\SHP>
"C:\Program Files\PostgreSQL\8.3\bin\shp2pgsql"
-s 32634 forest_CLC.shp forest_CLC > forest_CLC.sql
(zatwierdź Enterem)
Ważne: Możesz zostać poproszony o ponowne wprowadzenie hasła!
Wyjaśnienie składni:
-s <SRID> nazwaPliku.shp nazwaTabeli > nazwaPlikuSQL.sql
-s <SRID>
kod EPSG (European Petroleum Survay Group) odpowiedni dla układu
współrzędnych, w naszym przypadku jest to UTM WGS-84 strefa 34N – kod 32634.
W przypadku innego układu należy odszukać odpowiedni kod w tabeli
SPATIAL_REF_SYS (pgAdmin III - patrz poniżej).
Najważniejsze kody:
2180 – PUW 1992
4326 – Układ geograficzny
32634 – UTM WGS-84 strefa 34N
17
nazwaPliku.shp
nazwa pliku w formacie SHP, który zamierzamy przekonwertować
nazwaTabeli
nazwa tabeli wynikowej w bazie postgreSQL/postGIS
nazwaPlikuSQL.sql
nazwa pliku w formacie SQL, który będzie wynikiem konwersji
4.
załaduj utworzony plik *.sql do bazy za pomocą narzędzia psql, wpisując komendę:
D:\CASCADOSS\PostgreSQL\SHP>
"C:\Program Files\PostgreSQL\8.3\bin\psql" -d
Environment -h localhost -U postgres -f forest_CLC.sql
(zatwierdź Enterem)
Ważne: Możesz zostać poproszony o ponowne wpisanie hasła!
Wyjaśnienie składni:
-d nazwaBazy -h hostname -U postgres -f
nazwaPlikuSQL
.sql
-d nazwaBazy
nazwa bazy danych, do której importujemy dane przestrzenne
-h localhost
hostname
-U postgres
użytkownik
-f
nazwaPlikuSQL
.sql
nazwa pliku w formacie SQL, który importujemy
5.
uruchom pgAdmin III i sprawdź, czy dane poprawnie zaimportowały się do bazy o
nazwie „Environment”.
18
Źródła:
1.
Introduction to PostGIS, 2007, Materiały szkoleniowe warsztatów FOSS4G2007 (Free
and Open Source Software for Geospatial 2007) 24-27 września 2007, Suite, Kanada.
http://www.foss4g2007.org/workshops/W-04/
2.
Strona internetowa projektu PostgreSQL
http://www.postgresql.org/
3.
Polska strona internetowa projektu PostgreSQL
http://www.postgresql.org.pl/
4.
Strona internetowa projektu PostGIS
http://postgis.refractions.net/