Pl:OsmAndMapCreator

From OpenStreetMap Wiki
Jump to navigation Jump to search
OsmAndMapCreator - zrzut ekranu

OsmAndMapCreator (OSM i tworzenie map) jest narzędziem Java open-source, które towarzyszy OsmAnd.

Może pobrać kafelki z Mapnika i tworzyć POI, adresy, transport i indeksy routingu z plików OSM (.osm, .bz2, .pbf). Najważniejszą cechą jest tworzenie plików obf z danych OSM. Pliki obf są podstawą do renderowania w trybie offline, routingu w trybie offline i szukania na smartphone w trybie offline.

Komentarz Editora: Ten tekst ma być także zrozumiały dla zwykłych ludzi.

Proces tworzenia map

  1. Pobierz wyciąg danych OSM (PBF format z Geofabrik dla obszaru, który chcesz przekonwertować na obf Należy zwrócić uwagę na wysokie zużycie RAM przez OsmAndMapCreator (patrz poniżej).
  2. Jeśli wyciąg jest zbyt duży, trzeba wyciąć mniejszy obszar z niego przy użyciu Osmconvert.
  3. Utwórz plik obf z OsmAndMapCreator.
  4. Skopiuj plik wynikowy obf do smartfonu.

Pobieranie OsmAndMapCreator

OsmAndMapCreator nie musi być zainstalowany na komputerze, po prostu tylko Java (Windows) lub OpenJDK (Linux, OSX) musi być zainstalowana. Nie potrzebujesz mieć administrative/root akcesu, jeśli Java jest już zainstalowana. Jeśli nie wiesz, czy Java jest zainstalowana, po prostu otworzyć okno wiersza polecenia i wpisz polecenie java. Jeśli informacja opisuje niektóre argumenty potrzebne do rozpoczęcia Java i nie pokazuje prostego "file not found" (lub coś takiego), to znaczy,że Java jest zainstalowana.

OsmAndMapCreator może być pobrany ze strony deweloperów. Następnie rozpakuj pobrany pakiet ZIP w dowolnym folderze. Jeśli używasz uniksowego systemu operacyjnego (OS X, Linux) musisz zrobić plik .jar wykonywalny.

Tworzenie pojedynczych plików obf używając graficzny interfejs użytkownika

Rozpoczynanie pracy OsmAndMapCreator przez proste dwukrotne kliknięcie nie jest właściwą drogą. Należy przypisać dla OsmAndMapCreator więcej pamięci RAM niż zwykle to robi Java, ponieważ OsmAndMapCreator nie przerywa działania z powodu braku pamięci.

  • Użytkownicy posiadający doświadczenie w użyciu linii poleceń:

Otwórz okno wiersza poleceń, zmień folder (cd) do folderu, w którym jest OsmAndMapCreator.jar i uruchom komendę java -jar -Xms1G -Xmx6G OsmAndMapCreator.jar. Następujące numery -Xms and -Xmx deklarują ilość pamięci RAM którą można przypisać do OsmAndMapCreator/Java. "M" znaczy ilość megabajtów, "G" ilość gigabajtów. Ilość ta zależy od ilości pamięci RAM w komputerze i wielkości pliku pbf. Szczegóły są poniżej.

  • Użytkownicy bez doświadczenia w użyciu linii poleceń:

Otwórz okno menedżera plików (Windows Explorer, Nautilus, itp.), przejdź do folderu, w którym OsmAndMapCreator.jar jest i dwukrotnie kliknij OsmAndMapCreator.bat (Windows) / OsmAndMapCreator.sh (OS X / Linux). Plik bat lub sh uruchamia OsmAndMapCreator i otrzymuje określoną ilość pamięci, według powyższego polecenia. Należy dostosować ilość pamięci w pliku bat/sh. Szczegóły są poniżej.

Po uruchomieniu OsmAndMapCreator, kliknij na Plik, następnie na Utwórz .obf z pliku OSM i wybierz pobrany/przycięty plik pbf Poczekaj, aż OsmAndMapCreator zakończy. Jeśli chcesz utworzyć drugi plik obf, należy ponownie uruchomić OsmAndMapCreator ponieważ OsmAndMapCreator nie zwalnia używanej pamięci RAM.

Regularne tworzenie plików obf (z linii poleceń)

Jeśli używasz często pliki obf na pewno chciałbyś zautomatyzować ten proces. Nawet jeżeli na to nie wygląda, pliki obf mogą być utworzone przez komendę (a zatem poprzez cronjobs)

Na Debianie dystrybucji Linuksa trzeba także zainstalować libcommons-logowania-java (inne dystrybucje nie testowane)

Przepływ pracy:

  1. Pobieramy surowe dane (np. z Geofabrik) lub aktualizujemy istniejące fragmenty za pomocą Osmconvert lub Osmosis.
  2. Przycinamy surowe dane w razie potrzeby.
  3. Zmieniamy nazwy surowych plików danych do COUNTRY.osm.pbf i przenosimy je do folderu /home/$user/mapbuild/osmand-pbf
  4. Uruchamiamy OsmAndMapCreator, wszystkie wyciągi zostaną ​​skonwertowane na format obf i zapisane w /home/$user/mapbuild/osmand-obf

Jeśli korzystamy z innych folderów niż te, nazwane powyżej, należy zmienić ich nazwy w batch.xml (patrz poniżej).

Batch.xml

Przed uruchomieniem OsmAndMapCreator należy dostosować odpowiednie ustawienia wewnątrz batch.xml w folderze OsmAndMapCreator.

Szablon batch.xml

Zamień $user na swoją lokalną nazwę_użytkownika

<?xml version="1.0" encoding="utf-8"?>
<batch_process>
	<process_attributes mapZooms="" renderingTypesFile="" 
                zoomWaySmoothness="" osmDbDialect="sqlite" mapDbDialect="sqlite" />
	<process directory_for_osm_files="/home/$user/mapbuild/osmand-pbf" 
		directory_for_index_files="/home/$user/mapbuild/osmand-obf" 
		directory_for_generation="/home/$user/mapbuild/osmand-gen"
		skipExistingIndexesAt="/home/$user/mapbuild/osmand" 
		indexPOI="true" indexRouting="true" indexMap="true"	
		indexTransport="true" indexAddress="true"/>		
	</process/>
</batch_process/> 

Ustawienia batch.xml

Element XML process_attributes opisuje ustawienia dla tworzenia plików obf. Możemy po prostu użyć powyższego przykładu batch.xml bez edycji oprócz dostosowania ścieżki.

Jeśli mamy dużą ilość dostępnej pamięci RAM, można tymczasowo przechowywać bazę danych SQLite w pamięci RAM, zamiast w folderze roboczym (patrz atrybut directory_for_generation w batch.xml). Tymczasowe przechowywanie bazy danych w pamięci RAM przyspiesza tworzenie plików obf około 10-50%. Jeśli nie mamy wystarczającej ilości pamięci RAM, nie należy przechowywać tymczasowo bazy danych w pamięci RAM, bo wtedy ma się systemy operacyjne przeskakujące.
Aby przechować tymczasowo bazę danych w pamięci RAM należy zamienić:

<process_attributes mapZooms="" renderingTypesFile="" zoomWaySmoothness="" osmDbDialect="sqlite" mapDbDialect="sqlite" />


na

<process_attributes mapZooms="" renderingTypesFile="" zoomWaySmoothness="" osmDbDialect="sqlite_in_memory" mapDbDialect="sqlite_in_memory"/>

Uwaga: OsmAndMapCreator potrzebuje bardzo dużą ilość pamięci RAM. Dla pbfpliku, wielkości 230 MB, potrzeba mieć co najmniej 12 GB pamięci RAM, jeśli nie chcesz zapisać bazy danych na HDD/SSD.

Pozostałe ustawienia w batch.xml są następujące:

klucz wartość
directory_for_osm_files folder w którym są pobierane/zaktualizowane i przycięte pliki pbf
directory_for_index_files folder w którym zostaną zapisane finalne pliki obf
directory_for_generation folder w którym zapisywane są tymczasowe bazy danych SQLite
indexPOI utwórz indeks POI (true/false)
indexRouting utwórz indeks routingu (true/false)
indexMap utwórz indeks map dla renderingu (true/false)
indexTransport utwórz indeks transportu publicznego (true/false)
indexAddresses utwórz indeks adresów dla wyszukiwania adresu (true/false)

Tworzenie pliku w formacie obf

OsmAndMapCreator może tylko konwertować pliki w formacie pbf jeśli są nazwane jako LAND.osm.pbf i przechowane w directory_for_osm_files!
Aby uruchomić OsmAndMapCreator, należy przejść do folderu, w którym został rozpakowany OsmAndMapCreator i wykonać następujące polecenie (dostosowujemy przydział pamięci w razie potrzeby):

java -Djava.util.logging.config.file=logging.properties -Xms64M -Xmx6300M -cp "./OsmAndMapCreator.jar:lib/OsmAnd-core.jar:./lib/*.jar" net.osmand.util.IndexBatchCreator batch.xml

Wymagania dotyczące pamięci RAM

Wykorzystanie pamięci RAM

OsmAndMapCreator potrzebuje wielokrotność wielkości pliku obf. Tworzymy plik obf> dla dużych obszarów tylko wtedy, jeśli komputer ma wystarczającą ilość pamięci RAM. Należy pamiętać, że system operacyjny musi także mieć trochę pamięci RAM. Wystarczy spojrzeć na menedżera zadań, w stanie spoczynku. Pamiętajmy, że systemy 32-bitowe mogą wykorzystać tylko 3,3 GB pamięci RAM.

Poniższa tabela zawiera przykład rozmiarów pliku i zużycia pamięci. Należy pamiętać, że OSM zawiera coraz więcej danych. Dlatego pliki pbf powiększają się z dnia na dzień.

Adnotacja: Ta tabela nie jest skończona. Możesz dodać swoje wartości, jeśli utworzyłeś plik obf. Możesz dodać swój RAM i czasu konsumpcji tylko wtedy, gdy nie masz uruchomionych, jednocześnie, żadnych innych programów, z wysokim zużyciem pamięci RAM. (podobne warunki badania)

region size of PBF file RAM consumption RAM assigned at starting OsmAndMapCreator time consumption output size of obf file
Baden-Württemberg, Germany 220 MB ca, 3 h 15 min (Linux 64 Bit, Intel Core i5-460M, 8 GB RAM)
Bayern, Germany 586 MB 15 GB 1 GB–17 GB (-Xms4G -Xmx16G) 2:35 h:min; (Linux Debian 9, Intel(R) Core(TM) i3-7100U CPU @ 2.40GHz, 20 GB RAM) 1,1 GB
Bavaria, Germany 300 MB aborted by user after more than 7 h (Linux 64 Bit, Intel Core i5-460M, 8 GB RAM)
Bielefeld 19 MB 281 MB 5,5 min (Linux 32, Intel(R) Pentium(R) 4 CPU 2.66GHz, 2 GB RAM)
Sachsen-Anhalt, Germany 46 MB ca. 15–20 min (Linux 64 Bit, Intel Core i5-460M, 8 GB RAM)z
Germany 2.5 GB less than 6 GB 14GB + Harddrive ~54 hours (Linux 64 Bit, Intel Core i7-4700MQ @ 2.40GHz, 16 GB RAM, mostly idle the complete time of conversion)
Berlin 43 MB 14 GB ~4 minutes (Linux 64 Bit, Intel Core i7-4700MQ @ 2.40GHz, 16 GB RAM, mostly idle the complete time of conversion) 98 MB
Lower Saxony, Germany 214 MB less than 6 GB 14G B ~40 minutes (Linux 64 Bit, Intel Core i7-4700MQ @ 2.40GHz, 16 GB RAM, mostly idle the complete time of conversion) 414 MB
Munich, Germany 27 MB ~4 GB 2 GB (+ 2 GB swap) ~60 minutes (Linux 64 Bit, Intel Core 2 Duo CPU T8300 @ 2.40GHz, 2GB RAM + 2GB swap, at the begin nothing else worked due to high ram- and hdd-use) 58 MB
Rhineland-Platinate, Germany 157 MB 4,1 GB 1–12 GB 15 min (Win 7 64bit, AMD FX-8350 4 GHz, 16 GB RAM)
Brandenburg, Germany 129 MB 2,5 GB 1–4 GB ca. 1 h, (openSUSE 13.1 64, AMD Athlon(tm) 64 X2 Dual Core Processor 4600+, 7 GB RAM
Baden-Württemberg, Germany 386 MB 15,2 GB (including swap) 64 MB–11,8 GB 4:41 (Linux, Intel Core i5-6400, SSD Crucial BX100 500GB (CT500BX100SSD1), 16 GB RAM), sqlite_in_memory 562 MB
Hessen, Germany 203 MB ~ 5 GB 1 GB – 6 GB 2:30 (Debian 64bit, Intel Core2 Duo P8400, 8 GB RAM) 375 MB
Georgia, United States 174 MB ~5 GB (plus some swap) 512 MB–6 GB (-Xms512M -Xmx6144M) 2.5 h (Windows, Intel Core i7-3612QM @ 2.1GHz, 8 GB RAM) 265 MB
Ontario, Canada 581 MB 11.2 GB 1 GB–13 GB (-Xms1G -Xmx13G) 7 h (Windows, Intel Core i7-3770 @ 3.4GHz, 16 GB RAM) 695 MB
Québec, Canada 352 MB 9 GB 1 GB–13 GB (-Xms1G -Xmx13G) 3 h (Windows, Intel Core i7-3770 @ 3.4GHz, 16 GB RAM) 490 MB
Ukraine, whole country 378 MB 64 MB–6.8 GB (-Xms64M -Xmx6800M) 2:42 h (MacOS, Intel Core i5 @ 2.8GHz, 8 GB RAM) 738 MB
Unterfranken, Deutschland 61,53 MB 6,4 GB 4 GB–16GB  (-Xms4G - Xmx16G) 00:08:50 hh:mm:ss (Linux Debian 9, Intel(R) Core(TM) i3-7100U CPU @ 2.40GHz, 20 GB RAM) 112 MB
Utah, USA 65 MB 5.2 GB 4 GB-14 GB (-Xms4G -Xmx14G) 7.5 min (Linux, AMD Ryzen 7 2700 @ 2.2 GHz, 16 GB RAM) 125 MB

Obszary duże, wielkości Bawarii (300 MB), nie mogą być konwertowane do formatu obf jako rozciągnięte. Trzeba podzielić to obszary i przekonwertować każdą część oddzielnie. Dlatego deweloperzy OsmAnd nie oferują całych Niemiec jako obf (1.8 GB pliku pbg) do pobrania.

Dostosowanie ilości przydzielonej pamięci RAM

Jest ciąg -Xms64M -Xmx512M w pliku OsmAndMapCreator.bat i OsmAndMapCreator.sh.
Zamieniamy te wartości (64M i 512M) na wartości z powyższej tabeli.
Należy pozostawić co najmniej 1,3 GB na system operacyjny, jeśli używamy systemu Windows. Pod Linuksem limit ten zależy od środowiska graficznego, np. 800 MB pamięci RAM dla RAM-hungry Unity.

Przykładowe obliczenia:

(1) zainstalowana pamięć RAM 4 GB
(2) Zużycie pamięci RAM w stanie gotowości (w zależności od systemu operacyjnego, patrz Menedżer zadań) 1.3 GB
(3) różnica pomiędzy (1) a (2) 2.7 GB
(4) minimalne przypisanie RAM (wartość po -Xms) 200 MB (piszemy -Xms200M.)
(5) maksymalne przypisanie RAM (wartość po -Xmx) 2.5 GB (Nie należy stosować separatora dziesiętnego, piszemy -Xmx2500M.)

Uwaga: Nie może być pustego miejsca między -Xms lub -Xmx a wartością liczbową.

Kopiowanie pliku obf do smartfonu

Finalne pliki obf są przechowywane w folderze oprogramowania OsmAnd, w telefonie. Można zmienić lokalizację folderu aplikacji w ustawieniach OsmAnd w sekcji Generalne. /mnt/sdcard/osmand jest dobrą lokalizacją.
(Uwaga! Położenie na karcie SD może być inne niż /mnt/sdcard.)
Jeśli chcemy zapisać pliki obf na /mnt/sdcard/osmand, musimy ustawić /mnt/sdcard (bez osmand) jako folder Storage directory. Należy wziąć pod uwagę, że Android jest oparty na Linuksie i wielkość liter jest istotna! /mnt/extSdCard i /mnt/extsdcard, to dwa różne foldery!

Zobacz też