Konwersja UMP do OSM XML

Z UMP

Wstęp

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

Zastosowania

OsmAnd
  • Konwersja do OSM XML używana jest jako pierwszy krok przy tworzeniu mapy dla programu OsmAnd dostępnego na urządzenia pracującego pod kontrolą systemu Android.