Порассасывал немного Пермский http://gpsmapsearch.com/osm/mp/perm.err.htm, дальше Digy и AlRight сами разбирайтесь)) У вас там полно полигонов и по грани полигона идёт поверх дорога. Надо или в полигон втыкать дороги (но поверх не пускать). Или пускать поверх, по методу Ilis’а – area охватывает дорогу и она не идёт по ребру.
В общем, даёшь страничку Лёши, чистую от файликов -err-. (ковыряю по всем городам потихоньку, правлю явные ошибки). Все местные подключайтесь.
ps. просто страх, какие потлач выкрутасы творит… Дорога в две точки (соединяет две другие дороги) – проведена туда и обратно – пойди, найди её! )) объект один… Спасает только то, что точек 4 (если на это обратить внимание).
Потлатч-то да, умеет иногда подкозлить Иногда появляется кусок линии из одного сегмента, совпадающего с одним из сегментов длинной линии, а иногда в линии втыкает пару-тройку ссылок на одну и ту же точку. Но это всё-таки редко бывает
Ой сколько таких дворов было в Мск… И сколько сил было убито на распутывание этого клубка из пересекающих саму себ, двойных точек, наложения линий… Ох…
Есть еще один вопрос об 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 (если возможно, под ними должен остаться полигон того же типа, как сейчас происходит со школами)
Еще раз. Есть полигон “больница” (территория больницы) и внутри него здание “больница”.
Идеологически все правильно, так?
Тогда какой из объектов рисовать полигоном и для какого рисовать 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-ник:
ЗЫ. Правда, больницы-здания тут нарисованы отдельно точка-аменити, отдельно здание. Видимо, при разделении здания-больницы надо оставлять полигон-здание с адресом без аменити, но из него же делать точку аменити с именем. Вот как-то так
Ваще-то они не должны туда попадать, потому что сейчас точкой становятся только natural=water, а пожарные и дренажные никаким боком не natural.
И пока нет возможности отделять объекты, которым нужна безымянная точка (парковки) от объектов, которым она не нужна.
Идеологически неправильно. Получаются две больницы, хотя на самом деле она одна.
Имхо, amenity=hospital должен быть только один.
Что касается создания точек, могу предложить такой вариант: для объекта рисуется один полигон (того типа, у которого максимальный приоритет в конфигах), а точки создаются для всех возможных вариантов.
В приведённом выше примере на территории больницы (№ 1), есть роддом № 27 и поликлиника № 1 при ЦГКБ № 1, располагающиеся именно в зданиях на территории. Так что с этой точки зрения всё законно!
Есть еще одна идея (прошу прощения за активность) насчет городских улиц: добавить отдельный режим обработки роутинговых линий внутри города, что-нибудь типа “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