Obsługa baz danych przestrzennych w oprogramowaniu...

18
Obsluga 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

Transcript of Obsługa baz danych przestrzennych w oprogramowaniu...

Page 1: Obsługa baz danych przestrzennych w oprogramowaniu ...cascadoss.gridw.pl/pl/download/Postgres_PostGIS.pdf · Quantum GIS (wprowadzenie w skrypcie dotycz ącym ćwiczenia w QGIS)

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

Page 2: Obsługa baz danych przestrzennych w oprogramowaniu ...cascadoss.gridw.pl/pl/download/Postgres_PostGIS.pdf · Quantum GIS (wprowadzenie w skrypcie dotycz ącym ćwiczenia w QGIS)

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 ( ),

Page 3: Obsługa baz danych przestrzennych w oprogramowaniu ...cascadoss.gridw.pl/pl/download/Postgres_PostGIS.pdf · Quantum GIS (wprowadzenie w skrypcie dotycz ącym ćwiczenia w QGIS)

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)

Page 4: Obsługa baz danych przestrzennych w oprogramowaniu ...cascadoss.gridw.pl/pl/download/Postgres_PostGIS.pdf · Quantum GIS (wprowadzenie w skrypcie dotycz ącym ćwiczenia w QGIS)

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.

Page 5: Obsługa baz danych przestrzennych w oprogramowaniu ...cascadoss.gridw.pl/pl/download/Postgres_PostGIS.pdf · Quantum GIS (wprowadzenie w skrypcie dotycz ącym ćwiczenia w QGIS)

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,

Page 6: Obsługa baz danych przestrzennych w oprogramowaniu ...cascadoss.gridw.pl/pl/download/Postgres_PostGIS.pdf · Quantum GIS (wprowadzenie w skrypcie dotycz ącym ćwiczenia w QGIS)

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,

Page 7: Obsługa baz danych przestrzennych w oprogramowaniu ...cascadoss.gridw.pl/pl/download/Postgres_PostGIS.pdf · Quantum GIS (wprowadzenie w skrypcie dotycz ącym ćwiczenia w QGIS)

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 .

Page 8: Obsługa baz danych przestrzennych w oprogramowaniu ...cascadoss.gridw.pl/pl/download/Postgres_PostGIS.pdf · Quantum GIS (wprowadzenie w skrypcie dotycz ącym ćwiczenia w QGIS)

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

Page 9: Obsługa baz danych przestrzennych w oprogramowaniu ...cascadoss.gridw.pl/pl/download/Postgres_PostGIS.pdf · Quantum GIS (wprowadzenie w skrypcie dotycz ącym ćwiczenia w QGIS)

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).

Page 10: Obsługa baz danych przestrzennych w oprogramowaniu ...cascadoss.gridw.pl/pl/download/Postgres_PostGIS.pdf · Quantum GIS (wprowadzenie w skrypcie dotycz ącym ćwiczenia w QGIS)

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”).

Page 11: Obsługa baz danych przestrzennych w oprogramowaniu ...cascadoss.gridw.pl/pl/download/Postgres_PostGIS.pdf · Quantum GIS (wprowadzenie w skrypcie dotycz ącym ćwiczenia w QGIS)

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.

Page 12: Obsługa baz danych przestrzennych w oprogramowaniu ...cascadoss.gridw.pl/pl/download/Postgres_PostGIS.pdf · Quantum GIS (wprowadzenie w skrypcie dotycz ącym ćwiczenia w QGIS)

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,

Page 13: Obsługa baz danych przestrzennych w oprogramowaniu ...cascadoss.gridw.pl/pl/download/Postgres_PostGIS.pdf · Quantum GIS (wprowadzenie w skrypcie dotycz ącym ćwiczenia w QGIS)

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.

Page 14: Obsługa baz danych przestrzennych w oprogramowaniu ...cascadoss.gridw.pl/pl/download/Postgres_PostGIS.pdf · Quantum GIS (wprowadzenie w skrypcie dotycz ącym ćwiczenia w QGIS)

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.

Page 15: Obsługa baz danych przestrzennych w oprogramowaniu ...cascadoss.gridw.pl/pl/download/Postgres_PostGIS.pdf · Quantum GIS (wprowadzenie w skrypcie dotycz ącym ćwiczenia w QGIS)

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),

Page 16: Obsługa baz danych przestrzennych w oprogramowaniu ...cascadoss.gridw.pl/pl/download/Postgres_PostGIS.pdf · Quantum GIS (wprowadzenie w skrypcie dotycz ącym ćwiczenia w QGIS)

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

Page 17: Obsługa baz danych przestrzennych w oprogramowaniu ...cascadoss.gridw.pl/pl/download/Postgres_PostGIS.pdf · Quantum GIS (wprowadzenie w skrypcie dotycz ącym ćwiczenia w QGIS)

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”.

Page 18: Obsługa baz danych przestrzennych w oprogramowaniu ...cascadoss.gridw.pl/pl/download/Postgres_PostGIS.pdf · Quantum GIS (wprowadzenie w skrypcie dotycz ącym ćwiczenia w QGIS)

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/