Obsługa baz danych przestrzennych w oprogramowaniu...
Transcript of Obsługa baz danych przestrzennych w oprogramowaniu...
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/