MapServer i PostGIS

26/11/2009 meliel 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.

TNTmips – publikowanie tilesetów w Internecie

10/11/2009 meliel 1 comment

Utworzone tilesety zostały połączone. Czas na ostateczne przygotowanie mapy, która zostanie opublikowana w Internecie. Służy do tego polecenie z menu Main ›› Publish ›› Geomashup.

TNTmips - publish geomashup

Po pierwsze, wybieramy API. Póki co dostępne jest tylko Google Maps API; na zaimplementowanie pozostałych (Bing Maps, Google Earth, Open Layers) trzeba będzie jeszcze trochę poczekać…

Następnie przechodzimy do trzech zakładek. W pierwszej (Base maps) wybieramy warstwy, które będą stanowić podkład dla naszych danych, dodawanych w drugiej zakładce (Overlays). Oczywiście część utworzonych przez nas tilesetów może pełnić funkcję map bazowych dla reszty. Jaka jest więc różnica między tymi dwoma typami? Warstwy, tzw. nakładki (overlays) w odróżnieniu do map bazowych (base maps) będzie można za pomocą checkboxów włączać i wyłączać oraz nakładać na podkłady, którymi są właśnie mapy bazowe (base maps).

Przechodzimy więc do pierwszej zakładki. Za pomocą ikony Add Base map możemy dodać zapisane na dysku twardym tilesety w formacie *.tms. Ponadto, można skorzystać z listy rozwijanej i wybierać spośród obszernej kolekcji (m.in. mapy drogowe, mapy rowerowe, zdjęcia satelitarne, powierzchnia Marsa lub Księżyca, gwiazdozbiory itp).

TNTmips - publish geomashup

W przypadku drugiej zakładki – podobnie. Dodatkowo, istnieje również możliwość dodania danych w pliku *.kml.
Dla wybranych warstw można ustalić przezroczystość (Opacity) oraz zakres powiększenia przy którym dana warstwa będzie wyświetlana (Min oraz Max Zoom).

TNTmips - publish geomashup

Trzecia zakładka to ustawienia ogólne. Część z nich jest przypisana konkretnemu API. Możemy tu zarządzać komponentami mapy, m.in. kontrolkami nawigacji (Map control style), kontrolkami zmiany trybu mapy (Overlay Control), mapką poglądową w prawym dolnym ekranie (Overview Map), podziałką skali (Scale Bar) itp.

TNTmips - publish geomashup

Tak przygotowaną stronę z mapą możemy podejrzeć za pomocą ikonki Preview Web Page oraz ostatecznie utworzyć za pomocą ikonki Create Web Page. Ustawienia można zapisać (ikonka Save Configuration) w celu ich późniejszego załadowania (ikonka Load Configuration).

TNTmips - publish geomashup

Aby strona z mapą ujrzała światło dzienne w Internecie należy wygenerowany plik *.html oraz katalog ze zbiorem kafelków skopiować na serwer. Oczywiście kod źródłowy strony można dowolnie edytować i wprowadzić parę drobnych zmian ;)

Na koniec parę słów podsumowania. Funkcjonalność programu TNTmips w zakresie tworzenia tilesetów i przygotowywania ich do publikacji w Internecie bardzo upraszcza sam proces tworzenia map. Jednakże, są to funkcje będące obecnie ciągle w fazie rozwojowej i dopóki nie powstanie wersja ostateczna należy się przygotować na częste zmiany w interfejsie i ustawieniach poszczególnych procesów.

Przykłady gotowej strony:

TNTmips - gotowa stronaPodkład – Google Map

TNTmips - gotowa stronaPodkład – Google Sky

TNTmips - gotowa stronaPodkład – Open Street Map (Mapnik)

TNTmips - gotowa stronaPodkład – Structural Earth

Kategorie:TNTmips

TNTmips – łączenie tilesetów

31/10/2009 meliel Dodaj komentarz

Jeśli w procesie tworzenia tilesetów wskazaliśmy kilka obrazów wejściowych to tak utworzone tilesety przed opublikowaniem w Internecie należy połączyć. Służy do tego polecenie z menu Raster ›› Merge Tilesets (po zmianie: Tileset ›› Merge)
Wskazujemy pliki *.tms, które zostały utworzone w trakcie procesu tworzenia tilesetów. Co istotne, wskazane pliki muszą być utworzone dla tego samego API (czyli tylko dla np. Google Maps, albo tylko dla World Wind; nie można łączyć tilesetów utworzonych dla różnych API – patrz kolumna Tileset), ale nie muszą być utworzone dla tego samego zakresu poziomów (patrz kolumna Levels):

Merge tilesets

Dzięki temu, można użyć danych o innym poziomie szczegółowości do wypełnienia luk w zasadniczym tilesecie.

Istotne jest również określenie minimalnego oraz maksymalnego poziomu powiększenia dla danych (Minimum oraz Maximum Zoom Level). Będzie to miało istotne znaczenie po opublikowaniu mapy. Poziomy te określają bowiem zakres, w którym dane zostaną wyświetlone. Dla przykładu, jeśli minimalny poziom zostanie ustawiony na 8, a maksymalny na 15 to dane zostaną wyświetlone tylko jeśli użytkownik ustawi mapę na poziomie powiększenia między 8 a 15.

W efekcie łączenia otrzymujemy jeden plik *.tms oraz stronę *.html

Przed nami pozostał ostatni etap – publikowanie tilesetów w Internecie.

Kategorie:TNTmips

TNTmips 2010 – zmiany w interfejsie

29/10/2009 meliel Dodaj komentarz

Wersja 2010 programu TNTmips jest wersją developerską, co oznacza nic innego jak tylko konieczność nadążania za ciągłymi zmianami, które serwują programiści MicroImages przy każdej kolejnej aktualizacji ;)
Ostatnie dni obfitowały w dość znaczące zmiany w interfejsie programu. Przede wszystkim zmieniło się menu główne. Menu Raster zmieniło nazwę na Image, a ponadto przybyły dwie nowe pozycje: Tileset oraz Terrain, które ukazują obecny kierunek rozwoju programu.

Menu TNTmips 2010Poprzednie menu

Menu TNTmips 2010Nowe menu

 

Menu Tileset gromadzi procesy związane z tilesetami. Przy okazji nastąpiła mała rewolucja – dodane zostały nowe procesy, niektóre zmieniły nazwę (np. Create Tilesets nazywa się obecnie Export to…) oraz lokalizację (polecenie służące publikowaniu tilesetów znajduje się obecnie w menu Main ›› Publish ›› Geomashup).

Menu TNTmips 2010

 

Natomiast menu Terrain zawiera zbiór poleceń umieszczonych wcześniej w Raster ›› Elevation oraz Convert ›› Surface Modeling. Ponadto, docelowo w tym menu będą umieszczane nowe procesy związane z LiDARem.

Menu TNTmips 2010

 

Oprócz tego, znaczące zmiany dotknęły również okna wyboru obiektów.

TNTmips 2010Poprzedni wygląd

TNTmips 2010Nowy wygląd

Kategorie:TNTmips

TNTmips – tworzenie tilesetów

16/10/2009 meliel Dodaj komentarz

TNTmips w najnowszej wersji 2010 oferuje bogaty zakres możliwości dotyczących tworzenia i publikowania w Internecie zbiorów obrazów, tzw. tilesetów. Sama koncepcja polega na dzieleniu obrazu na mniejsze części (zwane kafelkami), co w efekcie znacznie przyspiesza jego wyświetlanie w Internecie.

Cały proces w TNTmips 2010 został podzielony na trzy części: tworzenie, łączenie tilesetów oraz publikowanie ich w Internecie.

Do tworzenia nowych tilesetów służy polecenie z menu Raster ›› Create Tilesets (po zmianie: Tileset›› Export to). Za pomocą ikon Add Images/Add Color Composite Images/Add Multi-Band Images dodajemy obrazy, z których chcemy utworzyć tilesety. Jednocześnie możemy wskazać jeden lub więcej obrazów. W zakładkach Output, Parameters i Display zarządzamy właściwościami tworzonych tilesetów.

Create Tilesets

Zaczynamy od wyboru docelowego formatu (Target). Do wyboru jest TNT tileset raster (natywny format zapisu programu TNTmips, czyli pliki *.rvc), Google Maps, Google Earth, Microsoft Bing Maps oraz World Wind. Od tego wyboru zależą dalsze opcje. Na przykład, dla Google Maps pozostałe ustawienia będą dotyczyć formatu kafelków (Image format), ich rozmiaru w pikselach (Tile size), maksymalnego stopnia powiększenia (Maximum Zoom Level), liczby poziomów powiększenia (Number of Levels), a także podania Google Maps Key (dotyczy Google Maps API w wersji 2) oraz tekstu, który wyświetli się w przypadku braku danych (No data text). Ponadto możemy utworzyć archiwum z powstałych plików (Zip output) oraz po tej operacji usunąć je automatycznie (Delete files after zipping).

Przydatną opcją, jest możliwość przycięcia obrazu wejściowego za pomocą tzw. regionu (Limiting region / Clipping area), którym jest dowolny plik wektorowy (bądź rastrowy binarny) zawierający poligon w oparciu o który nastąpi przycięcie. Dzięki temu można dowolnie modyfikować zakres i kształt wyjściowego tilesetu.
Dla każdego tilesetu można zdefiniować osobny plik z regionem (kolumna Clipping Area) lub wybrać jeden plik dla wszystkich (ikonka Clipping Areas). Ponadto, za pomocą GeoToolboxa można ręcznie narysować poligon ograniczający zakres wyjściowego tilesetu.

Create Tilesets - GeoToolbox

Po ustawieniu wszystkich parametrów klikamy na ikonę Run i wskazujemy folder docelowy. Jeśli wybrany został format zapisu inny niż natywny dla TNTmips (czyli np. Google Earth, NASA World Wind itp.) dodatkowo zostanie utworzony plik *.tms, umożliwiający w szybki sposób wyświetlenie tilesetów w programie TNTmips.

Kategorie:TNTmips

TNTmips – wyświetlanie tilesetów (pliki *.tms)

09/10/2009 meliel Dodaj komentarz

Tilesety to zbiory plików graficznych o takim samym rozmiarze (np. 256×256 px), zwanych kafelkami (ang. tile). Stosowane są w celu przyspieszenia wyświetlania w Internecie sporej wielkości obrazów.

TilesetPrzykładowy tileset
źródło: dokumentacja TNTmips

O samej idei pisano już wcześniej (np. tu), ja chciałabym się skupić na konkretnym przykładzie.

TNTmips umożliwia tworzenie tilesetów i zapis ich do pliku *.tms. Dzięki temu każdy użytkownik programu TNTmips (w wersji 2010), który ma dostęp do Internetu jest w stanie wyświetlić dany zasób kartograficzny.
W tym celu należy wybrać z menu Main ›› Display, a następnie Add Web Layer i Tileset. Do wyboru są dwa sposoby na wskazanie lokalizacji pliku tms. Możemy wskazać plik zapisany na dysku twardym naszego komputera (Local) bądź podać adres URL do pliku znajdującego się w Internecie (Remote).

Tileset

Przykładowe tilesety znaleźć można na stronie firmy MicroImages, producenta programu TNTmips.

Tileset

Tileset

Tileset

Kategorie:Mapy, TNTmips

Proste i szybkie wstawianie map, czyli Google Maps dla opornych

08/10/2009 meliel 4 komentarzy

Aby skorzystać z zasobów Google Maps i na własnej stronie internetowej umieścić mapę z zaznaczoną lokalizacją wcale nie trzeba znać się na obsłudze Google Maps API czy też języku JavaScript. Dzięki usłudze Google Web Elements tworzenie spersonalizowanych map nigdy nie było tak proste. Wystarczy wejść na stronę oraz wypełnić kilka pól w formularzu: wybrać rozmiar i typ mapy, podać adres oraz tytuł znacznika.

Google Web Elements

Następnie wygenerowany automatycznie kod HTML należy wkleić na swoją witrynę internetową.

Google Web Elements

Jedynym ograniczeniem usługi Google Web Elements jest możliwość zaznaczenia na mapie tylko jednej lokalizacji.

Kategorie:Google, Mapy

Geographic Imager, czyli GIS w Photoshopie – instalacja

08/09/2009 meliel Dodaj komentarz

Poprzedni wpis dotyczył również Photoshopa, jednak tym razem będzie zdecydowanie bardziej geograficznie ;)
Geographic Imager – narzędzie firmy Avenza umożliwia w popularnym “kombajnie” graficznym pracę na rastrowych danych przestrzennych.

Najnowsza wersja programu (2.5) przeznaczona jest dla Adobe Photoshop CS3/CS4. Użytkownicy starszej wersji Photoshopa (CS2) powinni zainsteresować się wersją Geographic Imager 2.0.

Firma Avenza umożliwia bezpłatne korzystanie z programu przez okres 14 dni. Wymogiem niezbędnym jest rejestracja na stronie producenta; na podany w formularzu adres mailowy zostanie wysłany plik licencji bez której program nie działa.

Po zainstalowaniu programu uruchamiamy Photoshopa i w kreatorze aktywacji wybieramy drugą pozycję (I want to activate the software manually using the activation webpage).

Geographic Imager

Następnie przechodzimy na podaną stronę internetową, gdzie wypełniamy formularz rejestracyjny (istotne jest podanie prawidłowego Machine ID!).

Geographic Imager

Przysłany na adres mailowy plik licencji należy umieścić w odpowiednim katalogu (dla systemu Windows XP domyślnie jest to C:\Documents and Settings\All Users\Dane aplikacji\Avenza\Geographic Imager), po czym uruchomić ponownie Photoshopa.
Jeśli wszystko zostało zrobione poprawnie przywita nas komunikat o ograniczeniu czasowym:

Geographic Imager

Okienko programu, widoczne po prawej stronie obszaru roboczego, w każdej chwili można włączyć w menu Plik ›› Automatyzuj ›› Geographic Imager: Show Palette

Geographic Imager

Do programu dołączony jest zestaw przykładowych danych oraz przewodniki w formacie .pdf.

Kategorie:Photoshop

Automatyzacja czynności w programie Adobe Photoshop (CS3)

01/09/2009 meliel 1 comment

Co prawda Adobe Photoshop jest programem stricte graficznym, jednakże dla potrzeb Systemów Informacji Geograficznej może okazać się niekiedy bardzo przydatny. Często zachodzi bowiem konieczność odpowiedniego przetworzenia obrazów rastrowych przed wykorzystaniem ich w dalszych analizach. Program graficzny, taki jak Photoshop, przychodzi wtedy z nieocenioną pomocą. Dlatego też, początek roku szkolnego chciałabym przywitać wpisem poświęconym automatyzacji działań w tym programie.

Załóżmy, że mamy wiele rastrów, które trzeba poddać pewnym operacjom. Można oczywiście otworzyć w programie każdy z nich z osobna i po kolei stosować te same ustawienia. Ale po co, skoro można to działanie zautomatyzować? Do tego właśnie służą operacje, zwane również akcjami.
Zarządzanie operacjami odbywa się w okienku dokowanym Operacje, znajdującym się domyślnie po prawej stronie obszaru roboczego. Włączyć/wyłączyć to i inne okna dokowane można w menu Okno.

Photoshop

Do tworzenia i usuwania służą ikonki znajdujące się na dole okna. Jedna operacja może zawierać wiele czynności, natomiast kilka operacji może być zgrupowanych w jeden zestaw.
Po utworzeniu nowej operacji domyślnie zostanie włączone nagrywanie. Od tego momentu wszystko co zostanie zrobione w programie zostanie zarejestrowane i będzie wchodzić w skład nowo utworzonej przez nas operacji. Po zakończeniu działań należy zaprzestać nagrywania za pomocą przycisku Zatrzymaj wykonywanie lub nagrywanie. Tak utworzoną operację można zapisać do pliku o rozszerzeniu *.atn (dzięki temu możliwe jest późniejsze załadowanie do programu zapisanej operacji).

Photoshop

Korzystanie z operacji odbywa się za pomocą ikonki Wykonaj bieżące zaznaczenie.

Jeśli chcemy danej operacji poddać więcej plików lepszym rozwiązaniem jest skorzystanie z sekwencji wsadowej (Plik ›› Automatyzuj ›› Sekwencja wsadowa). Wybieramy z odpowiedniego zestawu interesującą nas operacje. Następnie wskazujemy folder źródłowy oraz docelowy, a także inne ustawienia wedle uznania. Klikamy OK i, w zależności od ilości plików oraz skomplikowania operacji, możemy poświęcić się innym, mniej lub bardziej czasochłonnym zajęciom ;)

Photoshop

Kategorie:Photoshop

Łączenie tabel w MapInfo

29/08/2009 meliel Dodaj komentarz

Załóżmy, że mamy dwie tabele, które chcemy połączyć. Pierwsza zawiera spis powiatów z poszczególnych województw oraz ich siedzib. Druga dotyczy liczby ludności w poszczególnych powiatach na przestrzeni kilku lat. Chcemy połączyć obie tabele tak, aby tabela wynikowa zawierała informacje zarówno o siedzibach poszczególnych powiatów, a także o liczbie ludności. Obie tabele mają jedną kolumnę wspólną – identyfikator powiatu i to wg niej będziemy łączyć tabele (teoretycznie możnaby połączyć jeszcze wg kolumny z nazwą powiatu; jak jednak widać na screenie nie jest to zbyt dobry pomysł – nazwy się powtarzają; w tym przypadku wartością unikalną jest identyfikator).

MapInfo

Łączenia tabel dokonamy w szybki sposób za pomocą wyboru SQL (Query ›› Select SQL). Narzędzie to daje możliwość wyboru kolumn, które chcemy aby pojawiły się w tabeli wynikowej (dzięki temu możemy z naprawdę obszernych tabel wybierać tylko to, co nas interesuje), grupowania kolumn, sortowania wg danej kolumny.

MapInfo

Na początek wybieramy które tabele będziemy łączyć. W tym celu w polu from Tables wpisujemy nazwy tabel, bądź wybieramy je za pomocą znajdującej się po prawej stronie listy rozwijanej Tables. Następnie wybieramy w podobny sposób nazwy kolumn, które mają się pojawić w tabeli wynikowej. Jeśli chcemy wszystko to pozostawiamy w polu Select Columns gwiazdkę (*).
W polu where Condition wpisujemy warunek, który umożliwi połączenie tabel. W naszym przypadku łączymy tabele w oparciu o wspólną kolumnę. Wygląda więc to następująco:

nazwa1tabeli.nazwaKolumny = nazwa2tabeli.nazwaKolumny

Co istotne, wspólna kolumna nie musi posiadać takiej samej nazwy! Ważne jednak, aby dane, które zawiera się zgadzały.

W następnym kroku dane możemy pogrupować lub posortować wg kolumny rosnąco (ASC) lub malejąco (DESC). Nazwę tabeli wynikowej nadajemy w polu into Table Named.

Efekt połączenia:

MapInfo

Wynikową tabelę zapisujemy do pliku *.tab za pomocą File ›› Save Copy As

Kategorie:MapInfo