You are not logged in.
- Topics: Active | Unanswered
Announcement
#1 2010-05-21 19:49:12
- andriano
- Member
- Registered: 2009-06-15
- Posts: 1,667
Re: Препроцессор osm-файлов
Выделено из топика Конвертер OSM -> MP
Для вас абсурд - вы не юзаете эту фичу, кому-то надо - тот будет юзать. В чем проблема???
Так это не фича - это бага!
*.MP в качестве промежуточного формата имеет смысл ТОЛЬКО для уменьшения объема данных. Потому как, во-первых, сам *.MP в качестве окончательного формата использован быть не может, а во-вторых - сам формат разработан конкретным человеком и, соответственно, не может быть адаптирован под собственные нужды без его одобрения.
Я понимаю, что можно использовать ТОЛЬКО OSM либо ТОЛЬКО MP, в зависимости от того, что нам удобнее, но какой смысл делать нечто, что обладает недостатками обоих этих форматов, не имея при этом никаких собственных преимуществ?
Offline
#2 2010-05-21 20:20:22
- liosha
- Member
- From: Moscow
- Registered: 2008-03-04
- Posts: 8,447
- Website
Re: Препроцессор osm-файлов
Zkir, мне тоже кажется, что правильнее было бы препроцессировать osm, тем более что готового софта и библиотек для этого полно.
Например, для белорусов ихняя адресация ресолвится в человеческий вид именно препроцессором
Offline
#3 2010-05-21 20:22:17
- Zkir
- Member
- From: Хрустальная Москва
- Registered: 2009-02-21
- Posts: 6,110
Re: Препроцессор osm-файлов
смысл задачи, для которой предлагается такое решение.
Истинные слова не не приятны, приятные слова не истинны.
True words are unpleasant; pleasant words are untrue.
Offline
#4 2010-05-21 20:29:08
- Ezhick
- Member
- From: Moscow
- Registered: 2008-10-08
- Posts: 2,508
- Website
Re: Препроцессор osm-файлов
Леш, как можно ПРЕпроцессором сохранить в мп информаци. которую твой конвертер выкинет???? Мне, например, нужно оставить на домах кладр-код, как я могу это сделать ПРЕпроцессором???
Offline
#5 2010-05-21 20:31:02
- Ezhick
- Member
- From: Moscow
- Registered: 2008-10-08
- Posts: 2,508
- Website
Re: Препроцессор osm-файлов
Ezhick wrote:Для вас абсурд - вы не юзаете эту фичу, кому-то надо - тот будет юзать. В чем проблема???
Так это не фича - это бага!
*.MP в качестве промежуточного формата имеет смысл ТОЛЬКО для уменьшения объема данных.
Повторяю - если вам не надо и вы не можете понять зачем - не юзайте и не мучайте голову попытками понять. Если двум людям, юзающим мп для конвертации в карты под разные программы эта ФИЧА нужна, то не надо называть ее багой, ок?
Offline
#6 2010-05-21 20:34:10
- andriano
- Member
- Registered: 2009-06-15
- Posts: 1,667
Re: Препроцессор osm-файлов
смысл задачи, для которой предлагается такое решение.
Бывают способы решения, сами по себе являющиеся негодными. Вне зависимости от задачи.
Путь тупиковый.
Тут только два варианта:
1. Я (или кто другой) сумею убедить Вас в бесперспективности выбранного способа.
2. Вы пытаетесь его реализовать и убеждаетесь в этом самостоятельно. Но несколько позже, и потратив значительное количество сил и времени.
Offline
#7 2010-05-21 20:38:26
- liosha
- Member
- From: Moscow
- Registered: 2008-03-04
- Posts: 8,447
- Website
Re: Препроцессор osm-файлов
Леш, как можно ПРЕпроцессором сохранить в мп информаци. которую твой конвертер выкинет???? Мне, например, нужно оставить на домах кладр-код, как я могу это сделать ПРЕпроцессором???
Я говорил про вопрос Zkir-а - "отсеять к едрене фене частные парковки".
А кладр-код на домах - это зло.
Offline
#8 2010-05-21 20:39:02
- Zkir
- Member
- From: Хрустальная Москва
- Registered: 2009-02-21
- Posts: 6,110
Re: Препроцессор osm-файлов
Леш, значит я в самом деле плохо объясняю.
Задача - организовать присвоение mp-типа в зависимости от нескольких тегов.
Например, amenity=parking преобразовать в полигон(0x05) и точку (0x2f0b) , а amenity=parking+access=private, только в полигон, причем другого типа (0x06)
Как ее решить препроцессором?
Истинные слова не не приятны, приятные слова не истинны.
True words are unpleasant; pleasant words are untrue.
Offline
#9 2010-05-21 20:41:39
- liosha
- Member
- From: Moscow
- Registered: 2008-03-04
- Posts: 8,447
- Website
Re: Препроцессор osm-файлов
Zkir, например, тупо добавить препроцессором нужным объектам тег mp_type=*.
В зависимости от всех необходимых условий.
Или преобразовать все amenity=parking+access=private в amenity=private_parking
Offline
#10 2010-05-21 20:44:22
- Ezhick
- Member
- From: Moscow
- Registered: 2008-10-08
- Posts: 2,508
- Website
Re: Препроцессор osm-файлов
А кладр-код на домах - это зло.
Это был просто пример.
Offline
#11 2010-05-21 20:45:34
- andriano
- Member
- Registered: 2009-06-15
- Posts: 1,667
Препроцессор osm-файлов
Повторяю - если вам не надо и вы не можете понять зачем - не юзайте и не мучайте голову попытками понять. Если двум людям, юзающим мп для конвертации в карты под разные программы эта ФИЧА нужна, то не надо называть ее багой, ок?
Да без проблем.
Я из чисто гуманистических побуждений пытаюсь предостеречь этих двух людей от ошибки.
Ну и заодно десятки и сотни людей, регулярно качающих *.MP для собственных нужд, от неразумной траты трафика.
Не следует плодить лишних сущностей: есть OSM и есть MP. Они разные. И не нужно пытаться создать новую сущность, сочетающую в себе свойства их обеих: мы получим не сумму достоинств, а сумму недостатков.
Offline
#12 2010-05-21 20:59:09
- Zkir
- Member
- From: Хрустальная Москва
- Registered: 2009-02-21
- Posts: 6,110
Re: Препроцессор osm-файлов
Zkir, например, тупо добавить препроцессором нужным объектам тег mp_type=*.
Каким нужным-то? эти объекты еще только предстоит сформировать, причем для одного исходного их может получиться несколько.
Или преобразовать все amenity=parking+access=private в amenity=private_parking
Это можно, но "альтернативные" теги в конфигах osm2mp имхо как раз и есть тупиковый путь - путь к полному бардаку.
Истинные слова не не приятны, приятные слова не истинны.
True words are unpleasant; pleasant words are untrue.
Offline
#13 2010-05-22 07:35:08
- Ezhick
- Member
- From: Moscow
- Registered: 2008-10-08
- Posts: 2,508
- Website
Re: Препроцессор osm-файлов
Ну и заодно десятки и сотни людей, регулярно качающих *.MP для собственных нужд, от неразумной траты трафика.
Блииииииииннннн... Кто чего качает? Какой трафик???? Я конверчу из осм в мп У СЕБЯ НА КОМПЕ. Какой нафиг трафик????
Offline
#14 2010-05-22 15:49:23
- andriano
- Member
- Registered: 2009-06-15
- Posts: 1,667
Re: Препроцессор osm-файлов
Блииииииииннннн... Кто чего качает? Какой трафик???? Я конверчу из осм в мп У СЕБЯ НА КОМПЕ. Какой нафиг трафик????
Тогда прошу прощения. Недопонял. Я считал, что так будет конвертиться MP, выкладываемый на сайте для всеобщего скачивания, а не для чьего-то внутреннего индивидуального использования.
Так, прощения попросил. Но по прежнему продолжаю рекомендовать - если не хватает данных в MP, переходить на OSM, а не изобретать костыли. Просто чисто по человечески: мне жалко чужого времени, потраченного зря. Особенно времени людей, которые делают что-то полезное для других.
Offline
#15 2010-05-22 16:26:12
- Komяpa
- Member
- From: Minsk
- Registered: 2009-04-14
- Posts: 1,323
- Website
Re: Препроцессор osm-файлов
Но по прежнему продолжаю рекомендовать - если не хватает данных в MP, переходить на OSM, а не изобретать костыли. Просто чисто по человечески: мне жалко чужого времени, потраченного зря. Особенно времени людей, которые делают что-то полезное для других.
andriano, если вы так хотите пересчитывать чужое время, подумайте, сколько займет создание конвертеров вида osm2navitel, osm2rus, osm2{anotherpogram}, и стоит ли им заниматься при существовании osm2mp и mp2{нужный_формат}.
Хотите сэкономить чужое время - пишите полезные патчи и присылайте их авторам
world processing is what we do.
[OSMF BY Team] [http://komzpa.net/] [jabber: komzpa@gmail.com] [mobile/SMS: +375257407159]
Offline
#16 2010-05-22 19:18:26
- Ezhick
- Member
- From: Moscow
- Registered: 2008-10-08
- Posts: 2,508
- Website
Re: Препроцессор osm-файлов
andriano, если вы так хотите пересчитывать чужое время, подумайте, сколько займет создание конвертеров вида osm2navitel, osm2rus, osm2{anotherpogram}, и стоит ли им заниматься при существовании osm2mp и mp2{нужный_формат}.
Хотите сэкономить чужое время - пишите полезные патчи и присылайте их авторам
+100500!!!
Offline
#17 2010-05-22 20:37:40
- andriano
- Member
- Registered: 2009-06-15
- Posts: 1,667
Re: Препроцессор osm-файлов
...и стоит ли им заниматься при существовании osm2mp и mp2{нужный_формат}.
Если существующие osm2mp и mp2{нужный_формат} вполне удовлетворяют, то - нет.
Это же очевидно! Зачем приписывать оппоненту заведомо абсурдную точку зрения?
Хотите сэкономить чужое время - пишите полезные патчи и присылайте их авторам
Патч - это что? Я этот термин воспринимаю как "заплатка" - обход обнаруженной ошибки вместо ее исправления.
Offline
#18 2010-05-22 20:37:48
- Zkir
- Member
- From: Хрустальная Москва
- Registered: 2009-02-21
- Posts: 6,110
Re: Препроцессор osm-файлов
andriano, в самом деле, если вы хотите нам помочь, а не учить нас жить, запилите препроцессор, который будет заменять в osm файле amenity=parking+pivate=yes на amenity=private_parking. Причем чтобы в конфиге можно было задать что на что заменять и остаются ли исходные теги или удаляются, и какие именно (например так:
amenity=parking+private=yes --> amenity=private_parking+private=yes)
Я такой препроцессор вставлю в процесс для Гис Руссы (и Ситигида, когда он созреет).
Last edited by Zkir (2010-05-22 20:40:11)
Истинные слова не не приятны, приятные слова не истинны.
True words are unpleasant; pleasant words are untrue.
Offline
#19 2010-05-22 20:48:16
- andriano
- Member
- Registered: 2009-06-15
- Posts: 1,667
Re: Препроцессор osm-файлов
Как этот препроцессор предполагается использовать и для чего?
Честно говоря, умножение сущностей (добавление новых тегов, которые не увеличивают количество информации в файле, но увеличивают его объем) считаю делом вредным.
Правда, если результат обработку не будет выкладываться в открытый доступ, а лишь использоваться в качестве этапа конвертации - другое дело.
Какие предложения по набору поддерживаемых функций и формату конфига?
Offline
#20 2010-05-22 21:33:49
- Zkir
- Member
- From: Хрустальная Москва
- Registered: 2009-02-21
- Posts: 6,110
Re: Препроцессор osm-файлов
andriano, mp - в открытом доступе - зло, потому что под каждую программу все равно нужен свой конфиг.
Использовать предполагается в процессе конвертации osm в rus и dcm для имитации функции, отсутсвующей в osm2mp - обработки нескольких тегов за раз, путем замены одних тегов на другие. Это всех проблем не решит, но пресловутую проблему с частными парковками снимет.
формат конфига такой:
на каждой строке:
список тегов осм-объекте в исходном файле (через плюсик или запятую) -->список тегов-на том же объекте в конечном файле
заменяются только теги которые указаны в левой части правила. если у объекта есть другие теги, они переносятся в конечный файл без изменений.
Истинные слова не не приятны, приятные слова не истинны.
True words are unpleasant; pleasant words are untrue.
Offline
#21 2010-05-23 07:16:36
- andriano
- Member
- Registered: 2009-06-15
- Posts: 1,667
Re: Препроцессор osm-файлов
andriano, mp - в открытом доступе - зло, потому что под каждую программу все равно нужен свой конфиг.
Ничего подобного.
С одной стороны:
МР - контейнер для некоторой ОБЪЕКТИВНОЙ информации, которую "каждая программа" может либо использовать, либо - нет. Например, PPSMapEdit не требует для себя какого-либо "своего конфига".
С другой стороны:
МР - формат промежуточный, т.е. непригодный для непосредственного использования, поэтому особенности конкретных программ (работающих с уникальными форматами данных) должны нивелироваться конвертерами данных для них из МР.
Использовать предполагается в процессе конвертации osm в rus и dcm для имитации функции, отсутсвующей в osm2mp - обработки нескольких тегов за раз, путем замены одних тегов на другие. Это всех проблем не решит, но пресловутую проблему с частными парковками снимет.
Т.е. нужен инструмент способный анализировать содержимое объекта типа node, way или relation целиком и вносить в него соответствующие коррективы. Без анализа структуры дочерних элементов. (т.е. в relation не анализируются теги дочерних way или node)
Я правильно понимаю?
формат конфига такой:
на каждой строке:
список тегов осм-объекте в исходном файле (через плюсик или запятую) -->список тегов-на том же объекте в конечном файле
заменяются только теги которые указаны в левой части правила. если у объекта есть другие теги, они переносятся в конечный файл без изменений.
Формат конфига мне не нравится.
1. Предлагается единственная логическая операция - конъюнкция, которая не составляет полную систему. Соответственно, невозможно сделать конструкцию типа: если присутствует такой-то тег, но при этом нет такого-то, то сделать то-то.
2. Отсутствует информация, к объектам какого из типов (node, way, relation) следует применять данное правило.
3. Теги некоторых типов (например, name) могут содержать произвольные строки. Нет никаких средств работы с ними. Например, мы не сможем организовать приоритет имен: при наличии name:ru берется оно, если нет - то name:en, если нет, то int_name, если нет, то name - и все это записывается в name.
4. Нечетко формулируется, ЧТО НАДО СДЕЛАТЬ, что приводит к неоднозначности, а также ошибкам, в результате которых программа может делать совсем не то, что хотел автор конфига.
Если устранить очевидные недостатки (ввести полную систему логических функций и возможность работы с произвольными строками), то однострочная система записи каждого "акта обработки" окажется слишком громоздкой. И составитель конфига может в ней напутать, да и мне лень разбирать строку с учетом приоритетов и скобок. Дело, конечно, не слишком сложное, но я им не занимался и у меня нет готовых инструментов.
Поэтому предлагаю придумать ассемблероподобный язык, в котором на каждой строке записывается одна элементарная операция или директива.
Предлагаю примерно следующее:
10 логических регистры, обозначаемые цифрами 0..9.
10 строковых регистров, обозначаемых %0..%9.
комментарии - все, что после точки с запятой.
директивы:
u - use - использовать только объекты определенного типа: node, way, relation. Одновременно эта директива указывает на начало нового фрагмента (программы) обработки и обнуляет все регистры. Примеры:
u:n
u:nw
u:wr
команды загрузки
s - set - устанавливают логическую переменную в состояние true при наличии указанного условия (пары key=val)
s0:amenity=parking
s1:name=%0 ; s1 устанавливается в true при наличии key="name" и любом значении val, при этом ОДНОВРЕМЕННО значение val заносится в строковую переменную %0
s2:name:%1=%2 ; s2:=true при наличии любого name: и заполняются две строки
s3: ; означает присваивание константы true
команды вычисления: всего 3 штуки - одна унарная и две бинарные, только с логическими регистрами:
c0:1^2 ; конъюнкция
c3:0+2 ; дизъюнкция
c3:n3 ; отрицание
команды выполнения: всего 2 штуки (удаление и добавление), но с вариациями синтаксиса:
d0:amenity=parking ; простая команда удаления при значении true регистра 0
a1:amenity=private_parking ; простая команда вставки при значении true регистра 1
d2:name=% ; команда удаления при любом val
d3:name:%=% ; команда удаления для группы key с одинаковым началом
a4:name=%1 ; вставка вместе с запомненной ранее строкой-константой
PS. Это то, что сходу пришло в голову. Возможно, я где-то ошибся или предложил что-то неразумное.
Last edited by andriano (2010-05-23 07:25:23)
Offline
#22 2010-05-23 08:42:01
- coolkaas
- Member
- From: RU, Penza
- Registered: 2009-05-28
- Posts: 2,391
Re: Препроцессор osm-файлов
Не хватает if'ов (команды cmp) и меток, по которым можно ветвиться в пределах фрагмента
Offline
#23 2010-05-23 09:47:14
- andriano
- Member
- Registered: 2009-06-15
- Posts: 1,667
Re: Препроцессор osm-файлов
Не хватает if'ов
(команды cmp) и меток, по которым можно ветвиться в пределах фрагмента
Во ВСЕ команды выполнения входят условия, т.е конструкцию вида
if condition_0 then begin
delete<a>;
add<b>;
delete<c>;
end else begin
delete<d>;
add<e>;
end;
записываем так:
c1:n0
d0:<a>
a0:<b>
d0:<c>
d1:<d>
a1:<e>
получается даже короче.
Last edited by andriano (2010-05-23 09:47:45)
Offline
#24 2010-05-23 10:32:23
- wildMan
- Member
- From: Minsk
- Registered: 2008-03-05
- Posts: 509
Re: Препроцессор osm-файлов
для примера формат осм фильтра (http://code.google.com/p/pyosm/source/b … ter.README) - http://code.google.com/p/pyosm/source/b … filter.xml
давно хотел в него replace добавить, но времени как небыло так и нет
--
OSMF BY Team
Offline
#25 2010-05-23 12:24:47
- Sergey Astakhov
- Member
- From: St.Petersburg, Russia
- Registered: 2009-11-13
- Posts: 5,787
Re: Препроцессор osm-файлов
Не хватает if'ов
(команды cmp) и меток, по которым можно ветвиться в пределах фрагмента
Может я чего не понимаю, но нафига изобретать новый язык?
Одно дело - простенький конфиг, и совсем другое - полноценный язык.
Преимущество простого конфига - он понятен и непрограммистам. Когда появляются всякие регистры и if-ы, то это уже только для программистов. Но тогда проще уж писать на Java (если это плугин для osmosis) или на одном из готовых скриптовых языков которые элементарно туда интегрируются...
Offline