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.***

#1 2011-11-20 15:23:20

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

Особенности обработки отношений для визуализатора

Возникла следующая проблема - после обработки XML файла получаются данные, которые при отображении выглядят не так, как бы хотелось. В частности, пока заметны 2 серьезных недостатка:
1. Некоторые нужные вещи не рисуются. Например, вместо границ областей или государств присутствуют только отдельные их куски. Предположительная причина: один way описывает несколько разных объектов, некоторые из которых - исключительно в отношениях (сам way не имеет соответствующих тегов).
2. Предпринятый алгоритм восстановления имен у node и way, не имеющих таковых, при котором имя заимствуется у родительского отношения, приводит к нежелательным эффектам, например, вместо номера дома отображается название улицы.

Для way и node применена общая классификация типов, определяемая в основном парой key=value, например, highway=secondary.
Основная схема алгоритма:
1. Анализируются отношения, при этом:
- определяется тип самого отношения (street, campus...),
- определяется тип отношения, вычисляемый по тегам аналогично node/way,
- для отношений составляются списки входящих узлов,
- для отношений составляются списки входящих путей,
- для узлов, входящих в отношения, составляются списки содержащих их отношений,
- для путей, входящих в отношения, составляются списки содержащих их отношений,
2. Анализируются пути, при этом:
- исходя из тегов, определяется тип пути,
- если сочетание тегов таково, что у отношение удовлетворяет нескольким типам, то, за исключением некоторой таблицы сочетаемости, путь дублируется как пути разных типов, проходящие по одним и тем же узлам,
- если тип пути выявить не удалось, и он при этом входит в отношение, то на путь переносится тип (второй - в смысле node/way) отношения,
- если у пути нет имени, и он при этом входит в отношение, ему приписывается имя отношения,
3. Анализируются узлы, при этом:
- узлы с нераспознанным типом отбрасываются.
4. Если имеется объект типа building, не имеющий имени, но имеющий номер дома, в качестве имени подставляется номер дома. Если нет ни имени, ни номера дома, итакой объект (здание) отбрасывается.

При этом отношения используются ТОЛЬКО для восстановления типов и имен объектов, для которых таковые не удалось установить по собственным тегам. При этом большая часть результата анализа отношений не используется.

Вот и интересно, по какой логике нужно анализировать OSM-файл, чтобы с одной стороны не пропадала информация (например, граница, совпадающая с рекой), а с другой - не переносилась из отношений ненужная (например, название улицы не переносилось в название принадлежащего ей дома).

Offline

Board footer

Powered by FluxBB