User:Vovanium/Идея
Идея
Отношение — основной элемент карты
Почему?
Сейчас с объектами на местности могут идентифицироваться точки (узлы), линии (полигоны). Это простой и понятный способ, но имеет серьёзные недостатки:
- Одной геометрической фигуре может соответствовать только один объект.
- За исключением, конечно, некоторых случаев, когда для обозначения объектов используются различные ключи. Проблема возникает тогда, когда объекты или их границы частично или полностью совпадают, например, границы различных естественных форм местности (лес—степь и т. п.) или форм землепользования. В этом случае часто приходится идти на ухищрения, например, рисовать линии по общим точкам (что усложняет редактирование), или с небольшим зазором (что неверно, т. к. пустого пространства на самом деле нет).
- И наоборот, одному объекту может соответствовать только одна фигура.
- Это создаёт неудобства во многих случаях: в случае, если объект имеет пустоты внутри, состоит из нескольких несвязных частей, или просто очень велик (из-за того, что в OSM существует ограничение на длину линии); в случае, когда части неравнозначны.
- При делении объекта информация дублируется. Например, улицы часто состоят из нескольких сегментов линий, при этом каждый сегмент имеет свою копию названия, статуса, и т. п. Это создаёт трудности при работе с ними.
- Для обхода этих проблем созданы отношения, идею которых и следует развить.
Что же делать?
Развитие идеи отношений в том, что отношение оказывается универсальным средством обозначения любых объектов, а геометрические фигуры — узлы и линии становятся их элементами. Всё, что до сих пор обозначалось тегами линий и узлов может точно также выразить тегами отношений. С одной стороны это выглядит усложнением, но на самом деле — упрощение: при анализе данных требуется работать только с одним типом (отношениями), а не как минимум тремя. А узлы и линии уже представляют лишь информацию о географическом положении.
Как?
1. Правило соответствия
Узел или линия с набором тегов приравнивается отношению с идентичными тегами и единственным безымянным членом, являющимся данным узлом или линией.
Это даёт нам работать над объектом одинаково, обозначенным одним узлом, линией или отношением multipolygon.
С другой стороны это требует несколько иного подхода к данным:
- При делении линии с тегами на части требуется создавать отношение и переносить туда все теги, делая части членами отношения, вместо дублирования тегов в частях, как это делается сейчас во многих редакторах.
- Позволять объединение только линий, обладающих одинаковым набором тегов и ролей.
- При этом объединение возможно автоматическое, объединённая линия и разрезанная должны быть эквивалентны.
2. Развитие системы отношений
Реализации в виде отношений требуют многие виды объектов, вот лишь некоторые из них:
- Дороги и улицы: сложные объекты, в них можно выделить множество логически связанных элементов: пути маршрутизации, границы, полосы, разделители и т. д.
- Мосты.
- Остановки, станции.
- Здания.
Пример нового типа отношений: полоска
Полоска — весьма характерный и распространённый вид объекта: к ним относятся дороги, реки, мосты и многое другое. Теги:
- type = strip — тип.
- width = * ширина.
Роли:
- side — боковая граница
- left side — левая граница и
- right side — правая граница (если различаются)
- end — край (начало и конец).
- front end — передний
- back end — задний (если различаются)
- midline — средняя линия: генерализация полосы в тонкую линию, если отсутствует, интерполируется из сторон.
3. Развитие геометрии
Линия приравнивается отношению с тегом shape=way, в котором вершины — безымянные члены.
Вводятся другие виды геометрических фигур:
- окружность,
- дуга,
- сплайн,
и т. п. А также информация о построениях.