OsmAnd: Ежедневное конвертирование и автоматическое обновление карт

Откуда информация?

Уже освоил вырезку и конвертацию. Временно есть достаточно мощный сервер.

Инсайдерская инфа 146%

А чем штатная конвертация не устраивает? Она и так уже раз в пару часов обновляется.

Коллеги, пишите какие регионы нужны - настрою вырезку и конвертацию.
Вопрос с закачиванием на ftp Svimik пока не решён.
Если кому интересно, то ниже содержимое скрипта с ручным выбором регионов. Скрипт под windows:

cls
@echo off

set TimeSTART=%TIME%
rem set BASEDIR=%CD%
set STARTDIR=%CD%
set BASEDIR=C:\Prog\

set WGET="c:\Program Files (x86)\GnuWin32\bin\wget.exe"
set OSMOSIS=%BASEDIR%\Osmosis\bin\osmosis.bat
set OSMDIR=%BASEDIR%OSMdir\
set INPUTDIR=%BASEDIR%OsmAndMapCreator\0_input\
set JAVA=java
rem set JAVA="c:\Program Files\Java\jre7\bin\java.exe"
set CREATORDIR=%BASEDIR%OsmAndMapCreator\
set MAPS_DIR=C:\_Synct\Map\

del /F /Q "%CREATORDIR%\0_temp"\*.*
del /F /Q  C:\Users\Administrator\AppData\Local\Temp\2\*.*

set hset=0
echo ================
echo .
echo Select region and source:
echo 1   - RU-LEN / gis-lab.info
echo 11  - RU_Len / geofabrik.de
echo 12  - EE     / geofabrik.de
echo 111 - RU-LEN + EE     / geofabrik.de
echo 112 - RU-LEN + RU-MUR / geofabrik.de
echo RU  - RU / geofabrik.de
echo .
echo 0 - Exit
set /p hset="Region / source - "
rem if %hset%==1 set RegSource=LenGeo
if %hset%==11 ( 
rem RU_Len / geofabrik.de
	set URL="http://download.geofabrik.de/russia/northwestern-fed-district-latest.osm.pbf"
	set OSMFILE=%OSMDIR%northwestern-fed-district-latest.osm.pbf
	set POLYFILE=%BASEDIR%Poly\RU-Len.poly
	set INPUTPBF=%INPUTDIR%Ru-len.osm.pbf
	set EXTRACT=1
	goto BEGIN
) 
if %hset%==1 (
rem RU-LEN / gis-lab.info
	set URL="http://be.gis-lab.info/osm_dump/dump/latest/RU-LEN.osm.pbf"
	set OSMFILE=RU-LEN.osm.pbf
	set POLYFILE=%BASEDIR%Poly\RU-Len.poly
	set INPUTPBF=%INPUTDIR%Ru-len.osm.pbf
	set EXTRACT=0
	goto BEGIN
)
if %hset%==12 ( 
rem EE / geofabrik.de
	set URL="http://download.geofabrik.de/europe/estonia-latest.osm.pbf"
	set OSMFILE=%OSMDIR%estonia-latest.osm.pbf
	set POLYFILE=%BASEDIR%Poly\EE.poly
	set INPUTPBF=%INPUTDIR%estonia-latest.osm.pbf
	set EXTRACT=1
	goto BEGIN
)
if %hset%==111 ( 
rem EE + RU-LEN / geofabrik.de
	set URL="http://download.geofabrik.de/europe-latest.osm.pbf"
	set OSMFILE=%OSMDIR%europe-latest.osm.pbf
	set POLYFILE_1=%BASEDIR%Poly\EE.poly
	set POLYFILE_2=%BASEDIR%Poly\RU-Len.poly
	set INPUTPBF_1=%INPUTDIR%estonia-latest.osm.pbf
	set INPUTPBF_2=%INPUTDIR%Ru-len.osm.pbf
	set POLYFILE=""
	set INPUTPBF=""
	set EXTRACT=2
	goto BEGIN
)  
if %hset%==112 ( 
rem RU-MUR + RU-LEN / geofabrik.de
	rem set URL="http://download.geofabrik.de/russia-latest.osm.pbf"
	set URL="http://download.geofabrik.de/russia/northwestern-fed-district-latest.osm.pbf"
	set OSMFILE=%OSMDIR%northwestern-fed-district-latest.osm.pbf
	set POLYFILE_1=%BASEDIR%Poly\RU-MUR.poly
	set INPUTPBF_1=%INPUTDIR%RU-MUR.osm.pbf
	set POLYFILE_2=%BASEDIR%Poly\RU-Len.poly
	set INPUTPBF_2=%INPUTDIR%Ru-len.osm.pbf
	set POLYFILE=""
	set INPUTPBF=""
	set EXTRACT=2
	goto BEGIN
)  

if %hset%==RU or %hset%==ru( 
rem RU  - RU / geofabrik.de
	set URL="http://download.geofabrik.de/russia-latest.osm.pbf"
	rem set URL="http://download.geofabrik.de/russia/northwestern-fed-district-latest.osm.pbf"
	set OSMFILE=%OSMDIR%russia-latest.osm.pbf
	set POLYFILE_1=%BASEDIR%Poly\RU-MUR.poly
	set INPUTPBF_1=%INPUTDIR%RU-MUR.osm.pbf
	set POLYFILE_2=%BASEDIR%Poly\RU-Len.poly
	set INPUTPBF_2=%INPUTDIR%Ru-len.osm.pbf
	set POLYFILE_3=%BASEDIR%Poly\RU-KR.poly
	set INPUTPBF_3=%INPUTDIR%RU-KR.osm.pbf
	set POLYFILE_4=%BASEDIR%Poly\RU-MOW.poly
	set INPUTPBF_4=%INPUTDIR%RU-MOW.osm.pbf
	set POLYFILE_5=%BASEDIR%Poly\RU-MOS.poly
	set INPUTPBF_5=%INPUTDIR%RU-MOS.osm.pbf
	set POLYFILE_6=%BASEDIR%Poly\RU-KDA.poly
	set INPUTPBF_6=%INPUTDIR%RU-KDA.osm.pbf
	set POLYFILE_7=%BASEDIR%Poly\RU-SVE.poly
	set INPUTPBF_7=%INPUTDIR%RU-SVE.osm.pbf
	set POLYFILE_8=%BASEDIR%Poly\RU-KYA.poly
	set INPUTPBF_8=%INPUTDIR%RU-KYA.osm.pbf
	set POLYFILE_9=%BASEDIR%Poly\RU-ARK.poly
	set INPUTPBF_9=%INPUTDIR%RU-ARK.osm.pbf
	set POLYFILE_10=%BASEDIR%Poly\RU-KIR.poly
	set INPUTPBF_10=%INPUTDIR%RU-KIR.osm.pbf
	set POLYFILE_11=%BASEDIR%Poly\RU-KHM.poly
	set INPUTPBF_11=%INPUTDIR%RU-KHM.osm.pbf
	set POLYFILE_12=%BASEDIR%Poly\RU-PER.poly
	set INPUTPBF_12=%INPUTDIR%RU-PER.osm.pbf
	set POLYFILE_13=%BASEDIR%Poly\RU-NIZ.poly
	set INPUTPBF_13=%INPUTDIR%RU-NIZ.osm.pbf
	set POLYFILE_14=%BASEDIR%Poly\RU-CHE.poly
	set INPUTPBF_14=%INPUTDIR%RU-CHE.osm.pbf
	set POLYFILE_15=%BASEDIR%Poly\RU-ROS.poly
	set INPUTPBF_15=%INPUTDIR%RU-ROS.osm.pbf
	set POLYFILE_16=%BASEDIR%Poly\RU-ALT.poly
	set INPUTPBF_16=%INPUTDIR%RU-ALT.osm.pbf
		
	set POLYFILE=""
	set INPUTPBF=""
	set EXTRACT=16
	goto BEGIN
)  
rem set URL="http://download.geofabrik.de/russia-latest.osm.pbf"
rem set OSMFILE=russia-latest.osm.pbf
if %hset%==0 (
goto EOS
) else (
echo "Not valid "
goto EOS
)
:BEGIN
echo .
echo .
echo URL=%URL%
echo OSMFILE=%OSMFILE%
echo POLYFILE=%POLYFILE%
echo INPUTPBF=%INPUTPBF%
echo EXTRACT=%EXTRACT%
if %EXTRACT%==2 (
echo POLYFILE_1=%POLYFILE_1%
echo INPUTPBF_1=%INPUTPBF_1%
echo POLYFILE_2=%POLYFILE_2%
echo INPUTPBF_2=%INPUTPBF_2%
)
if %EXTRACT%==16 (
echo POLYFILE_1=%POLYFILE_1%
echo INPUTPBF_1=%INPUTPBF_1%
echo POLYFILE_2=%POLYFILE_2%
echo INPUTPBF_2=%INPUTPBF_2%
)
echo .
echo .

cd "%BASEDIR%"

if %EXTRACT%==1 (
rem Вырезка
	echo ====OSM data download files to EXTRACT====
	cd "%OSMDIR%"
	%WGET% -nd -P %OSMDIR% --limit-rate=5M -t 10 --retry-connrefused -T 10 -N %URL%

	echo ====Cut out the desired data file OSM area====
	rem TODO: --tee instead of reading twice
	cd "%BASEDIR%"
	set TimeSTARTextract=%TIME%
	call "%OSMOSIS%" ^
	--read-pbf-fast file="%OSMFILE%" ^
	-b ^
	--bounding-polygon file=%POLYFILE% ^
	clipIncompleteEntities=yes completeWays=yes completeRelations=yes ^
	--write-pbf file=%INPUTPBF%
) 
@echo on
if %EXTRACT%==2 (
rem Вырезка нескольких файлов
	echo ====OSM data download files to EXTRACT====
	cd "%OSMDIR%"
	%WGET% -nd -P %OSMDIR% --limit-rate=5M -t 10 --retry-connrefused -T 10 -N %URL%

	echo ====Cut out the desired data file OSM area====
	cd "%BASEDIR%"
	set TimeSTARTextract=%TIME%
	
	call "%OSMOSIS%" ^
--read-pbf file="%OSMFILE%" outPipe.0=data.1 ^
--tee outputCount=2 inPipe.0=data.1 outPipe.0=t_1 outPipe.1=t_2 ^
--buffer inPipe.0=t_1 outPipe.0=b_1 ^
--bounding-polygon inPipe.0=b_1 file=%POLYFILE_1% completeWays=yes completeRelations=yes ^
--write-pbf omitmetadata=true file=%INPUTPBF_1% ^
--buffer inPipe.0=t_2 outPipe.0=b_2 ^
--bounding-polygon inPipe.0=b_2 file=%POLYFILE_2% completeWays=yes completeRelations=yes ^
--write-pbf omitmetadata=true file=%INPUTPBF_2%
) 

echo %OSMFILE%
@echo on	
if %EXTRACT%==16 (
rem Вырезка нескольких файлов
	echo ====OSM data download files to EXTRACT====
	cd "%OSMDIR%"
	%WGET% -nd -P %OSMDIR% --limit-rate=5M -t 10 --retry-connrefused -T 10 -N %URL%

	echo ====Cut out the desired data file OSM area====
	cd "%BASEDIR%"
	set TimeSTARTextract=%TIME%

	call "%OSMOSIS%" ^
--read-pbf file="%OSMFILE%" outPipe.0=data.1 ^
--tee outputCount=16 inPipe.0=data.1 outPipe.0=t_1 outPipe.1=t_2 outPipe.2=t_3 outPipe.3=t_4 outPipe.4=t_5 outPipe.5=t_6 outPipe.6=t_7 outPipe.7=t_8 outPipe.8=t_9 outPipe.9=t_10 outPipe.10=t_11 outPipe.11=t_12 outPipe.12=t_13 outPipe.13=t_14 outPipe.14=t_15 outPipe.15=t_16 ^
--buffer inPipe.0=t_1 outPipe.0=b_1 ^
--bounding-polygon inPipe.0=b_1 file=%POLYFILE_1% completeWays=yes completeRelations=yes ^
--write-pbf omitmetadata=true file=%INPUTPBF_1% ^
--buffer inPipe.0=t_2 outPipe.0=b_2 ^
--bounding-polygon inPipe.0=b_2 file=%POLYFILE_2% completeWays=yes completeRelations=yes ^
--write-pbf omitmetadata=true file=%INPUTPBF_2% ^
--buffer inPipe.0=t_3 outPipe.0=b_3 ^
--bounding-polygon inPipe.0=b_3 file=%POLYFILE_3% completeWays=yes completeRelations=yes ^
--write-pbf omitmetadata=true file=%INPUTPBF_3% ^
--buffer inPipe.0=t_4 outPipe.0=b_4 ^
--bounding-polygon inPipe.0=b_4 file=%POLYFILE_4% completeWays=yes completeRelations=yes ^
--write-pbf omitmetadata=true file=%INPUTPBF_4% ^
--buffer inPipe.0=t_5 outPipe.0=b_5 ^
--bounding-polygon inPipe.0=b_5 file=%POLYFILE_5% completeWays=yes completeRelations=yes ^
--write-pbf omitmetadata=true file=%INPUTPBF_5% ^
--buffer inPipe.0=t_6 outPipe.0=b_6 ^
--bounding-polygon inPipe.0=b_6 file=%POLYFILE_6% completeWays=yes completeRelations=yes ^
--write-pbf omitmetadata=true file=%INPUTPBF_6% ^
--buffer inPipe.0=t_7 outPipe.0=b_7 ^
--bounding-polygon inPipe.0=b_7 file=%POLYFILE_7% completeWays=yes completeRelations=yes ^
--write-pbf omitmetadata=true file=%INPUTPBF_7% ^
--buffer inPipe.0=t_8 outPipe.0=b_8 ^
--bounding-polygon inPipe.0=b_8 file=%POLYFILE_8% completeWays=yes completeRelations=yes ^
--write-pbf omitmetadata=true file=%INPUTPBF_8% ^
--buffer inPipe.0=t_9 outPipe.0=b_9 ^
--bounding-polygon inPipe.0=b_9 file=%POLYFILE_9% completeWays=yes completeRelations=yes ^
--write-pbf omitmetadata=true file=%INPUTPBF_9% ^
--buffer inPipe.0=t_10 outPipe.0=b_10 ^
--bounding-polygon inPipe.0=b_10 file=%POLYFILE_10% completeWays=yes completeRelations=yes ^
--write-pbf omitmetadata=true file=%INPUTPBF_10% ^
--buffer inPipe.0=t_11 outPipe.0=b_11 ^
--bounding-polygon inPipe.0=b_11 file=%POLYFILE_11% completeWays=yes completeRelations=yes ^
--write-pbf omitmetadata=true file=%INPUTPBF_11% ^
--buffer inPipe.0=t_12 outPipe.0=b_12 ^
--bounding-polygon inPipe.0=b_12 file=%POLYFILE_12% completeWays=yes completeRelations=yes ^
--write-pbf omitmetadata=true file=%INPUTPBF_12% ^
--buffer inPipe.0=t_13 outPipe.0=b_13 ^
--bounding-polygon inPipe.0=b_13 file=%POLYFILE_13% completeWays=yes completeRelations=yes ^
--write-pbf omitmetadata=true file=%INPUTPBF_13% ^
--buffer inPipe.0=t_14 outPipe.0=b_14 ^
--bounding-polygon inPipe.0=b_14 file=%POLYFILE_14% completeWays=yes completeRelations=yes ^
--write-pbf omitmetadata=true file=%INPUTPBF_14% ^
--buffer inPipe.0=t_15 outPipe.0=b_15 ^
--bounding-polygon inPipe.0=b_15 file=%POLYFILE_15% completeWays=yes completeRelations=yes ^
--write-pbf omitmetadata=true file=%INPUTPBF_15% ^
--buffer inPipe.0=t_16 outPipe.0=b_16 ^
--bounding-polygon inPipe.0=b_16 file=%POLYFILE_16% completeWays=yes completeRelations=yes ^
--write-pbf omitmetadata=true file=%INPUTPBF_16%
) 
@echo off
set TimeENDextract=%Time%

if %EXTRACT%==0  (
	echo ====OSM data download files to CONVERT====
	cd "%OSMDIR%"
	%WGET% -nd -P %OSMDIR% --limit-rate=5M -t 10 --retry-connrefused -T 10 -N %URL%
		rem %WGET% -nd -P %INPUTDIR% --limit-rate=5M -t 10 --retry-connrefused -T 10 -N -i c:\Prog\OsmAndMapCreator\0_wget.cfg 
	robocopy %OSMDIR% %INPUTDIR% *RU-*.obf /r:100
)

echo ====Convert file====
cd "%CREATORDIR%"
del /F /Q "%CREATORDIR%\0_temp"\*.*
@echo off
%JAVA% -Djava.util.logging.config.file=logging.properties ^
-Xms256M -Xmx56100M ^
-cp "%CREATORDIR%\OsmAndMapCreator.jar;%CREATORDIR%\lib\OsmAnd-core.jar;%CREATORDIR%\lib\*.jar" net.osmand.data.index.IndexBatchCreator ^
%CREATORDIR%\0_batch.xml
set TimeENDconvert=%Time%

@echo off
echo ====Copy and sorting OBF file====

robocopy "%CREATORDIR%\0_temp" %MAPS_DIR% *.obf
call %BASEDIR%RU_move.cmd
del /F /Q "%CREATORDIR%\0_temp"\*.*
rem del /F /Q "%CREATORDIR%\0_input"\*.*

cd %STARTDIR%
echo +++++++++++++++++++
echo ========================
echo URL=%URL%
echo OSMFILE=%OSMFILE%
echo POLYFILE=%POLYFILE%
echo INPUTPBF=%INPUTPBF%
echo EXTRACT=%EXTRACT%
if %EXTRACT%==2 (
echo POLYFILE_1=%POLYFILE_1%
echo INPUTPBF_1=%INPUTPBF_1%
echo POLYFILE_2=%POLYFILE_2%
echo INPUTPBF_2=%INPUTPBF_2%
)
if %EXTRACT%==16 (
echo POLYFILE_1 =%POLYFILE_1%
echo INPUTPBF_1 =%INPUTPBF_1%
echo POLYFILE_2 =%POLYFILE_2%
echo INPUTPBF_2 =%INPUTPBF_2%
echo POLYFILE_3 =%POLYFILE_3%
echo INPUTPBF_3 =%INPUTPBF_3%
echo POLYFILE_4 =%POLYFILE_4%
echo INPUTPBF_4 =%INPUTPBF_4%
echo POLYFILE_5 =%POLYFILE_5%
echo INPUTPBF_5 =%INPUTPBF_5%
echo POLYFILE_6 =%POLYFILE_6%
echo INPUTPBF_6 =%INPUTPBF_6%
echo POLYFILE_7 =%POLYFILE_7%
echo INPUTPBF_7 =%INPUTPBF_7%
echo POLYFILE_8 =%POLYFILE_8%
echo INPUTPBF_8 =%INPUTPBF_8%
echo POLYFILE_9 =%POLYFILE_9%
echo INPUTPBF_9 =%INPUTPBF_9%
echo POLYFILE_10=%POLYFILE_10%
echo INPUTPBF_10=%INPUTPBF_10%
echo POLYFILE_11=%POLYFILE_11%
echo INPUTPBF_11=%INPUTPBF_11%
echo POLYFILE_12=%POLYFILE_12%
echo INPUTPBF_12=%INPUTPBF_12%
echo POLYFILE_13=%POLYFILE_13%
echo INPUTPBF_13=%INPUTPBF_13%
echo POLYFILE_14=%POLYFILE_14%
echo INPUTPBF_14=%INPUTPBF_14%
echo POLYFILE_15=%POLYFILE_15%
echo INPUTPBF_15=%INPUTPBF_15%
echo POLYFILE_16=%POLYFILE_16%
echo INPUTPBF_16=%INPUTPBF_16%
)
echo region: %hset%
echo Start: %TimeSTART%
echo TimeSTARTextract: %TimeSTARTextract%
echo TimeENDextract:   %TimeENDextract%
echo TimeENDconvert:   %TimeENDconvert%
echo End:              %TIME%
@echo on
pause

Что точно не делается, так это “внедрение” SRTM, так как не готов отдать больше 100ГБ для хранения данных о высотах.

Osmosis запускается с параметрами completeWays=yes completeRelations=yes

Это которая платная?

Ночнушка же бесплатная. И там OsmAnd Live обновляет раз в пару часов. За ночь то уж точно.

Добавть Ульяновскую, и как там прогресс переговоров про FTP-Svimik, вроде кто-то туда из наших заливает сборки.

Прошу Московскую область (включая Москву) и Ленинградскую (включая Санкт-Петербург)

freeExec,
literan
Завтра должно быть. Если какие-то проблемы - сообщите.

А где брать?

Как обычно.
Я только нарезку пытаюсь настроить.

http://s2.svimik.com/osm/
http://osm.svimik.com/

Вырезки будут тут:
http://osmosis.svimik.com/latest/

Надеюсь Svimik, как держатель площадки, создаст соответствующую тему.

В OSM Downloader появились, круто, спасибо. Правда размер подрос в 2 раза, в чём отличие?

Не знаю. Предположение что в ключах конвертации osmosis. Я их подбирал экпериментально.

ЛО - размер 309 байт. СПб - августовский файл.

спасибо!

а вот Московская область, наоборот, похудела более чем в два раза: с 383 Мб до 174.

Хм, а на этой страничке отдельные регионы тоже уже обновились http://s2.svimik.com/osm/

Надеюсь к завтра все регионы обновятся. До этого слегка экспериментировал с заливкой

Проверьте что сможете, в самих картах. Я не уверен, что адекватно обрезаются объекты выходящие за poly файлы.

Добрый день.
Если не сложно сделайте Ярославскую область.

Заранее спасибо!

Сделаю.

На данный момент вырезано следующее:

NAMEREG_1	TimeSTARTextract	TimeENDextract 	TimeExtract 	
RU-MOW	18:30:41	19:18:29	0:47:48	Москва
RU-MUR	19:19:13	20:10:34	0:51:21	Мурманская область
RU-KR	20:11:06	21:07:01	0:55:55	Карелия
RU-SVE	22:12:40	23:16:25	1:03:45	Свердловская область
RU-KYA	13:17:16	16:03:11	2:45:55	Красноярский край
RU-TY	3:03:56	3:51:14	0:47:18	Тюменская область
RU-MAG	3:51:29	4:36:52	0:45:23	Магаданская область
RU-LEN	4:37:08	5:21:46	0:44:38	Ленинградская область
RU-ULY	5:22:58	6:13:30	0:50:32	Ульяновская область
RU-MOS	6:13:58	7:17:47	1:03:49	Московская область
RU-AD	7:19:26	8:03:39	0:44:13	Адыгея
RU-AL	8:04:02	8:50:16	0:46:14	Алтай
RU-ALT	8:50:36	9:51:56	1:01:20	Алтайский край

Остался ещё 71 регион :open_mouth:
Нужна помощь по правильному выбору параметров osmosis. Так как если посмотреть, то вырезка идёт очень долго. Но на сервере не занят на 100 % ни один из ресурсов!!! Память, процессор свободны, диск SSD тоже не занят “на полную”.

Если вам надо из большего .pbf вырезать меньший .pbf, то быстрее будет osmconvert
oasmconvert in.pbf -o=out.pbf -B=poly.file
Можно еще добавить --complex-ways
А уже после конвертировать из .pbf в .osm с помощью osmosis