OpenStreetMap


OSM Foundation publikuje wyjaśnienia do licencji OpenStreetMap

Na blogu OpenStreetMap Foundation, organizacji sprawującej pieczę na bazą danych projektu OpenStreetMap, pojawił się artykuł poświęcony stworzeniu tzw. Community Guidelines – wytycznych, w jaki sposób Fundacja interpretuje aktualnie obowiązującą licencję Open Database License. Na ten ruch czekało zapewne wielu użytkowników OSM. Licencja ODbL została bowiem napisana dla bardzo szerokiego spektrum baz danych, także tych niemających nic wspólnego z GIS i przestrzenią. Dlatego pewne zapisy mogły być interpretowane na różne sposoby, co z kolei utrudniało podjęcie decyzji o możliwości lub braku możliwości użycia OSM w konkretnym projekcie.

Opublikowane wytyczne mają szansę zmienić ten stan rzeczy. Można je porównać do sekcji „Allowed Uses” i „Prohibited Uses” zawartych w licencjach komercyjnych geodanych – podanie konkretnych przypadków zastosowań dozwolonych bądź zabronionych przez licencję. Wytyczne są napisane w języku angielskim i dotyczą obecnie następujących kwestii:

  • co rozumie się pod pojęciem nieistotnej części bazy danych (insubstantial extract),
  • czym jest Produced Work w rozumieniu ODbl, a więc praca pochodna mogąca być opublikowana na dowolnych warunkach,
  • czym jest trywialna transformacja (takie przekształcenie bazy, które nie rodzi obowiązku publikacji zmienionej bazy),
  • czy możliwe jest „łatanie” danych OSM innymi danymi w obszarach, gdzie OSM ma niezadowalającą jakość,
  • czy możliwe jest tworzenie map złożonych z wielu warstw, w tym niektórych niespełniających wymogów ODbL.

W trakcie przygotowania są następne tematy, wymagające jeszcze dyskusji wśród społeczności:

  • czy dopuścić łączenie danych OSM z „zamkniętymi” danymi opisowymi (np. recenzje restauracji),
  • czy indeks wyszukiwarki internetowej zawierający informacje o danych OSM jest bazą pochodną,
  • czy dane geokodowane z użyciem bazy OSM powinny podlegać obowiązkowi publikacji,
  • czy dopuścić używanie danych OSM jako drugiego wyboru (fallback) np. w usłudze wyszukiwania,
  • jak stosować klauzulę Share-Alike do danych dynamicznych (np. obłożenia parkingów),
  • jak powinno się publikować algorytmy przekształceń bazy w przypadku przekształceń nietrywialnych.
Nowe mapy OpenStreetMap w gorzowskiej Straży Pożarnej

W czerwcu wykonaliśmy bardzo ciekawe zlecenie dla Komendy Wojewódzkiej Państwowej Straży Pożarnej w Gorzowie Wielkopolskim. Na ścianie Wojewódzkiego Stanowiska Koordynacji Ratownictwa zawisły 3 nowe mapy ścienne, wykonane przez GIS Support na podstawie danych z OpenStreetMap.

Wykonane zostały:

  • mapa topograficzna
  • mapa podziału administracyjnego
  • mapa leśna

Czytaj całość

Osm2gis – nowy sposób na pobieranie danych OSM?

Pod adresem http://www.osm974.re/osm2gis francuska firma GeoTribu uruchomiła usługę, umożliwiającą pobieranie wycinków bazy danych w formatach zgodnych z aplikacjami GIS. W odróżnieniu od innych podobnych usług, łączy w sobie możliwość wybrania obszaru niezależnie od granic administracyjnych, dostępność standardowych formatów GIS i łatwość obsługi.

Pobieranie danych za pomocą osm2gis jest bardzo proste. Korzystając z wyświetlonej mapy, należy wybrać obszar zainteresowania – nie może być on zbyt duży, aplikacja akceptuje obszary o powierzchni rzędu pojedynczego powiatu lub dużej aglomeracji miejskiej.

Strona główna osm2gis

Strona główna osm2gis

Po dopasowaniu właściwego obszaru, możemy przystąpić do „zamówienia“ danych. Możemy wybrać format (KML,GML,TAB,SHP lub SQLite) i układ współrzędnych (WGS84 albo Google Mercator). Kolejnym krokiem jest podanie adresu e-mail, na który zostanie przesłane powiadomienie o możliwości pobrania danych wraz z linkiem.

Wybór opcji pobierania danych

Wybór opcji pobierania danych

Aplikacja umożliwia pobranie porcji danych raz na godzinę z jednego adresu IP. Dane pochodzą z kopii bazy danych OSM utrzymywanej przez stowarzyszenie OpenStreetMap France.

Dane pobieramy w postaci archiwum ZIP, gdzie w podkatalogach umieszczono poszczególne formaty. Niezależnie od formatu, tworzone są 3 niezależne warstwy – osm_point, osm_line i osm_polygon.

Tabela atrybutów każdej warstwy składa się z 75 kolumn, zawierających większość używanych tagów, oprócz tego dołączona jest kolumna o nazwie tags w której zapisano wszystkie tagi obiektu w formacie klucz => wartość oddzielone przecinkami. Jest to więc znacznie bogatsza tabela, niż tworzona przez standardową wtyczkę QGIS.

Do tego etapu wszystko wygląda wspaniale, jednak usługa ta ma bardzo istotne wady. Po pierwsze – używany konwerter zupełnie nie radzi sobie z obiektami powierzchniowymi. Zdarzają się niezamknięte linie zamiast poligonów, lub wręcz zupełnie nieużyteczne warstwy bez czytelnej geometrii. Z uwagi na skomplikowany sposób zapisu poligonów w modelu danych OSM, generowanie ich geometrii w prawidłowy sposób jest sporym wyzwaniem – nie jest to jednak żadne wytłumaczenie, ponieważ istniejące konwertery radzą sobie z problemem dość dobrze.

Po drugie, w przypadku wyboru opcji zapisu w SQLite dostaniemy wynik w „czystym“ SQLite, bez użycia rozszerzenia SpatiaLite. Nie skorzystamy więc z dobrodziejstw jakie daje przestrzenna baza danych, czyli zaawansowanych indeksów przestrzennych i możliwości wykonywania analiz wprost z poziomu zapytań SQL. Ponadto zamiast jednego pliku z bazą i trzema tabelami wewnątrz, nadal otrzymamy trzy odrębne.

Podsumowując, narzędzie osm2gis jest niewątpliwie krokiem w dobrym kierunku – zwiększenia dostępności i interoperacyjności danych OSM – lecz wykonanie pozostawia wiele do życzenia. Obecnie nadal lepiej jest korzystać z wybranego programu do konwersji, lub gotowych plików Shapefile od Geofabrik.

Bardziej skutecznym rozwiązaniem problemu może być funkcja konwersji danych OSM wbudowana w bibliotekę GDAL/OGR – jednak najnowsza wersja 1.10 w chwili pisania artykułu nie była jeszcze dostępna dla wszystkich systemów operacyjnych.

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ę.

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.

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ą.

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ść

„Początki w OpenStreetMap – Praktyczny przewodnik dla każdego” Humanitarian OpenStreetMap Team

OpenStreetMap Polska oblikowało e-book wyjaśniający w przystępny sposób, jak każdy z nas może zacząć swoją przygodę z OSM i uczestniczyć w tym otwartym projekcie
Podręcznik jest przekładem z wersji anglojęzycznej tej publikacji wydanej przez Humanitarian OSM Team. Można się z niego dowiedzieć m.in.: jak założyć konto na OSM, jak korzystać z dostępnych edytorów oraz zbierać dane w terenie za pomocą odbiornika GPS.

Pobierz podręcznik [8 MB]

GIS SUPPORT sp. z o.o.


SZKOLIMY

z QGIS oraz innego otwartego oprogramowania GIS.

zobacz ofertę szkoleń


WSPIERAMY

świadczymy komercyjne wsparcie dla oprogramowania open source GIS w Polsce. Wdrażamy i pomagamy w migracji na otwarte oprogramowanie

dowiedz się więcej


PROGRAMUJEMY

mamy bardzo duże doświadczenie w tworzeniu aplikacji GIS oraz geoportali w oparciu o komponenty open source GIS

dowiedz się więcej