Konwersja UMP do OSM XML
Z UMP
Wstęp
{ Artykuł w trakcie tworzenia }
Coraz częściej mapa UMP jest używana do innych zastosowań niż wgranie do odbiornika Garmina.
Artykuł ten opisuje sposób konwersji na format OSM XML [1]
Wynik tej konwersji pozwala dalej na użycie danych UMP w serwisach udostępniających mapy za pomocą www, generujących trasy przejazdu (routing) czy załadowania do bazy danych geograficznych.
Konwersja
Opis konwersja dotyczy środowiska Linux. Oczywiście można jej dokonać z użyciem Windows ale szczegóły tej operacji zostawiamy domyślnemu czytelnikowi.
Potrzebne będą:
- dowolny Linux 2-6GB RAM (2GB dla pojedynczych fragmentów mapy - 6GB RAM dla całej Polski)
- narzędzia
- cvs
- perl
- python
- katalog roboczy 2GB+
- 1. Stworzenie katalogów roboczych
mkdir $HOME/UMPCVS mkdir $HOME/UMPCVS/WORK
- 2. Definicje zmiennych środowiskowych
CVSROOT to namiary na repozytorium CVS mapy UMP, zaś DIR lista regionów mapy. Polska ma ich aktualnie 33.
export CVSROOT=":pserver:guest@ump.waw.pl/home/cvsroot" export CVS=$HOME/UMPCVS export DIR="UMP-PL-Warszawa UMP-PL-Radom UMP-PL-Suwalki"
dla całej Polski
export DIR="UMP-PL-Bialystok UMP-PL-Ciechanow UMP-PL-Gdansk UMP-PL-GorzowWlkp UMP-PL-JeleniaGora UMP-PL-Kalisz UMP-PL-Katowice UMP-PL-Kielce UMP-PL-Klodzko UMP-PL-Koszalin UMP-PL-Krakow UMP-PL-Leszno UMP-PL-Lodz UMP-PL-Lublin UMP-PL-NowySacz UMP-PL-Olsztyn UMP-PL-Opole UMP-PL-Pila UMP-PL-Plock UMP-PL-Poznan UMP-PL-Przemysl UMP-PL-Radom UMP-PL-Rzeszow UMP-PL-Siedlce UMP-PL-Suwalki UMP-PL-Szczecin UMP-PL-Tarnow UMP-PL-Tczew UMP-PL-Torun UMP-PL-Warszawa UMP-PL-Wloclawek UMP-PL-Wroclaw UMP-PL-Zamosc"
- 3. Replikacja źródeł mapy i narzędzi z projektowego CVSa
cd $CVS cvs checkout narzedzia for i in $DIR ;do cvs checkout $i done
- 4. Montaż czyli stworzenie jednego pliku w formacie MP
Skrypt mont-demon-multi2.pl domyślnie zapisuje wynik pracy w pliku wynik.mp
Parametry:
- --cities umieszcza punkty miast w pliku wynikowym. Można pominąć jeśli nie są potrzebne.
- --topo włącza do pliku wynikowego dane topograficzne.
- --noborders usuwa z pliku wynik.mp granice międzyobszarowe. Nie są one potrzebne w większości zastosowań.
cd $CVS/WORK perl $CVS/narzedzia/mont-demont-multi2.pl --cities --topo --nodummy --noborders --mont $DIR
W konkretnych przypadkach można pokusić się o optymalizacje użycia pamięci przez cały proces. N.p. w routing nie są potrzebne lasy, wody, budynki. Można przy pomocy parametru --filter skryptu mont-demont-multi2.pl ograniczyć liczbę przetwarzanych danych.
- 5. Konwersja .mp -> xml .osm
Końcowa konwersja dokonuje się z użyciem skryptu txt2osm.py.
Skrypt ten pochodzi ze strony http://repo.or.cz/w/ump2osm.git i oryginalnie powstał na potrzeby importu danych z UMPpcPL do projektu www.openstreetmap.org.
Aktualna wersja znajduje się w projektowym repozytorium CVS ( narzedzia/txt2osm.py )
python $CVS/narzedzia/txt2osm.py --positive_ids wynik.mp >wynik.osm
- --positive_ids wymusza użycie dodatnich identyfikatorów obiektów w xml. Pozwala pracować z narzędziami typu osmosis, osm2pgsql. Pominięcie tego parametru powoduje użycie indeksów ujemnych, które pozwalają na poprawną pracę z edytorem JOSM.
- konwersja całego obszaru Polski wymaga ponad 5GB pamięci RAM i 64-bitowego systemu