plik PDF

Transkrypt

plik PDF
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
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 (
),
),
2
− 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)
3
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.
4
2.2. Instalacja rozszerzenia PostGIS:
1. Otwórz folder:
D:\CASCADOSS\PostgreSQL\PostgreSQL_PostGIS_QGIS_INSTALL \postgresql8.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,
5
− 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,
6
− 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
.
7
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
8
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).
9
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”).
10
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.
11
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,
12
− 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.
13
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.
14
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),
15
− 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
16
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
-f
uŜytkownik
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”.
17
Ź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/
18