Konwersja UMP do OSM XML
Z UMP
(→Konwersja) |
(→Konwersja) |
||
Linia 11: | Linia 11: | ||
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 (cvs, perl, python ) | + | * narzędzia (cvs, perl, python, tr) |
* katalog roboczy 2GB+ | * katalog roboczy 2GB+ | ||
Linia 43: | Linia 43: | ||
W konkretnych przypadkach można pokusić się o optymalizacje użycia pamięci przez cały proces. | 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. | 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 | ; 5. Konwersja .mp -> xml .osm | ||
Linia 51: | Linia 55: | ||
Aktualna wersja znajduje się w projektowym repozytorium CVS ( ''narzedzia/txt2osm.py'' ) | Aktualna wersja znajduje się w projektowym repozytorium CVS ( ''narzedzia/txt2osm.py'' ) | ||
- | python $CVS/narzedzia/txt2osm.py --positive_ids | + | 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 | + | * --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ą na poprawną pracę z edytorem [http://josm.openstreetmap.de/ JOSM]. |
* konwersja całego obszaru Polski wymaga ponad 5GB pamięci RAM i 64-bitowego systemu | * konwersja całego obszaru Polski wymaga ponad 5GB pamięci RAM i 64-bitowego systemu | ||
Wersja z dnia 22:22, 7 maj 2012
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, 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@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ą na poprawną pracę z edytorem JOSM.
- konwersja całego obszaru Polski wymaga ponad 5GB pamięci RAM i 64-bitowego systemu
Zastosowania
- OsmAnd