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

На Владимирской области (которая на gis-lab), текущая версия конвертера выдаёт гроздь вот таких сообщений:

На других областях такого не наблюдается.
Посмотрите пожалуйста.

Осмозиз, блин!
Попробую исправить.

Порассасывал немного Пермский http://gpsmapsearch.com/osm/mp/perm.err.htm, дальше Digy и AlRight сами разбирайтесь)) У вас там полно полигонов и по грани полигона идёт поверх дорога. Надо или в полигон втыкать дороги (но поверх не пускать). Или пускать поверх, по методу Ilis’а – area охватывает дорогу и она не идёт по ребру.
В общем, даёшь страничку Лёши, чистую от файликов -err-. (ковыряю по всем городам потихоньку, правлю явные ошибки). Все местные подключайтесь.

ps. просто страх, какие потлач выкрутасы творит… Дорога в две точки (соединяет две другие дороги) – проведена туда и обратно – пойди, найди её! )) объект один… Спасает только то, что точек 4 (если на это обратить внимание).

Потлатч-то да, умеет иногда подкозлить :slight_smile: Иногда появляется кусок линии из одного сегмента, совпадающего с одним из сегментов длинной линии, а иногда в линии втыкает пару-тройку ссылок на одну и ту же точку. Но это всё-таки редко бывает :slight_smile:

Я в Краснодаре обнурижил квартал, в котором ВСЕ дворовые проезды нарисованы одной линией. :)))

Ой сколько таких дворов было в Мск… И сколько сил было убито на распутывание этого клубка из пересекающих саму себ, двойных точек, наложения линий… Ох…

счас осталось обнаружить того, кто так рисует. и провести воспитательную беседу

скачал с http://gpsmapsearch.com/osm/mp/ карты Уфы и Тюмени - чтобы проверить на отсутствие навителовских ошибок

в errors-navitel.log ошибок не оказалось, зато они оказались в errors.log (хотя на сайте это не отражено)

надо бы пофиксить… (всмысле не сами ошибки - их я уже исправил; а отображение инфы на сайте)

Есть еще один вопрос об amenity.
Этот тег может применяться в разных контекстах - территория или здание.
Например, amenity=hospital без building=yes - это территория больницы, например: http://www.openstreetmap.org/browse/way/37976940
На карте он должен отображаться именно как “территория больницы” (Hospital (0xb, polygon))
Набор amenity=hospital + building=yes - это уже здание больницы, его нужно отображать как “здание” (Building/Man-made area (0x13, polygon)).
То же самое относится к магазинам, университетам и т.п.
Вопрос - можно ли правильно конвертировать amenity, не применяя трюк с barrier=fence?
И еще, к какому из объектов идеологически правильно добавлять точку POI?

Идеологически правильно в ОСМ ставить тег аменити на всё что угодно, а на выходе конвертера идеологически правильно иметь все аменити в виде точки POI :slight_smile: (если возможно, под ними должен остаться полигон того же типа, как сейчас происходит со школами)

Еще раз. Есть полигон “больница” (территория больницы) и внутри него здание “больница”.
Идеологически все правильно, так?
Тогда какой из объектов рисовать полигоном и для какого рисовать POI?
Правильно ли я понимаю, что сейчас эта задача не решаема конвертером?

Обнаружил затруднение.

  ---|   OSM -> MP converter  0.80b   (c) 2008,2009  liosha, xliosha@gmail.com

Processing file temp_del.osm

Loading nodes...          1436660 loaded
Loading relations...      330 multipolygons
                          22 turn restrictions
                          0 destination signs
Loading necessary ways... 1857 loaded
Processing multipolygons  Use of uninitialized value $nrpoints in numeric eq (==
) at c:/strawberry/perl/site/lib/Math/Polygon/Tree.pm line 48, <IN> line 1089856
6.
Use of uninitialized value $nrpoints in numeric gt (>) at c:/strawberry/perl/sit
e/lib/Math/Polygon/Tree.pm line 59, <IN> line 10898566.
Use of uninitialized value in numeric lt (<) at c:/strawberry/perl/site/lib/Math
/Polygon/Tree.pm line 108, <IN> line 10898566.
Use of uninitialized value in numeric gt (>) at c:/strawberry/perl/site/lib/Math
/Polygon/Tree.pm line 108, <IN> line 10898566.
Use of uninitialized value $nrpoints in numeric eq (==) at c:/strawberry/perl/si
te/lib/Math/Polygon/Tree.pm line 48, <IN> line 10898566.

И далее такого много по несколько штук с одним номером около “ line”. Но конвертация доходит до конца.
Пробовал osm2mp r156 и r157 - одинаково. Входной файл - netherlands_63240001.osm (1я часть netherland.osm от 06.12.2009 с geofabrik, порубленный splitter-ом с настройками по умолчанию) - можно скачать с http://www.datafilehost.com/download-37795ba7.html (15 мегов в архиве, 220 мегов чистого). 10 миллионов строк в нём нету, только 7 миллионов.
Вызываю через такой bat-ник:

c:\strawberry\perl\bin\perl.exe osmsort.pl %1 > temp_del.osm
c:\strawberry\perl\bin\perl.exe osm2mp.pl --nametaglist int_name,name:en,name,name:ru,ref,int_ref,addr:housenumber,operator --header header_russa.tpl --translit temp_del.osm > %1.mp

UPD: Ага, походу, chilin выше писал про это же. :slight_smile: Можно грохнуть этот пост, если проблема в одном и том же.

Вот такой случай: http://www.openstreetmap.org/?lat=56.824489&lon=60.629313&zoom=18&layers=B000FTF
В Мапнике нарисовано нормально, в МП по действующим правилом тоже конвертнулось хорошо.

ЗЫ. Правда, больницы-здания тут нарисованы отдельно точка-аменити, отдельно здание. Видимо, при разделении здания-больницы надо оставлять полигон-здание с адресом без аменити, но из него же делать точку аменити с именем. Вот как-то так :slight_smile:

Есть предложение не дублировать точкой безымянные водоёмы. Туда попадают всякие очистные, пожарные водоёмы и всякая другая фигня, по которой поиск не нужен абсолютно. Например, дренажные водоёмы http://www.openstreetmap.org/?lat=56.72057&lon=60.53323&zoom=15&layers=B000FTF

Ваще-то они не должны туда попадать, потому что сейчас точкой становятся только natural=water, а пожарные и дренажные никаким боком не natural.
И пока нет возможности отделять объекты, которым нужна безымянная точка (парковки) от объектов, которым она не нужна.

Идеологически неправильно. Получаются две больницы, хотя на самом деле она одна.
Имхо, amenity=hospital должен быть только один.

Что касается создания точек, могу предложить такой вариант: для объекта рисуется один полигон (того типа, у которого максимальный приоритет в конфигах), а точки создаются для всех возможных вариантов.

Да, так должно быть нормально, если повысить приоритет для building=yes.

В приведённом выше примере на территории больницы (№ 1), есть роддом № 27 и поликлиника № 1 при ЦГКБ № 1, располагающиеся именно в зданиях на территории. Так что с этой точки зрения всё законно! :slight_smile:

Ага, тут наша недоработка, получается, исправим. Но с другой стороны, точками сейчас не дублируются большие именованные пруды! (landuse=reservoir).

Надо как-то плавно переходить от типов объектов к тегам. Точнее, к наборам тегов…

Сделал. Плюс добавил заплатку, что если в конфиге тип полигона обозначить как undef, то сам полигон отображаться не будет, а будет только POI.

Ворнинг про uninitialized value вроде тоже вылечил.

liosha, спасибо!

Есть еще одна идея (прошу прощения за активность) насчет городских улиц: добавить отдельный режим обработки роутинговых линий внутри города, что-нибудь типа “c” (аналог “r”, только внутри городского полигона).

Алгоритм примерно такой:
если линия входит в полигон города и существует строка конфигурации с типом “c”, то выводить линию типа “c”, иначе типа “r”

Конфигурация будет выглядеть вот так:
highway primary r 0x02,2 0 3 4,3,0,0,0,0,0,0,0,0,0,0
highway primary c 0x04,2 0 3 4,3,0,0,0,0,0,0,0,0,0,0

highway secondary r 0x03,2 0 2 3,3,0,0,0,0,0,0,0,0,0,0
highway secondary c 0x05,2 0 2 3,2,0,0,0,0,0,0,0,0,0,0