Konwersja UMP do OSM XML
Z UMP
(→Przygotowanie środowiska pracy) |
d (host powinien być @cvs.ump.waw.pl) |
||
(Nie pokazano 15 wersji pośrednich.) | |||
Linia 1: | Linia 1: | ||
== Wstęp == | == Wstęp == | ||
- | |||
- | |||
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 == | ||
- | + | 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 | + | |
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) |
- | + | ||
- | + | ||
- | + | ||
* katalog roboczy 2GB+ | * katalog roboczy 2GB+ | ||
- | ; Stworzenie 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/ | + | 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 | + | cvs checkout narzedzia |
for i in $DIR ;do | for i in $DIR ;do | ||
- | cvs | + | cvs checkout $i |
done | done | ||
- | + | ; 4. Montaż czyli stworzenie jednego pliku w formacie [http://wiki.openstreetmap.org/wiki/Polish_format 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 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.