Obsługa baz danych przestrzennych w oprogramowaniu...

Post on 30-Nov-2018

219 views 0 download

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/