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

В выгрузке от них есть файл batch.xml. Это конфигурационный файл конвертации. Так вот в нём параметр:

indexPOI="false"

Как следствие - POI отсутствуют.

Похоже, что с POI они делают только на коммерческой основе.

Если вам нужен небольшой кусочек карты для себя, то можно воспользоваться простейшим скриптом и связкой Github+ Appveyor. Типа такого https://github.com/tico-tico/obf_builder .
Из overpass-api.de выдергивается прямоугольник и потом конвертируется с помощью обычного OsmandMapCreator. В Appveyor можно настроить Build schedule для регулярной сборки нужной вам карты и потом качать с телефона в любое время по пермалинку

https://ci.appveyor.com/api/projects/<account>/<project>/artifacts/<artifact_file_path>

самую свежую версию.

В курсе кто-нибудь когда снова начнут обновлять карты? Или каким способом это модно сделать самому

Отписал Svimik - “починил, завтра должны сконвертироваться”.

Самое первое сообщение + поиск по “OsmAndMapCreator”.

Проблема была в новой версии OsmAndMapCreator.

Спасибо Cd_spb за апрельскую версию. С ней конвертация запустилась.

Пробовал конвертировать старой версией, пробовал новой (не сразу, но запустилась)… сравнивал со скачанной картой. Все карты получаются разные.

Подскажите, где конкретно прописаны правила конвертации т.е. построения индексов. Все бы ничего и можно пользоваться, но адресный поиск… есть непонятки с plase=allotments.

Спасибо.

в карту генерируемую на серверах османда вклеивают еще высотные профили, так что разница в картах вполне допустима.
необходимая сборка высотных профилей xmd5a выкладывал на рутрекере.

Насколько я вижу, ежедневные выкладки возобновились, но появился вопрос по генерируемым картам. Похоже, из отображения напрочь пропали railway=disused. Проблема в картах или OsmAnd-е?

Приветствую.
Думаю дело в конвертере. Если хотите, то можете подобрать свежий и рабочий вариант. А потом предложить его Svimik’у. Насколько помню, у него апрельская версия.

Скачал OsmAndMapCreator, запустил. Всё бы ничего, но я, к своему стыду, не нашёл файла. отвечающего за настройки конвертации. Должен же быть такой, наверное? Видимо, в версиях конвертера, которые использовались раньше, railway=disused были, в той, что используется сейчас нет. Хотелось бы понять, где нужно подкручивать файл, чтобы можно восстанавливать в настройках объекты, пропавшие с карты в текущей версии конвертера.

Зависит от того что использовано в стиле. И судя по нему, disused только при детальном отображении карты.
https://github.com/osmandapp/OsmAnd-resources/blob/master/rendering_styles/default.render.xml#L2801

<switch>
<case tag="railway" value="abandoned"/>
<case tag="railway" value="construction"/>
<case tag="railway" value="disused"/>
<case tag="railway" value="preserved"/>
<apply_if moreDetailed="false" maxzoom="18" order="-1"/>
</switch>

Здесь собака зарыта?

Очень медленно и аккуратно крутил до максимального зума. Когда по ширине на экран влезало метров 15-20 карты, а по высоте - метров 25-35, проявился-таки railway=disused. Это не максимальный зум, там ещё есть, куда крутить, но при навигации, мне кажется, такими увеличениями не пользуются: не видно окружающей местности.

Получается, это в настройках OsmAnd-а такое зашито? Мне кажется, раньше railway=disused проявлялся значительно раньше.

Если в отображении нашли, значит вопрос не в конверторе.
Смотрите стили отображения - отдельная тема на форуме. Вкратце - из apk распаковываете render-что-то-там.xml, редактируете и кладёте в соответствующую папку на карточке.

Что-то опять забили на обновление

Всё, кина не будет. На гислабе скорей всего халявные выгрузки не возобновят, поэтому осваиваем дружно самостоятельную конвертацию.

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

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

Инсайдерская инфа 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