You are not logged in.

Announcement

*** NOTICE: forum.openstreetmap.org is being retired. Please request a category for your community in the new ones as soon as possible using this process, which will allow you to propose your community moderators.
Please create new topics on the new site at community.openstreetmap.org. We expect the migration of data will take a few weeks, you can follow its progress here.***

#3451 2013-05-06 16:11:50

akks
Member
From: Ufa
Registered: 2010-06-11
Posts: 1,728

Re: Конвертер OSM -> MP

А зачем нам вообще нужна эта база? Если только чтобы в память всё влезало, может обойтись малой кровью - засунуть теги и координаты в отдельные хэш-таблицы и натравить на них какой-нибудь Tie::LevelDB или Tie::Redis? (я их видел только в гугле)

Last edited by akks (2013-05-06 16:12:10)

Offline

#3452 2013-05-07 09:04:31

liosha
Member
From: Moscow
Registered: 2008-03-04
Posts: 8,447
Website

Re: Конвертер OSM -> MP

Я вынес OSM::Hash в отдельный файл и сделал возможность переключения на другой движок.
Теперь со стороны должно быть понятнее big_smile

akks wrote:

А зачем нам вообще нужна эта база? Если только чтобы в память всё влезало, может обойтись малой кровью - засунуть теги и координаты в отдельные хэш-таблицы и натравить на них какой-нибудь Tie::LevelDB или Tie::Redis?

Можно и их пробовать, если они умеют прозрачно работать с кодировкой и сериализацией.

akks wrote:

В общем, видимо всё упрётся в вопрос структуры базы - если она не заточена под конвертер, а имеет какой-то общий вид, вытаскивать из неё обработанные объекты нереально

Вроде postgis_simple мог бы подойти.

Offline

#3453 2013-05-07 09:31:10

akks
Member
From: Ufa
Registered: 2010-06-11
Posts: 1,728

Re: Конвертер OSM -> MP

liosha wrote:

Я вынес OSM::Hash в отдельный файл и сделал возможность переключения на другой движок.
Теперь со стороны должно быть понятнее big_smile

Да, уже чуть легче...

liosha wrote:

Можно и их пробовать, если они умеют прозрачно работать с кодировкой и сериализацией.

Теоретически, должны уметь. Пусть спецы по NoSQL попробуют. Мне MapDB хватило, а он попроще smile

liosha wrote:

Вроде postgis_simple мог бы подойти.

А логика всяких chains и mpoly может быть повторена без хранения этих объектов где-либо (в базе-то их нет) ?
Ладно, mpoly пока можно в памяти хранить, иначе sub _merge_multipolygon совсем накроется. А chains - это что за звери?

Last edited by akks (2013-05-07 09:34:27)

Offline

#3454 2013-05-07 09:43:34

liosha
Member
From: Moscow
Registered: 2008-03-04
Posts: 8,447
Website

Re: Конвертер OSM -> MP

akks wrote:

А логика всяких chains и mpoly может быть повторена без хранения этих объектов где-либо (в базе-то их нет) ?

chains в базе есть: это последовательность точек в вее.
mpoly в принципе можно попробовать собирать и на лету

Offline

#3455 2013-05-10 11:38:16

Larry0ua
Member
Registered: 2010-09-19
Posts: 1,061

Re: Конвертер OSM -> MP

после переустановки перла нашел баг (наверное). Может, у меня что-то с CPAN, но зависимость Math:Geometry:Planar:GPC:Polygon от Inline он не подхватил, не собирался без пинка
а для osm2mp (LangSelect.pm) нужна была, кроме перечисленных в комментариях в коде в osm2mp.pl - Text:Unidecode

Offline

#3456 2013-05-10 14:03:03

akks
Member
From: Ufa
Registered: 2010-06-11
Posts: 1,728

Re: Конвертер OSM -> MP

Свежий успешный опыт Win7 64 + ActivePerl 5.16.3 64bit:
> cpan
install Config::Std
install Template
q
> ppm
Поиск и установка по запросам:
YAML (1 шт, сам YAML)
Text Unidecode (1 шт) - надо добавить в комменты!
Math Polygon ( 5 пакетов)
Tree-R (1 шт)
Geo Openstreetmap Parser (1 шт)

Руками ни одного файла не копировал.

Last edited by akks (2013-05-10 14:03:25)

Offline

#3457 2013-05-10 17:00:36

liosha
Member
From: Moscow
Registered: 2008-03-04
Posts: 8,447
Website

Re: Конвертер OSM -> MP

Larry0ua wrote:

зависимость Math:Geometry:Planar:GPC:Polygon от Inline он не подхватил

Это криво прописаны зависимости у Math:Geometry:Planar:GPC:Polygon

Larry0ua wrote:

кроме перечисленных в комментариях в коде в osm2mp.pl - Text:Unidecode

akks wrote:

Text Unidecode (1 шт) - надо добавить в комменты!

Не надо. Его использует один из необязательных плагинов, так что требовать его установки не совсем правильно.

Offline

#3458 2013-05-10 18:54:27

akks
Member
From: Ufa
Registered: 2010-06-11
Posts: 1,728

Re: Конвертер OSM -> MP

liosha wrote:

Не надо. Его использует один из необязательных плагинов, так что требовать его установки не совсем правильно.

Надо, но написать в комментах "для плагина... нужен Text::Unidecode". Я бы и про ActivePerl  и Cpan install в начало коммента прописал.

Еще предлагаю автору иногда собирать для Windows с помощью pp / perl2exe / ... готовый дистрибутивчик. Перестанут доставать конечные пользователи - им этот CPAN совсем не нужен smile

Last edited by akks (2013-05-10 18:55:49)

Offline

#3459 2013-05-11 05:43:33

liosha
Member
From: Moscow
Registered: 2008-03-04
Posts: 8,447
Website

Re: Конвертер OSM -> MP

akks wrote:

Еще предлагаю автору иногда собирать для Windows с помощью pp / perl2exe / ... готовый дистрибутивчик

perl2exe не дружит с Inline

Offline

#3460 2013-05-11 10:32:42

akks
Member
From: Ufa
Registered: 2010-06-11
Posts: 1,728

Re: Конвертер OSM -> MP

liosha wrote:

perl2exe не дружит с Inline

Жаль sad PAR::Packer тоже?

Offline

#3461 2013-05-11 10:35:52

liosha
Member
From: Moscow
Registered: 2008-03-04
Posts: 8,447
Website

Re: Конвертер OSM -> MP

akks wrote:

PAR::Packer тоже?

Теоретически дружит, но не с наскока.
Надо разбираться, как ему подсунуть готовую dll-ку, чтобы он её правильно съел.

Offline

#3462 2013-05-11 16:58:58

Nikolya
Member
From: Краснодар
Registered: 2010-08-17
Posts: 937

Re: Конвертер OSM -> MP

liosha wrote:
akks wrote:

Еще предлагаю автору иногда собирать для Windows с помощью pp / perl2exe / ... готовый дистрибутивчик

perl2exe не дружит с Inline

да уж, попробывал perlapp и perl2exe, так и есть с Inline не дружат оба. нуна ковырнуть. ибо под винду exe'шник намного быстрее работает, да и без гемора с перлом. getbound.pl тож не собрался (((


как вариант
http://habrahabr.ru/post/149586/

Мы получили директорию с нашим приложением, которую можно перенести на любую другую систему при помощи простого копирования.

Last edited by Nikolya (2013-05-11 18:19:09)

Offline

#3463 2013-05-12 16:59:08

akks
Member
From: Ufa
Registered: 2010-06-11
Posts: 1,728

Re: Конвертер OSM -> MP

В идеале (для скорости) можно было бы переписать Perl-часть Math::Geometry::Planar::GPC::Polygon без Inline и натравливать Perl2Exe (когда заработает - честно его купить для сервера)...
Кто писал С-модули для перла без Inline?

Last edited by akks (2013-05-12 16:59:58)

Offline

#3464 2013-05-14 10:01:06

akks
Member
From: Ufa
Registered: 2010-06-11
Posts: 1,728

Re: Конвертер OSM -> MP

:|Я обкурился SWIG, а затем даже XS и перевел Math::Geometry::Planar::GPC::Polygon на XS (зависимость Inline::C исчезает, dll остаётся)
(по дороге потерял три функции, которые не использовались - они возвращали нестандартные типы, а TYPEMAP изучать уже не захотелось)

Math::Polygon::Tree и osm2mp переводятся на его использование заменой Math::Geometry::Planar::GPC::Polygon на Math::Geometry::Planar::GPC::PolygonXS ,mp-файл вроде одинаковый (лучше проверить)
https://dl.dropboxusercontent.com/u/633 … ygonXS.zip
https://dl.dropboxusercontent.com/u/633 … pcdmQa.zip

Попробуете скомпилировать?

Last edited by akks (2013-05-14 10:05:00)

Offline

#3465 2013-05-14 10:14:13

liosha
Member
From: Moscow
Registered: 2008-03-04
Posts: 8,447
Website

Re: Конвертер OSM -> MP

Круто! Это дело нужно выложить на CPAN, желательно переобозвав как-то покороче smile

Про упаковку: http://search.cpan.org/~rschupp/PAR-Pac … /lib/pp.pm

Offline

#3466 2013-05-14 11:47:53

akks
Member
From: Ufa
Registered: 2010-06-11
Posts: 1,728

Re: Конвертер OSM -> MP

liosha wrote:

Круто! Это дело нужно выложить на CPAN, желательно переобозвав как-то покороче smile

Предоставляю такую возможность smile Лучше сначала потестировать на живом osm2mp (главное - не на серверах конвертации) smile
Ну и функции pts_to_vertex_list , vertex_list_to_pts, gpc_free_polygon2 на перл не переведены (не пригодились, к счастью).

Я не удивлюсь, если там будут утечки памяти, основное шаманство состояло в замене FREE на Safefree (иначе на FREE вылетало) и вынесении функции get_polygons в XS-файл c переобозначений действий со стеком Inline_Stack_* (иначе список полигонов был всегда пуст). Оба действия выполнялись интуитивно и не факт, что правильно.

P.S. Извиняюсь, там куча отладочного вывода. Сейчас удалю и перевыложу на DropBox.
https://dl.dropboxusercontent.com/u/633 … ygonXS.zip

Last edited by akks (2013-05-14 12:02:59)

Offline

#3467 2013-05-14 12:02:19

liosha
Member
From: Moscow
Registered: 2008-03-04
Posts: 8,447
Website

Re: Конвертер OSM -> MP

akks wrote:

Я не удивлюсь, если там будут утечки памяти

Ну вот как раз этого не нужно. С утечками оно уже и так есть: http://search.cpan.org/~dvdpol/Math-Geo … -GPC-1.04/

Во всяком случае, встроенный тест прогоняется.
Непонятно только, зачем там в зависимостях перл 5.16.3.

Offline

#3468 2013-05-14 12:05:03

akks
Member
From: Ufa
Registered: 2010-06-11
Posts: 1,728

Re: Конвертер OSM -> MP

liosha wrote:

Непонятно только, зачем там в зависимостях перл 5.16.3.

Не знаю, само создалось (h2xs).  Можно пробовать уменьшать (негде протестировать). Писал, кстати, под Strawberry Perl.
Я ещё GPC посвежее взял с сервера (обещали как раз уменьшение утечек). Тест я просто перенёс в папку, переименовал в .t и изменил имя пакета.

Управление памятью в Перле - какой-то неимоверный ужас (особенно после Явы) ))
Отладку убрал, MP-файлы совпали (кроме строчки со временем).

Last edited by akks (2013-05-14 12:08:01)

Offline

#3469 2013-05-14 12:29:32

liosha
Member
From: Moscow
Registered: 2008-03-04
Posts: 8,447
Website

Re: Конвертер OSM -> MP

akks wrote:

перевыложу на DropBox

Лучше бы в публичный репозиторий.

akks wrote:

Управление памятью в Перле - какой-то неимоверный ужас (особенно после Явы) ))

Управление памятью в перле заключается в отслеживании циклических ссылок. Всё остальное он делает сам big_smile

Offline

#3470 2013-05-14 13:20:20

Nikolya
Member
From: Краснодар
Registered: 2010-08-17
Posts: 937

Re: Конвертер OSM -> MP

akks wrote:

Отладку убрал, MP-файлы совпали (кроме строчки со временем).

сам EXE'шник можно в общий доступ?

Offline

#3471 2013-05-14 14:58:58

akks
Member
From: Ufa
Registered: 2010-06-11
Posts: 1,728

Re: Конвертер OSM -> MP

Nikolya wrote:
akks wrote:

Отладку убрал, MP-файлы совпали (кроме строчки со временем).

сам EXE'шник можно в общий доступ?

У меня EXEшника нет, просто поправили модуль, который, теоретически, мешал сделать EXEшник.

Offline

#3472 2013-05-14 15:11:49

akks
Member
From: Ufa
Registered: 2010-06-11
Posts: 1,728

Re: Конвертер OSM -> MP

Выложил PolygonXS на Github:
https://github.com/alex85k/Perl-GPCPolygon-XS

liosha wrote:

pp osm2mp.pl Exe-шник делает, но он при запуске ругается:

The locale codeset (cp1251) isn't one that perl can decode, stopped at Encode/Locale.pm line 94.
Compilation failed in require at script/text.pl line 2.

pp -x osm2mp.pl вылетает  sad
SYSTEM ERROR in executing osm2mp.pl: 256 at C:/strawberry/perl/site/lib/Module/ScanDeps.pm line 1302.

Last edited by akks (2013-05-14 15:37:32)

Offline

#3473 2013-05-14 16:21:39

akks
Member
From: Ufa
Registered: 2010-06-11
Posts: 1,728

Re: Конвертер OSM -> MP

Сборочка под Windows64 (без всякого ускорения, просто папки):
https://dl.dropboxusercontent.com/u/633 … _win64.zip

Offline

#3474 2013-05-14 16:32:58

liosha
Member
From: Moscow
Registered: 2008-03-04
Posts: 8,447
Website

Re: Конвертер OSM -> MP

akks wrote:

Exe-шник делает, но он при запуске ругается:
The locale codeset (cp1251) isn't one that perl can decode,

Это должно помочь: http://stackoverflow.com/questions/6107 … ed-archive

akks wrote:

Сборочка под Windows64 (без всякого ускорения, просто папки)

Дык а ускорения никакого и не будет, это ж не компиляция

Offline

#3475 2013-05-15 03:16:31

Nikolya
Member
From: Краснодар
Registered: 2010-08-17
Posts: 937

Re: Конвертер OSM -> MP

liosha wrote:
akks wrote:

Exe-шник делает, но он при запуске ругается:
The locale codeset (cp1251) isn't one that perl can decode,

Это должно помочь: http://stackoverflow.com/questions/6107 … ed-archive

use Encode qw(:all);

my @list = Encode->encodings();
print join("\n", @list);

где эти строчки? чтоб добавить следующие

use Encode qw(:all);

use Encode::Byte;
use Encode::CN;
use Encode::JP;
use Encode::KR;
use Encode::TW;

my @list = Encode->encodings();
print join("\n", @list);

и в нашем случае что добавить?

use Encode::RU;

или в связи с ошибкой - The locale codeset (cp1251) isn't one that perl can decode

use Encode::cp1251;

liosha прекращай заставлять думать))) сделай готовый рецепт)

Offline

Board footer

Powered by FluxBB