Archiwum

Archiwum kategorii ‘MapServer’

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.

MapServer – wprowadzenie i instalacja

01/04/2009 Dodaj komentarz

MapServer jest jednym z najpopularniejszych programów, a raczej serwerów zajmujących się udostępnianiem w sieci danych przestrzennych (bazując na porównaniach ze stajni Googla, należałoby chyba raczej stwierdzić, że najpopularniejszym – odnośniki do porównania udziału w sieci z GeoServerem i ArcIMS). Powstał na Uniwersytecie w Minnesocie przy wsparciu NASA.

Dostępny jest na wszystkie trzy najpopularniejsze platformy systemowe (Windows, Linux, Mac OS X). W poniższym opisie skupię się na instalacji MapServera w środowisku linuksowym.

We wydanej w 2005 roku książce Beginning MapServer: Open Source GIS Development, autor Bill Kropla prezentuje zestawienie zewnętrznych bibliotek, z których korzysta MapServer.

Biblioteka         |       minimalna wersja    |  obowiązkowa/opcjonalna
GD	                        2.0.12		      obowiązkowa
FreeType	                2.x		      opcjonalna
libJPEG		                ---		      opcjonalna
libpng		                1.2.7		      obowiązkowa
zlib		                1.0.4		      obowiązkowa
GDAL		                1.1.8		      opcjonalna
OGR                             ---                   opcjonalna
Proj.4		                4.4.3                 opcjonalna
shapelib                        ---                   opcjonalna
libcurl		                7.10                  opcjonalna
SDE Client libraries            ---                   opcjonalna
PostgreSQL Client libraries     ---                   opcjonalna
Oracle Client libraries         ---                   opcjonalna
Ming				0.2a                  opcjonalna
LibTIFF                         ---                   opcjonalna
LibGeoTIFF                      ---                   opcjonalna
PDFLib			        4.0.3                 opcjonalna

źródło: Beginning MapServer: Open Source GIS Development, Bill Kropla. Apress, 2005.

Jak widać, większość wymienionych bibliotek nie jest obowiązkowa. Dodatkowe biblioteki okażą się niezbędne jeśli w czasie pracy z MapServerem będziemy chcieli korzystać np. z danych zgromadzonych w bazach danych takich jak Oracle czy PostgreSQL.

Tyle od autora książki.
Poniżej przedstawiam łatwy i niezajmujący dużo czasu sposób instalacji niezbędnych komponentów mapserverowego środowiska w Ubuntu 8.04:

Instalacji możemy dokonać w szybko oraz wygodnie za pomocą terminala i polecenia

sudo apt-get install nazwa_pakietu

jednakże w tym przypadku skorzystam z Menadżera Pakietów Synaptic, znajdującego się w System ›› Administracja.

Wyszukujemy następujące pakiety (w nawiasach podane za jaki program/bibliotekę odpowiadają), zaznaczamy do zainstalowania i klikamy Zastosuj:

(APACHE)
- apache2

(GDAL)
- gdal-bin
- libgdal1-1.4.0
- libgdal-doc
- python-gdal

(MAPSERVER)
- cgi-mapserver
- mapserver-bin
- mapserver-doc
- php5-mapscript
- python-mapscript

Poprawność zainstalowanego Apache’a sprawdzamy poprzez wpisanie w przeglądarce internetowej adresu localhost. Naszym oczom powinien ukazać się napis It Works!

Z kolei jeśli MapServer został poprawnie zainstalowany po wpisaniu adresu http://localhost/cgi-bin/mapserv? powinien ukazać się komunikat No query information to decode. QUERY_STRING is set, but empty.

Katalogiem domyślnym Apache’a w Linuksie jest /var/www, do którego niezbędne uprawniania posiada tylko administrator. W związku z tym należy utworzyć w tym miejscu link symboliczny odwołujący się do wybranego przez nas katalogu, w którym będziemy trzymać nasze strony. Aby to zrobić przechodzimy do katalogu Apache’a za pomocą polecenia

cd ścieżka_dostępu

czyli w tym przypadku

cd /var/www

a następnie tworzymy link symboliczny o nazwie (tutaj o nazwie linksymb) do naszego wybranego katalogu (tutaj o nazwie stronywww)

sudo ln –s ścieżka_do_wybranego_katalogu nazwa_linka

czyli

sudo ln –s /home/user/stronywww linksymb

Po wykonaniu powyższych czynności i wpisaniu w przeglądarce internetowej adresu localhost/linksymb powinna ukazać się zawartość katalogu stronywww.

W celu usunięcia linku symbolicznego należy (znajdując się ciągle w katalogu /var/www) użyć polecenia:

sudo rm nazwa

czyli

sudo rm linksymb

Follow

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