Konwersja UMP do OSM XML

Z UMP

(Różnice między wersjami)
(Przygotowanie środowiska pracy)
Aktualna wersja (18:10, 20 sie 2014) (edytuj) (anuluj zmianę)
d (host powinien być @cvs.ump.waw.pl)
 
(Nie pokazano 16 wersji pośrednich.)
Linia 1: Linia 1:
== Wstęp ==
== Wstęp ==
-
{ '''Artykuł w trakcie tworzenia ''' }
 
-
 
Coraz częściej mapa UMP jest używana do innych zastosowań niż wgranie do odbiornika Garmina.
Coraz częściej mapa UMP jest używana do innych zastosowań niż wgranie do odbiornika Garmina.
Linia 9: Linia 7:
== Konwersja ==
== Konwersja ==
-
=== Przygotowanie środowiska pracy ===
+
Opis konwersji dotyczy środowiska Linux. Oczywiście można jej dokonać z użyciem Windows ale szczegóły tej operacji zostawiamy domyślnemu czytelnikowi.
-
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ą:
Potrzebne będą:
* dowolny Linux 2-6GB RAM (2GB dla pojedynczych fragmentów mapy - 6GB RAM dla całej Polski)
* dowolny Linux 2-6GB RAM (2GB dla pojedynczych fragmentów mapy - 6GB RAM dla całej Polski)
-
* narzędzia
+
* narzędzia (cvs, perl, python, tr)
-
** cvs
+
-
** perl
+
-
** python
+
* katalog roboczy 2GB+
* katalog roboczy 2GB+
-
; Stoworzenie katalogów roboczych
+
; 1. Stworzenie katalogów roboczych
mkdir $HOME/UMPCVS
mkdir $HOME/UMPCVS
mkdir $HOME/UMPCVS/WORK
mkdir $HOME/UMPCVS/WORK
-
; 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/MP2OSM
+
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"
dla całej Polski
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"
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"
-
; Replikacja źródeł mapy i narzędzi z projektowego CVSa
+
; 3. Replikacja źródeł mapy i narzędzi z projektowego CVSa
cd $CVS
cd $CVS
-
cvs co narzedzia
+
cvs checkout narzedzia
for i in $DIR ;do
for i in $DIR ;do
-
cvs co $i
+
cvs checkout $i
done
done
-
=== Tzw Montaż ===
+
; 4. Montaż czyli stworzenie jednego pliku w formacie [http://wiki.openstreetmap.org/wiki/Polish_format MP]
-
=== Konwersja .mp -> .osm ===
+
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 http://repo.or.cz/w/ump2osm.git] i oryginalnie powstał na potrzeby importu danych z UMPpcPL do projektu [http://www.openstreetmap.org 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 [http://wiki.openstreetmap.org/wiki/Osmosis osmosis], [http://wiki.openstreetmap.org/wiki/Osm2pgsql osm2pgsql]. Pominięcie tego parametru powoduje użycie indeksów ujemnych, które umożliwiają poprawną pracę z edytorem [http://josm.openstreetmap.de/ JOSM].
 +
* konwersja całego obszaru Polski wymaga ponad 5GB pamięci RAM i 64-bitowego systemu
 +
 
== Zastosowania ==
== Zastosowania ==
 +
 +
[[Kategoria:Użytkowanie mapy]][[Kategoria:OSM]]
 +
 +
;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]].
 +
 +
;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.