Konwersja UMP do OSM XML

Z UMP

(Różnice między wersjami)
Aktualna wersja (18:10, 20 sie 2014) (edytuj) (anuluj zmianę)
d (host powinien być @cvs.ump.waw.pl)
 
(Nie pokazano jednej wersji pośredniej.)
Linia 20: Linia 20:
; 2. Definicje zmiennych środowiskowych
; 2. Definicje zmiennych środowiskowych
CVSROOT to namiary na repozytorium CVS mapy UMP, zaś DIR lista regionów mapy. Polska ma ich aktualnie 33.
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 CVSROOT=":pserver:guest@cvs.ump.waw.pl/home/cvsroot"
export CVS=$HOME/UMPCVS
export CVS=$HOME/UMPCVS
export DIR="UMP-PL-Warszawa UMP-PL-Radom UMP-PL-Suwalki"
export DIR="UMP-PL-Warszawa UMP-PL-Radom UMP-PL-Suwalki"
Linia 66: Linia 66:
;OsmAnd
;OsmAnd
* Konwersja do OSM XML używana jest jako pierwszy krok przy tworzeniu mapy dla programu [[Dla_Androida|OsmAnd]] dostępnego na urządzenia pracującego pod kontrolą systemu [[Dla_Androida|Android]].
* Konwersja do OSM XML używana jest jako pierwszy krok przy tworzeniu mapy dla programu [[Dla_Androida|OsmAnd]] dostępnego na urządzenia pracującego pod kontrolą systemu [[Dla_Androida|Android]].
 +
 +
;OSRM
 +
* OSM XML jest też wejściowym formatem dla naszego silnika wyznaczających [[Trasy]].

Aktualna wersja

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 konwersji 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, tr)
  • 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@cvs.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.

Dodatkowo wymagane jest uporządkowanie kodowania polskich znaczków.

$CVS/narzedzia/iso2win <wynik.mp >wynik1.mp


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 wynik1.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 umożliwiają 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.
OSRM
  • OSM XML jest też wejściowym formatem dla naszego silnika wyznaczających Trasy.