OpenStreetMap


OSM dla programisty

W przeciwieństwie do większości komercyjnych i urzędowych rozwiązań mapowych, OpenStreetMap wyróżnia się pełnym (zarówno do pobrania, jak i edycji) dostępem do danych źródłowych. Fakt ten jest niesamowicie istotny dla twórców aplikacji i usług, oznacza bowiem znacznie szersze możliwości oraz większą paletę narzędzi. W tym artykule omówię podstawowe aspekty użycia OpenStreetMap we własnych aplikacjach.

Licencja

Od przeprowadzonej w 2012 r. zmiany licencji dane OSM są dostępne na zasadach licencji Open Database License. W przypadku wykorzystania niezmienionych danych, jedynym obowiązkiem nakładanym przez licencję jest właściwe oznaczenie źródła danych. Jeśli natomiast dane OSM mają być łączone z innymi, należy je albo odseparować (w przypadku aplikacji GIS, najprościej poprzez umieszczenie na osobnej warstwie), albo opublikować połączoną bazę danych (np. o zweryfikowanej topologii, lub wzbogaconej treści) na takich samych zasadach jak oryginał.

Wytworzone na podstawie niezmienionych danych OSM produkty (jak mapy cyfrowe i drukowane) i usługi (np. wyszukiwanie, wyznaczanie trasy) mogą być sprzedawane i licencjonowane na dowolnych zasadach, pod warunkiem właściwego oznaczenia źródła danych.

Możliwość edycji

Elementem wyróżniającym OSM na tle innych, podobnych projektów jest zapewnienie równych praw do edycji wszystkim użytkownikom. Brak tu wyznaczonych moderatorów, poziomów uprawnień, obowiązku zdobywania doświadczenia itp. Zasada ta czasem budzi kontrowersje i dyskusje nad jej zmianą, ale obecnie się na to nie zanosi. Jedynym wymogiem jest posiadanie konta, przy czym nie jest wymagane tworzenie nowego loginu i hasła – można wykorzystać OpenID.

Edycji danych można dokonywać za pośrednictwem jednego z edytorów ogólnego przeznaczenia (przeglądarkowe iD lub Potlatch, desktopowe JOSM lub Merkaartor, mobilny Vespucci), ale też wyspecjalizowanych aplikacji mobilnych umożliwiających szybkie zbieranie danych określonego typu (np. punktów POI, hydrantów, słupków kilometrowych, punktów adresowych) bezpośrednio w terenie.

Każdy może stworzyć własną aplikację umożliwiającą edycję danych OSM. Aktualna wersja API projektu nosi numer 0.6 i jest udokumentowana na tej stronie.

Własny wygląd mapy

Wolny dostęp do danych źródłowych i większości narzędzi do renderowania obrazów map daje możliwość stworzenia własnego, niepowtarzalnego stylu graficznego. Właściwie każdy program do renderowania map z surowych danych geograficznych może być użyty w tym celu. Do najłatwiejszych w obsłudze i najlepiej dostosowanych do danych OSM zalicza się TileMill oraz Maperitive.

Działanie w trybie offline i w sieciach wewnętrznych

OSM daje wiele możliwości wykorzystania bez połączenia z głównym serwerem projektu. Najprostszą jest pobranie zestawu obrazów mapy – tzw. kafelków – i przechowanie ich w pamięci urządzenia. Należy pamiętać, że o ile nie ma żadnych formalnych ograniczeń co do ilości czy czasu przechowywania danych, regulamin serwera osm.org zabrania masowego pobierania kafelków ze względów technicznych – powoduje to bowiem duże obciążenie serwera. Należy wtedy zwrócić się do wyspecjalizowanego dostawcy lub uruchomić swój własny serwer.

W urządzeniach mobilnych oprócz gotowych kafelków mapy, można zastosować również renderowanie wprost z danych wektorowych. Dla systemu Android istnieje np. biblioteka MapsForge.

Możliwość działania offline nie jest ograniczona wyłącznie do obrazów map. Na podstawie pobranej kopii danych można uruchomić także inne usługi, np. nawigację.

Tagi: , ,
Konwersja danych OpenStreetMap do formatów GIS

Po pobraniu części lub całości danych stajemy przed kolejnym problemem: jak ich użyć w środowisku GIS? Ze względu na specyficzny model danych, są one dla większości standardowych narzędzi zupełnie niestrawne. Istnieje szereg konwerterów, z których omówię trzy: wtyczkę QGIS, osm2pgsql oraz Imposm.

[important]Poniżej opiszę sposoby konwersji danych,które są zoptymalizowane pod kątem wizualizacji. Innych narzędzi trzeba będzie użyć w celu zbudowania topologii sieci, albo stworzenia bazy punktów adresowych.[/important]

 1. OpenStreetMap Plugin

Jest to standardowo instalowana wtyczka do QGIS – wystarczy ją włączyć.

Oprócz pobierania danych z API, posiada również funkcję wczytywania plików .osm pozyskanych innymi sposobami. Dużą wadą tego rozwiązania jest ograniczenie liczby dostępnych kolumn atrybutów do 9 predefiniowanych – wobec mnogości tagów jest to o wiele za mało, oraz brak obsługi plików skompresowanych bzip2. Po wczytaniu do widoku QGIS powstaną 3 warstwy – po jednej na obiekty punktowe, liniowe i powierzchniowe. Następnie można je zamienić na pliki Shapefile, przez klik prawym klawiszem myszy i „Zapisz jako…”.

2. Osm2pgsql

Konwerter ten służy do importu danych OSM do bazy PostGIS. Umożliwia import plików .osm, .pbf i .osm.bzip2, a także aktualizację bazy przy pomocy diffów. W systemie Linux można go zainstalować z pakietów (w Ubuntu znajduje się w standardowym repozytorium), bądź skompilować ze źródeł. Dla Windows najnowszą wersję trzeba skompilować samemu, natomiast starsze są dostępne jako jeden z elementów pakietu Hotosm.

Narzędzie obsługuje się z linii komend. Dostępnych jest wiele parametrów, których lista wyświetli się po wykonaniu komendy osm2pgsql -h. Baza danych tworzona przez osm2pgsql składa się z trzech tabel przestrzennych: planet_osm_point, planet_osm_line i planet_osm_polygon. Liczba kolumn, tworzonych na podstawie kluczy tagów, jest zależna od użytkownika – ustala się ją za pomocą pliku .style (można stworzyć swój od zera lub edytować domyślny default.style, w Ubuntu zlokalizowany jest w katalogu /usr/share/osm2pgsql).

Import danych może zostać dokonany w trybie standardowym – wówczas wszystkie dane OSM zostaną załadowane do pamięci RAM, lub w tzw. slim mode. Istotą tego drugiego jest utworzenie tymczasowych, nieprzestrzennych tabel, służących jako magazyn. Umożliwia to przetwarzanie plików większych niż rozmiar RAMu.

Baza utworzona przez osm2pgsql jest wyjątkowo mało przyjazna w korzystaniu, głównie za sprawą ogromnej liczby kolumn. Nowe wersje pozwalają nieco ograniczyć ten problem, korzystając z zapisu wszystkich tagów w jednej kolumnie typu hstore. Schemat podziału danych na trzy tabele jest sztywny – jedyne, na co mamy wpływ, to ilość kolumn. Głównym zadaniem tego narzędzia jest przygotowanie bazy dla wizualizacji za pomocą biblioteki Mapnik.

3. Imposm

Jest to projekt rozwijany przez firmę Omniscale. Istnieją dwie wersje, 2 napisana w języku Python i 3 napisana w Go. W odróżnieniu od osm2pgsql użytkownik ma znacznie większy wpływ na schemat bazy danych: ilość, nazwy, zawartość, typ geometrii tabel są w pełni konfigurowalne. Możliwe jest skupienie wartości tagów z różnych kluczy (np. pokrycie terenu z kluczy landuse, natural, man_made, leisure, waterway) w jednej kolumnie „type“, co bardzo ułatwia wizualizację, a także ograniczenie importowanych wartości – pomocne przy tworzeniu map tematycznych.

Ponadto, konwerter ten umożliwia automatyczne tworzenie tabel o zgeneralizowanej geometrii (za pomocą funkcji ST_Simplify z PostGIS) dla map w małych skalach i widoków łączących różne dane, np. wszystkie kategorie dróg razem.

Imposm również jest obsługiwany z linii komend. Podstawowe polecenia to:

–read – wczytuje dane OSM z pliku (XML albo PBF) i umieszcza w tymczasowej bazie,

-write – zapisuje dane z bazy tymczasowej do PostGIS, zostaną umieszczone w tabelach z przedrostkiem osm-new  w przypadku Imposm2 lub w schemacie „import” dla Imposm3.

–deploy-production-tables – przenosi dane z tabel przejściowych do tabel produkcyjnych.

Imposm 2 nie umożliwia przyrostowej aktualizacji danych, natomiast Imposm 3 – tak.

Tagi: , ,
OpenStreetMap – jak pobrać dane?

Dane OpenStreetMap są dostępne dla każdego do pobrania. Jednak nie każdy wie, że istnieje kilka różnych sposobów na ich pozyskanie z sieci. Każdy z nich ma swój zakres zastosowania, głównie w zależności od tego, jak dużo danych potrzebujemy oraz pożądanego formatu: oryginalny XML, binarny PBF, czy też dane przetworzone do postaci Shapefile.

1. API

Jest to najważniejsza usługa głównego serwera bazy danych, umożliwiająca zarówno odczyt jak i zapis. Jego głównym zadaniem jest dostarczanie małych porcji danych w celu ich edycji i wysłania zmian na serwer. Jest zatem usługą najsilniej obciążoną i obowiązują ją ostre limity: największy dopuszczalny obszar może mieć 0,25 stopnia kwadratowego lub 5 milionów elementów (nodes, ways i relations), w zależności od tego, co jest mniejsze. API nadaje się więc do doraźnego pobierania danych dla najmniejszych obszarów – najwyżej jednej gminy, a w przypadku miast z dużą ilością szczegółów – nawet osiedla.

Z API możemy skorzystać na następujące sposoby:

  1. poprzez zakładkę „Export” na stronie www.openstreetmap.org, wybierając opcję „OpenStreetMap XML”,
  2. wykorzystując wtyczkę OpenStreetMap do QGIS i podając zakres w układzie WGS84 i formacie stopnie.dziesiąte stopnia,
  3. poprzez bezpośrednie wysłanie zapytania do serwera (np. używając narzędzia wget) w następującej składni
    http://api.openstreetmap.org/api/0.6/map?bbox=<left>,<bottom>,<right>,<top>

BBOX podajemy w następującej kolejności: zachodnia, południowa, wschodnia, północna granica  obszaru i formacie stopnie.dziesiąte stopnia. Wynik otrzymamy zawsze w postaci nieskompresowanego XML.

 2. Overpass API

Ta usługa korzysta z kopii bazy danych, udostępnionej tylko do odczytu. Overpass API udostępnia własny język zapytań, który umożliwia filtrowanie danych według zadanych kryteriów atrybutowych lub przestrzennych. Z tego API można skorzystać za pośrednictwem serwisu http://overpass-turbo.eu lub wtyczki do QGIS o nazwie „QuickOSM”.

3. Geofabrik.de (planet extracts)

Niemiecka firma Geofabrik udostępnia za darmo do ściągnięcia większe fragmenty danych OSM. Dostępne są w trzech postaciach: binarnym formacie PBF, XML spakowanego kompresorem bzip2, albo też przekonwertowanej do formatu Shapefile. Dostępne są pakiety dla krajów, kontynentów i pojedynczych stanów USA. Ale uwaga – dane nie są precyzyjnie wymaskowane wzdłuż granic, zdarzają sie drobne fragmenty z krajów sąsiednich. Odpowiednie dane o granicach państwowych zwykle znajdują się w OSM, więc wystarczy po ściągnięciu i konwersji użyć odpowiedniego zapytania przestrzennego, by tę wadę usunąć.

Dane w formacie SHP, w odróżnieniu od oryginalnego XML, są gotowe do użycia w środowisku GIS. Zostały one podzielone na osobne warstwy tematyczne , oraz co bardzo ważne – najistotniejsze atrybuty skupione zostały w jednej kolumnie „fclass”. Dzięki temu można użyć ich w programach nie posiadających opcji wizualizacji opartej na regułach (rule-based rendering), koniecznej do wykorzystania wielu kolumn. Do tych danych dostępna jest szczegółowa dokumentacja w języku niemieckim i angielskim.

Adres do strony pobierania: http://download.geofabrik.de/osm/

4. Planet.osm

Jest to zrzut całej zawartości bazy OSM. Można go pobrać z http://planet.openstreetmap.org, aktualnie zajmuje 36 GB w formacie binarnym. Import tak dużej bazy wymaga już mocnej maszyny. Aby ułatwić aktualizację posiadanej bazy o takich rozmiarach, publikowane są tzw. diffy – zestawy zmian. Dostępne są zestawy generowane co minutę, godzinę, dzień i tydzień. Ale uwaga – nie wszystkie konwertery obsługują aktualizację tą metodą.

Tagi: , ,
O co chodzi w OpenStreetMap?

Konieczność posiadania podkładu mapowego jest często sporym problemem w działaniach GIS-owych, szczególnie jeśli niezbędne są prawa do publikacji. Ceny takich podkładów, szczególnie wektorowych, mogą być barierą nie do przeskoczenia dla niskobudżetowych projektów. Skoro mamy już wolne oprogramowanie, dlaczego miałoby nie być wolnych map? Przy obecnym stanie techniki zbieranie danych przestało wszak wymagać specjalnych umiejętności i drogiego sprzętu. Dlatego możliwe stało się powstanie takich projektów, jak OpenStreetMap. Poniżej postaram się opisać najważniejsze zasady funkcjonowania i korzystania z zasobów OSM.

Czytaj całość

Tagi: , ,

GIS SUPPORT sp. z o.o.


SZKOLIMY

z QGIS oraz innego otwartego oprogramowania GIS.

zobacz ofertę szkoleń