На самом деле, проблем с ресурсами особо и нет. Могу забрать ещё что-нибудь на конвертирование, если надо.
Единственное, что не смогу забрать - это Украину с её двумя языковыми версиями (это никак не вписывается в концепцию моих скриптов).
А кто конвертирует Украину на Рамблере http://navitel.osm.rambler.ru/?country=Ukraine? И есть ли Украина в формате nm2 с украиноязычными именами? Было бы хорошо, особенно для западных областей
Наличие подобных файлов в папках с картами же ни на что не повлияет? Если что-то ломается, можно иную структуру формирования названий придумать, хоть ~.info
Список полей - пример, предлагайте, что еще можно добавить.
Для чего это нужно? Все просто, парсингом данных файлов можно формировать динамическую страничку с общей информацией по сгенерированным картам - кто, когда, насколько актуальна карта.
Решил для себя переписать скрипты от AHTOH. Имеющиеся не устраивают структурой, по скрпту на карту, хочется управления с командной строки. Поскольку нужна кроссплатформенность (на Windows тестирую, на Linux будет крутится), а в последнее время полюбился Python, то на него и пал выбор. В итоге, вырос монстрик, которым и делюсь.
Возможные параметры запуска:
-i переинициализация batch.xml, если вдруг решите изменить дефолтные папки для PBF/OBF (input/temp), достаточно сменить их в <cfg/config.py> и запустить скрипт с этим параметром. При этом скрипт продолжит выполнять задачи по конвертированию
-o только переинициализация batch.xml, на этом скрипт заканчивает свою деятельность
-c скачивает и распаковывает конвертер, по умолчанию берет стабильную версию, однако, практика показала, что имеющаяся на сайте стабильная не работает. Но выпиливать не стал
-n вместо стабильной скачивать ночной билд конвертера, использовать вместе с предыдущим параметром -с
-u не обновлять файл стилей для UniRS, по умолчанию обновляется при каждом запуске
-m обработать только указанный в значении параметра список карт. В отсутствии параметра будут обработаны все карты из <cfg/maps.cfg>. Карты перечисляются через запятую. Пример: -m BY,LV,RU-AD. Указываемые карты должны быть описаны в <cfg/maps.cfg>.
-d не скачивать карты. Полезно для перегенерации уже имеющихся файлов, что бы не качать заного. Если в списке карт для конвертации какой-то не будет, скачивание все равно произойдет.
-f только заливка по FTP, конвертации не происходит. Полезно в случае сбоев при аплоаде для перезаливки с указанием конкретного списка карт в параметре -m
-s отправка отчета критических ошибок генерации на e-mail. В случае отсутствия ошибок письмо не отправляется.
Как видно, значения принимает только один параметр, -m, остальные лишь управляют булевыми значениями с подбором дефолтных значений так, что бы для настроенной ежедневной конвертации было достаточно запустить python process_maps.py, или python process_maps.py -s для уведомлений на почту.
• Все переменные описаны в файле <cfg/config.py>.
• Файл с параметрами ftp не трогал, остается как есть и используется <cfg/ftp.cfg>.
• Файл с картами видоизменился и переименовался <cfg/maps.cfg>. В нем указываются все карты, которые собираетесь конвертировать построчно в следующем формате: ссылканазвание на выходе без расширенияназвание папки, в которую попадет файл на FTP. Тут есть один момент, подразумевается, что названия pbf также совпадают с этим значением. Т.е для AZ pbf файл имеет название AZ.osm.pbf. Надеюсь это справедливо для всех карт
• Для почтовых уведомлений появился файл <cfg/mail.cfg> с информацией о подключении, получателях и т.д.
• Текст ошибок вынесен в файл <cfg/error_text.cfg>. Именно эти строки попадут в имейл, или в поток стандартного вывода при отсутсвии ключа -s.
• Для проверки работоспособности отправки и-мейл после настройки можно запусть скрипт <send_test.py>. Опять один скользкий момент. Отправку писем с местных (это я про Эстонию) мыло-хостеров можно осуществлять только через SMTP провайдера. У меня аутентификация отключена и проверить корректность работы отправки с аутентификацией пока не на чем.
PS: Еще по поводу обновления конвертера. Как уже упоминал, стабильная версия ничерта не работает, ночную как-то ссыкотно, в следствии чего рекомендую оставить ту версию, что была в скриптах AHTOH (я брал у SviMik), посему, о параметре -c можно пока забыть. Отдельно тот самый OsmAndMapCreator положил сюда
Как быть, ежели я хочу взять на конвертацию регион, отсутствующий на гитхабе? Ведь и у SviMik в описателях карт, насколько я понимаю, его тоже не будет? Как бы этот процесс упростить…
Не совсем верно. Если под описателем имеется ввиду maplist.xml, то для него почти вся информация уже содержится в названии папки (она будет кодом) и имени файла (он будет названием).
Для русского названия следует добавить запись в name_ru.csv (правится любым текстовым редактором).
Пример:
UA-RU;Украина (рус)
(на гитхабе этого кстати нет)
Инструкция:
Создайте новую папку
Добавьте запись в name_ru.csv
Можно заливать свою карту
Известные ограничения:
в btsync оно само не появится, нужно будет спросить меня
в случае чего, я не смогу взять конвертацию на себя
Что-то не выходит у меня наладить конвертацию выбранных регионов. Тестовые конвертации на небольших объемах проходят на ура, а как дело доходит до обработки >~150Mb на PBF, так креш. Упомянутая версия конвертера из архива со скриптами валится с
A fatal error has been detected by the Java Runtime Environment:
SIGSEGV (0xb) at pc=0x00007f5ce2fc3f41, pid=4914, tid=140036921820928
JRE version: Java(TM) SE Runtime Environment (7.0_51-b13) (build 1.7.0_51-b13)
Java VM: Java HotSpot(TM) 64-Bit Server VM (24.51-b03 mixed mode linux-amd64 compressed oops)
Problematic frame:
C [sqlite-3.7.6.3-libsqlitejdbc.so+0x12f41] sqlite3_backup_pagecount+0x241
Судя по Османд гугло круппе бага была исправлена еще в январе 13-го. Что же, нужно, думаю, попробовать ночнушку. Ночной билд данной ошибки не вываливает, но конверитить все карты все равно не собирается, похоже, валится с аут оф мемори.
/var/osmandmc/./temp/Finland-latest_2.obf.rtree0
java.io.IOException: Stream Closed
at java.io.RandomAccessFile.seek(Native Method)
at rtree.FileHdr.writeFileHeader(FileHdr.java:243)
at rtree.FileHdr.flush(FileHdr.java:333)
at rtree.FileHdr.finalize(FileHdr.java:318)
at java.lang.ref.Finalizer.invokeFinalizeMethod(Native Method)
at java.lang.ref.Finalizer.runFinalizer(Finalizer.java:101)
at java.lang.ref.Finalizer.access(Finalizer.java:32)
at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:190)
Exception in thread "Timer-0" java.lang.OutOfMemoryError: Java heap space
java.sql.SQLException: ResultSet closed
at org.sqlite.RS.checkOpen(RS.java:63)
at org.sqlite.RS.markCol(RS.java:77)
at org.sqlite.RS.getBytes(RS.java:230)
at net.osmand.data.preparation.OsmDbAccessor$EntityProducer.run(OsmDbAccessor.java:339)
Видно, не судьба. Пока взял на себя только Болгарию с геофабрик.