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