gryphon
Поставил версию strawberry-perl-5.16.3.1-64bit вот такие ошибки из твоего репозитария при сборке с переводом Яндексом:
Processing nodes...
DBD::SQLite::db do failed: Safety level may not be changed inside a transaction at C:/osm2mp/lib/SQLite_File.pm line 318.
DBD::SQLite::db do failed: Safety level may not be changed inside a transaction at C:/osm2mp/lib/SQLite_File.pm line 318.
DBD::SQLite::db do failed: Safety level may not be changed inside a transaction at C:/osm2mp/lib/SQLite_File.pm line 318.
Хотя Bio::DB::SeqFeature::Store::DBI::SQLite хоть и не без проблем но установил.
PS: Если всё что я щас пишу тебе не интересно дай знать, а то получится как с liosha, написал и тишина.
Я просто долго читаю. Но вполне могу что-то пропустить/забыть, если что, пингуй через личку
Что касается getbound, не очень представляю как это должно выглядить и будет ли от этого практическая польза (основная задача утилиты, все-таки, это загрузка границ). Если необходимо сделать границу страны без пары регионов, то это решается созданием составного алиаса из оставшихся регионов и загрузкой с флагом clip.
По osm2mp.
На домашнем компе у меня perl 5.22, osm2mp работает, возможно с ворнингами, но ничего особо навороченного здесь не конвертирую. На боевом сервере старый добрый 5.16, там работает вообще без замечаний, но все зависимости собирались cpan-ом уже не помню как давно.
Я попробую найти 5.24 из заставить его там работать, но, если у тебя запускается последняя версия из Лешиного реопозитария ( https://github.com/liosha/osm2mp ), то использовать мой вариант большого смысла нет: там основное изменение - другой алгоритм для fix-close-nodes, это критично для гармина
Согласен что решается, но если регионов сильно больше 10? Не принципиально конечно, только для удобства.
Так вот на нём и возникла непонятная то ли варнинг то ли ошибка, карты при этом собираются:
DBD::SQLite::db do failed: Safety level may not be changed inside a transaction at C:/osm2mp/lib/SQLite_File.pm line 318.
fix-close-nodes как раз и заинтересовал в твоём репозитарии.
yatr: failed request zh-en for щлШчФ-цЭС at C:/osm2mp/lib/LangTransform/YaTranslate.pm line 109.
Wide character in warn at C:/osm2mp/lib/LangTransform/YaTranslate.pm line 109.
yatr: failed request zh-en for щлШчФ-цЭС at C:/osm2mp/lib/LangTransform/YaTranslate.pm line 109.
Wide character in warn at C:/osm2mp/lib/LangTransform/YaTranslate.pm line 109.
yatr: failed request zh-en for ц¦Вц+ЛцЭС at C:/osm2mp/lib/LangTransform/YaTranslate.pm line 109.
Wide character in warn at C:/osm2mp/lib/LangTransform/YaTranslate.pm line 109.
Теперь про ошибки SQLite в клубничном перле. Проблема в сторонней библиотеке SQLite_File.pm (лежит в папке lib). Она без проблем работает на линуксе, но на винде начинает выпендриваться. Использование более свежей версии проблему не решило.
Если закомментировать вызов **PRAGMA synchronous = off **, ошибка уйдет, файл даже соберется, но при завершении программы получишь три новые ошибки. И моего понимания перла как-то не очень хватает, чтобы это пофиксить. Возможно, есть смысл попробовать другие сорта перла под винду.
Вобщем моя вера в кросплатформенность сильно пошатнулась сегодня
На 5.16 всё отлично работает, ошибок не выдаёт. А на 5.24 выскакивает ошибка и когда нажмёшь OK следущая ошибка:
Loading configuration...
malformed JSON string, neither tag, array, object, number, string or atom, at character offset 0 (before "(end of string)") at C:/osm2mp/lib/LangTransform/YaTranslate.pm line 68.
PS: Правда Bio::DB::SeqFeature::Store::DBI::SQLite пока так и не удалось поставить на 5.24.
Переустановил по новой, ошибок что выше не выскакивает на аналогичном примере, зато выскакивают следующие варнинги:
Processing nodes...
(in cleanup) Can't call method "commit" on an undefined value at C:/osm2mp_x/lib/SQLite_File.pm line 794.
All cache engines failed; data will not be saved! at C:/osm2mp_x/lib/LangTransform/YaTranslate.pm line 175.
(in cleanup) Can't call method "commit" on an undefined value at C:/osm2mp_x/lib/SQLite_File.pm line 794.
All cache engines failed; data will not be saved! at C:/osm2mp_x/lib/LangTransform/YaTranslate.pm line 175.
(in cleanup) Can't call method "commit" on an undefined value at C:/osm2mp_x/lib/SQLite_File.pm line 794.
All cache engines failed; data will not be saved! at C:/osm2mp_x/lib/LangTransform/YaTranslate.pm line 175.
Вот теперь всё отлично! Ещё вопрос на эту же тему, при запуске конвертации нескольких файлов использующих перевод Яндекса выскакивает следующая ошибка:
DBD::SQLite::db do failed: database is locked at C:/navitel/lib/SQLite_File.pm line 319.
DBD::SQLite::db do failed: database is locked at C:/navitel/lib/SQLite_File.pm line 319.
Это как то влияет на перевод или только данные перевода не кэшируются?
В теории, sqlite позволяет работать с одной базой нескольким процессам, но, судя по этим ошибкам и Лешиным комментам в коде, вариант с параллельной работой явно не закладывался. Вобщем, если в каких-то случаях будет работать, то это просто удачное стечение обстоятельств.
Привет. Подскажи как getbound собрать? osm2mp64.exe собрался и работает, а с getbound`ом засада, собирается, но не работает:
No clipper class available at Math/Polygon/Tree.pm line 35.
BEGIN failed--compilation aborted at Math/Polygon/Tree.pm line 35.
Compilation failed in require at script/getbound.pl line 31.
BEGIN failed--compilation aborted at script/getbound.pl line 31.
PS: Пробовал без параметров собирать, пробовал по аналогии файл pp-opts создавать, результат тот же
PPS: Нашёл недостающее звено Math::Geometry::Planar::GPC::PolygonXS
C:\osm2mp>getbound 60189 -o Russia.poly -onering
Bad subroutine name for autodie: read at App/OsmGetbound/WriterPoly.pm line 10.
BEGIN failed--compilation aborted at App/OsmGetbound/WriterPoly.pm line 10.
Compilation failed in require at (eval 455) line 1.
PS: Geo-Shapefile-Writer тока не встал, пришлось руками подкинуть в папку lib, собирал на Strawberry Perl 5.16.3 x64.
//hint// to see the cpan-testers results for installing this module, try:
reports LIOSHA/Geo-Shapefile-Writer-0.006.tar.gz
Running make install
make test had returned bad status, won't install without force
Stopping: 'install' failed for 'L/LI/LIOSHA/Geo-Shapefile-Writer-0.006.tar.gz'.
Подскажите пожалуйста, кто знает - вот в конфиге вижу что можно вставить кусок кода на перле.
А вопрос такой - в этом куске можно как в самом скрипте функции задавать или можно пользоваться только уже заданными функциями?
Сам скрипт изменить не могу - у меня работает только компилированный вариант.
Насколько я знаю там YAML язык разметки используется. Сам бы хотел где то найти толковое описание применительно к osm2mp. А то всё больше методом тыка.