Archiwum

Archiwum kategorii ‘PostgreSQL / PostGIS’

MapServer i PostGIS

26/11/2009 Dodaj komentarz

MapServer obsługuje wiele typów danych. Dane może czerpać z plików (np. shape) lub bezpośrednio z baz danych. Dziś zajmę się tym drugim przypadkiem. W związku z tym, iż MapServer jest narzędziem bezpłatnym, chciałabym pokazać jak dodać do niego dane zawarte w również bezpłatnym systemie baz danych – PostGIS.

Otwieramy stosowny plik *.map i definiujemy nową warstwę (pogrubione zostały elementy, które zmieniamy wedle potrzeby):

# Uwaga!
# W taki sposób zaznaczone są komentarze,
# ignorowane przez MapServer,
# a pomocne użytkownikom MapServera ;)

LAYER
# początek warswy

NAME “nazwa_warstwy
# nazwa warstwy; służy do identyfikacji warstw

CONNECTIONTYPE postgis
# typ połączenia; zostawiamy bez zmian

CONNECTION “user=uzytkownik_bazy password=haslo dbname=nazwa_bazy host=nazwa_hosta port=5432
# dane potrzebne do nawiązania połączenia z bazą danych
# niezbędnym minimum do podania jest nazwa użytkownika i nazwa bazy danych

TRANSPARENCY 70
# element dodatkowy, nieobowiązkowy
# określenie przezroczystości warstwy

STATUS ON
# status może być on (warstwa jest włączona i pojawia się automatycznie po
# załadowaniu mapy) lub off (warstwa nie pojawia się automatycznie po
# załadowaniu mapy; dopiero użytkownik zaznacza, czy chce tą warstwę wyświetlić)

DATA “nazwa_kolumny from nazwa_tabeli using unique gid using srid=4326
# bardzo istotna linijka!
# podajemy nazwę kolumny, która zawiera informacje o obiektach przestrzennych
# w danej tabeli, np. the geom from koleje
# pozostałe elementy opcjonalne

TYPE LINE
# typ danych – poligon, linia, punkt, itp…

CLASSITEM ‘typ
# kolumna, która jest wyróżnikiem klas
# element nieobowiązkowy jeśli będziemy definiować tylko jedną klasę

CLASS
# początek pierwszej klasy; może być ich więcej
# w przypadku pliku wektorowego – musi być choć jedna
# dla plików rastrowych – element nieobowiązkowy

NAME ‘klasa1
# nazwa klasy

EXPRESSION ‘typ1
# wyrażenie z kolumny podanej w CLASSITEM

COLOR 60 170 240
# kolor wypełnienia

END
# koniec pierwszej klasy

CLASS
# początek drugiej klasy

NAME ‘klasa2
# nazwa klasy

EXPRESSION ‘typ2
# wyrażenie z kolumny podanej w CLASSITEM

COLOR 220 55 100
# kolor wypełnienia

END
# koniec drugiej klasy

END
# koniec warswy

Podany fragment kodu jest przykładem jednej z prostszych możliwości dodania do MapServera danych z bazy PostGIS. Wedle potrzeb można ten kod rozbudować w oparciu o bardziej szczegółowe zapytania do bazy danych.

QGIS i PostgreSQL/PostGIS – podłączanie danych oraz import pliku *.shp do bazy

20/06/2009 1 komentarz

Darmowy program QGIS umożliwia w szybki i łatwy sposób podłączenie danych z bazy PostgreSQL/PostGIS. W tym celu wybieramy z menu Warstwa ›› Dodaj warstwę PostGIS.
Po pierwsze, definiujemy nowe połączenie z bazą bądź korzystamy z istniejącego. Przykładowe połączenie wygląda następująco:

Po kliknięciu na przycisk Połącz uzyskamy listę tabel dostępnych w danej bazie. Wybieramy te, które nas interesują po czym klikamy Dodaj.

Na tym nie kończą się możliwości współpracy programu QGIS z bazami PostgreSQL/PostGIS. Osoby, którym nie odpowiada import plików *.shp do baz danych przy użyciu terminala z pewnością ucieszy fakt, iż taki sam efekt można osiągnąć za pomocą kilku kliknięć myszką w programie QGIS. Służy do tego wtyczka SPIT (Wtyczki ›› SPIT ›› Importuj format Shapefile do PostgreSQL). Jeśli nie jest widoczna, należy skorzystać z Menedżera Wtyczek QGIS i zaznaczyć odpowiednią pozycję.

W widocznym oknie nawiązujemy połączenie z bazą danych (jeśli wcześniej go nie zdefiniowaliśmy teraz należy to uczynić) oraz za pomocą przycisku Dodaj dodajemy interesujące nas pliki *.shp.
Prawda, że proste? :)

Import pliku *.shp do bazy PostgreSQL/PostGIS za pomocą terminala w systemie Linux (Ubuntu 9.04)

19/06/2009 1 komentarz

W celu zaimportowania do bazy danych PostgreSQL/PostGIS danych w pliku *.shp należy w terminalu systemu Linux wprowadzić poniższe polecenia:

shp2pgsql -s EPSG sciezka_do_pliku_shp nazwa_tabeli > nazwa_pliku_z_komendami_sql

dla przykładu:

shp2pgsql -s 4326 /home/mel/dane/shape/laki.shp laki > laki.sql

Następnym krokiem w systemie Windows byłoby bezpośrednie dodanie danych do bazy poprzez wykorzystanie utworzonego pliku *.sql. W przypadku systemu Linux sytuacja komplikuje się nieznacznie ze względu na uprawnienia poszczególnych użytkowników.

Jeśli dotychczas nie zmienialiśmy użytkowników to zarówno plik wejściowy *.shp jak i wynikowy *.sql należą do użytkownika, który nie ma uprawnień dostępowych do bazy danych PostgreSQL/PostGIS. W tym celu należy zmienić uprawnienia dla pliku *.sql poprzez polecenie:

sudo chown uzytkownik_z_dostepem_do_bazy plik.sql

przykładowo:

sudo chown postgres laki.sql

Następnie przełączamy w terminalu użytkownika:

su uzytkownik

przykładowo:

su postgres

oraz dodajemy dane do bazy:

psql -d nazwa_bazy -f plik.sql -U uzytkownik

dla przykładu:

psql -d mytestdb -f laki.sql -U postgres

Poprawność dodanych danych możemy sprawdzić w programie pgAdmin3:



a także poprzez wyświetlenie ich w programie QGIS. Tym jednak, oraz innymi możliwościami współpracy programu QGIS z bazą danych PostgreSQL/PostGIS zajmę się w następnym wpisie.

Instalacja i konfiguracja PostGIS w systemie Linux (Ubuntu 9.04)

12/06/2009 Dodaj komentarz

PostGIS jest rozszerzeniem systemu baz danych PostgreSQL, wzbogacającym jego funkcjonalność o możliwość wprowadzania danych przestrzennych i zarządzania nimi.
Proces instalacji PostgreSQL w systemie Ubuntu (9.04) prezentowałam kilka dni temu. Dziś chciałabym pokazać jak zainstalować i skonfigurować poprawnie rozszerzenie PostGIS, dzięki któremu bazy danych PostgreSQL znajdą zastosowanie w GIS.

Jak wiadomo, instalacji nowych komponentów w systemie Linux można dokonać na trzy sposoby:
1. Instalacja ze źródeł:
ściągamy z oficjalnej strony najnowsze archiwum.
2. Instalacja z paczek (Menedżer Pakietów Synaptic):
zaznaczamy do instalacji dwa pakiety: postgis oraz postgresql-8.3-postgis
3. Instalacja z paczek (terminal):
sudo apt-get install postgresql-8.3-postgis postgis

Dalszy opis postępowania dotyczy instalacji z paczek.

PostGIS został zainstalowany.
Aby móc w pełni cieszyć się możliwością dodawania danych przestrzennych do baz PostgreSQL koniecznych jest jeszcze kilka kroków.
Uwaga – poniższe czynności należy wykonać w przypadku każdej bazy danych, w której mają być zawarte dane przestrzenne.

1. Uruchamiamy terminal i zmieniamy użytkownika na postgres
su postgres

2. Tworzymy nową bazę danych (ten krok pomijamy jesli chcemy dodać rozszerzenia przestrzenne do istniejącej już bazy danych):
$ createdb mojabaza

3. Dodajemy proceduralny język PL/pgSQL do bazy danych:
$ createlang plpgsql mojabaza

4. Wykonujemy polecenia
$ psql -d mojabaza -f /usr/share/postgresql-8.3-postgis/lwpostgis.sql
oraz
$ psql -d mojabaza -f /usr/share/postgresql-8.3-postgis/spatial_ref_sys.sql
Dzięki nim w bazie danych zostaną utworzone postgisowe tabele geometry_columns (zawiera dane o każdej kolumnie przestrzennej w bazie) oraz spatial_ref_sys (zawiera informacje o używanych przez PostGIS układach współrzędnych).

Zawartość bazy danych można sprawdzić w programie pgAdmin III:

PostGIS

lub w terminalu:

PostGIS

Instalacja bazy danych PostgreSQL (+ pgAdmin3) w systemie Linux (Ubuntu 9.04)

05/06/2009 6 uwag

PostgreSQL jest jednym z najpopularniejszych systemów zarządzania obiektowo – relacyjnymi bazami danych. Dla użytkownika GIS jest to system o tyle istotny, gdyż dysponuje dobrze rozwiniętym rozszerzeniem przestrzennym (PostGIS).

Na początek chciałabym przedstawić szybki sposób instalacji bazy danych PostgreSQL wraz z interfejsem graficznym pgAdmin3 w systemie operacyjnym Ubuntu 9.04 (w opisie ograniczyłam się tylko do niezbędnego minimum pozwalającego na rozwiązanie problemów z dostępem do bazy danych przez pgAdmina).

Instalację bazy danych PostgreSQL zaczynamy od ściągnięcia i zainstalowania podstawowych pakietów. W tym celu w terminalu należy wpisać:

sudo apt-get install postgresql

oraz

sudo apt-get install pgadmin3

Pierwsze polecenie zainstaluje niezbędne elementy bazy danych, natomiast drugie – interfejs graficzny służący do zarządzania bazą danych.

Instalacji można również dokonać w Menedżerze Pakietów Synaptic poprzez wyszukanie, zaznaczenie oraz zainstalowanie wymienionych powyżej pakietów wraz z pakietami powiązanymi.

Konfiguracji dokonujemy w terminalu. Zaczynamy od połączenia z bazą danych:

$ sudo su postgres -c psql

Przywita nas:

Welcome to psql 8.3.7, the PostgreSQL interactive terminal.

Type:
\copyright for distribution terms
\h for help with SQL commands
\? for help with psql commands
\g or terminate with semicolon to execute query
\q to quit

postgres=#

Zwróćmy uwagę, iż od tego czasu w terminalu domyślny znak zachęty:

nazwa_użytkownika@nazwa_komputera:~$

zostało zastąpiony przez:

postgres=#

Następnym krokiem będzie zmiana hasła dla użytkownika postgres:

postgres=# ALTER USER postgres WITH PASSWORD ‘nowe_haslo’;

oraz zakończenie pracy i powrót do linuksowego terminala:

postgres=# \q

Kto instalował PostgreSQL w systemie Windows ten pewnie wie, iż podczas instalacji tworzone są tak naprawdę dwa rodzaje kont – konto administratora bazy danych (z którego korzystamy łącząc się z bazą) oraz konto użytkownika w systemie operacyjnym (z którego raczej nie korzystamy ;)). Hasło do pierwszego konta (administratora bazy danych) przed chwilą zmieniliśmy. Teraz pozostała jeszcze zmiana hasła dla użytkownika systemowego. W tym celu najpierw usuwamy hasło dla użytkownika postgres:

$ sudo passwd -d postgres

a następnie tworzymy nowe:

$ sudo su postgres -c passwd

Zostaniemy poproszeni o podanie nowego hasła:

Nowe hasło UNIX:

oraz jego powtórzenie:

Powtórzenie hasła UNIX:

Jeśli nie popełnimy literówki o powodzeniu zostaniemy poinformowani komunikatem:

passwd: hasło zostało zmienione

Uwaga: hasła dla obu kont mogą być takie same.

Po wykonaniu powyższych czynności możemy bez problemu połączyć się z bazą danych w programie pgAdmin3:

Follow

Otrzymuj każdy nowy wpis na swoją skrzynkę e-mail.