OpenStreetMap Forum

The Free Wiki World Map

You are not logged in.

#1 2010-05-21 19:49:12

andriano
Member
Registered: 2009-06-15
Posts: 1,667

Re: Препроцессор osm-файлов

Выделено из топика Конвертер OSM -> MP

Ezhick wrote:

Для вас абсурд - вы не юзаете эту фичу, кому-то надо - тот будет юзать. В чем проблема???

Так это не фича - это бага!
*.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,092

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-файлов

andriano wrote:
Ezhick wrote:

Для вас абсурд - вы не юзаете эту фичу, кому-то надо - тот будет юзать. В чем проблема???

Так это не фича - это бага!
*.MP в качестве промежуточного формата имеет смысл ТОЛЬКО для уменьшения объема данных.

Повторяю - если вам не надо и вы не можете понять зачем - не юзайте и не мучайте голову попытками понять. Если двум людям, юзающим мп для конвертации в карты под разные программы эта ФИЧА нужна, то не надо называть ее багой, ок?

Offline

#6 2010-05-21 20:34:10

andriano
Member
Registered: 2009-06-15
Posts: 1,667

Re: Препроцессор osm-файлов

Zkir wrote:

смысл задачи, для которой предлагается такое решение.

Бывают способы решения, сами по себе являющиеся негодными. Вне зависимости от задачи.
Путь тупиковый.
Тут только два варианта:
1. Я (или кто другой) сумею убедить Вас в бесперспективности выбранного способа.
2. Вы пытаетесь его реализовать и убеждаетесь в этом самостоятельно. Но несколько позже, и потратив значительное количество сил и времени.

Offline

#7 2010-05-21 20:38:26

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

Re: Препроцессор osm-файлов

Ezhick wrote:

Леш, как можно ПРЕпроцессором сохранить в мп информаци. которую твой конвертер выкинет???? Мне, например, нужно оставить на домах кладр-код, как я могу это сделать ПРЕпроцессором???

Я говорил про вопрос Zkir-а - "отсеять к едрене фене  частные парковки".

А кладр-код на домах - это зло.

Offline

#8 2010-05-21 20:39:02

Zkir
Member
From: Хрустальная Москва
Registered: 2009-02-21
Posts: 6,092

Re: Препроцессор osm-файлов

Леш, значит я в самом деле плохо объясняю. sad

Задача - организовать присвоение 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-файлов

liosha wrote:

А кладр-код на домах - это зло.

Это был просто пример.

Offline

#11 2010-05-21 20:45:34

andriano
Member
Registered: 2009-06-15
Posts: 1,667

Препроцессор osm-файлов

Ezhick wrote:

Повторяю - если вам не надо и вы не можете понять зачем - не юзайте и не мучайте голову попытками понять. Если двум людям, юзающим мп для конвертации в карты под разные программы эта ФИЧА нужна, то не надо называть ее багой, ок?

Да без проблем.
Я из чисто гуманистических побуждений пытаюсь предостеречь этих двух людей от ошибки.
Ну и заодно десятки и сотни людей, регулярно качающих *.MP для собственных нужд, от неразумной траты трафика.
Не следует плодить лишних сущностей: есть OSM и есть MP. Они разные. И не нужно пытаться создать новую сущность, сочетающую в себе свойства их обеих: мы получим не сумму достоинств, а сумму недостатков.

Offline

#12 2010-05-21 20:59:09

Zkir
Member
From: Хрустальная Москва
Registered: 2009-02-21
Posts: 6,092

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-файлов

andriano wrote:

Ну и заодно десятки и сотни людей, регулярно качающих *.MP для собственных нужд, от неразумной траты трафика.

Блииииииииннннн... Кто чего качает? Какой трафик???? Я конверчу из осм в мп У СЕБЯ НА КОМПЕ. Какой нафиг трафик????

Offline

#14 2010-05-22 15:49:23

andriano
Member
Registered: 2009-06-15
Posts: 1,667

Re: Препроцессор osm-файлов

Ezhick wrote:

Блииииииииннннн... Кто чего качает? Какой трафик???? Я конверчу из осм в мп У СЕБЯ НА КОМПЕ. Какой нафиг трафик????

Тогда прошу прощения. Недопонял. Я считал, что так будет конвертиться MP, выкладываемый на сайте для всеобщего скачивания, а не для чьего-то внутреннего индивидуального использования.

Так, прощения попросил. Но по прежнему продолжаю рекомендовать - если не хватает данных в MP, переходить на OSM, а не изобретать костыли.  Просто чисто по человечески: мне жалко чужого времени, потраченного зря. Особенно времени людей, которые делают что-то полезное для других.

Offline

#15 2010-05-22 16:26:12

Komяpa
Member
From: Minsk
Registered: 2009-04-14
Posts: 1,321
Website

Re: Препроцессор osm-файлов

andriano wrote:

Но по прежнему продолжаю рекомендовать - если не хватает данных в MP, переходить на OSM, а не изобретать костыли.  Просто чисто по человечески: мне жалко чужого времени, потраченного зря. Особенно времени людей, которые делают что-то полезное для других.

andriano, если вы так хотите пересчитывать чужое время, подумайте, сколько займет создание конвертеров вида osm2navitel, osm2rus, osm2{anotherpogram}, и стоит ли им заниматься при существовании osm2mp и mp2{нужный_формат}.
Хотите сэкономить чужое время - пишите полезные патчи и присылайте их авторам smile


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-файлов

Komяpa wrote:

andriano, если вы так хотите пересчитывать чужое время, подумайте, сколько займет создание конвертеров вида osm2navitel, osm2rus, osm2{anotherpogram}, и стоит ли им заниматься при существовании osm2mp и mp2{нужный_формат}.
Хотите сэкономить чужое время - пишите полезные патчи и присылайте их авторам smile

+100500!!!

Offline

#17 2010-05-22 20:37:40

andriano
Member
Registered: 2009-06-15
Posts: 1,667

Re: Препроцессор osm-файлов

Komяpa wrote:

...и стоит ли им заниматься при существовании osm2mp и mp2{нужный_формат}.

Если существующие osm2mp и mp2{нужный_формат} вполне удовлетворяют, то - нет.
Это же очевидно! Зачем приписывать оппоненту заведомо абсурдную точку зрения?

Хотите сэкономить чужое время - пишите полезные патчи и присылайте их авторам smile

Патч - это что? Я этот термин воспринимаю как "заплатка" - обход обнаруженной ошибки вместо ее исправления.

Offline

#18 2010-05-22 20:37:48

Zkir
Member
From: Хрустальная Москва
Registered: 2009-02-21
Posts: 6,092

Re: Препроцессор osm-файлов

andriano, в самом деле, если вы хотите нам помочь, а не учить нас жить, wink запилите препроцессор, который будет заменять в 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,092

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-файлов

Zkir wrote:

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,297

Re: Препроцессор osm-файлов

Не хватает if'ов smile (команды cmp) и меток, по которым можно ветвиться в пределах фрагмента smile

Offline

#23 2010-05-23 09:47:14

andriano
Member
Registered: 2009-06-15
Posts: 1,667

Re: Препроцессор osm-файлов

coolkaas wrote:

Не хватает if'ов smile (команды cmp) и меток, по которым можно ветвиться в пределах фрагмента smile

Во ВСЕ команды выполнения входят условия, т.е конструкцию вида

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,601

Re: Препроцессор osm-файлов

coolkaas wrote:

Не хватает if'ов smile (команды cmp) и меток, по которым можно ветвиться в пределах фрагмента smile

Может я чего не понимаю, но нафига изобретать новый язык?
Одно дело - простенький конфиг, и совсем другое - полноценный язык.
Преимущество простого конфига - он понятен и непрограммистам. Когда появляются всякие регистры и if-ы, то это уже только для программистов. Но тогда проще уж писать на Java (если это плугин для osmosis) или на одном из готовых скриптовых языков которые элементарно туда интегрируются...

Offline

Board footer

Powered by FluxBB