RU:Элементы

From OpenStreetMap Wiki
Jump to navigation Jump to search

Элементы являются основными компонентами концептуальной модели данных физического мира OpenStreetMap. Элементы бывают трех типов:

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

Всё вышеперечисленное может иметь один или несколько связанных тегов (которые описывают значение конкретного элемента).

Точка точка

Основная статья: RU:Точка

Точка представляет конкретную точку на поверхности земли, определяемую ее широтой и долготой согласно Всемирной геодезической системе 1984[1]. Каждая точка содержит, по меньшей мере, идентификационный номер и пару координат.

Точки могут использоваться для определения автономных точечных объектов. Например, может представлять скамейку в парке или колодец с водой.

Точки также используются для определения формы линии. При использовании в качестве вершин линий точки обычно не имеют тегов, хотя некоторые из них имеют. Например, highway=traffic_signals обозначает сигналы светофора на дороге, а power=tower представляет собой опору вдоль линии электропередачи.

Точка может быть включена в качестве члена отношения. Отношение также может указывать на роль элемента: то есть функцию точки в этом конкретном наборе связанных элементов данных.

Линия линия замкнутая линия полигон

Основная статья: RU:Линия

Линия — это упорядоченный список от 2 до 2000 точек, которые определяют ломаную. Линии используются для представления линейных объектов, таких как реки и дороги. линия

Лини также могут представлять границы "области" (сплошные многоугольники), например здания или леса. В этом случае первая и последняя точка линии будут совпадать. Это называется "замкнутой линией". замкнутая линия

Обратите внимание, что замкнутые линии иногда представляют собой петли, как кольцевые развязки на автомагистралях, а не сплошные участки. Теги линии должны быть проверены, чтобы определить, что это такое. Для элементов с тегами, которые могут быть как линейным замкнутая линия, так и областным представлениями полигон реального объекта (например, man_made=pier), используется тег area=yes или area=no, чтобы избежать двусмысленности или неправильного толкования. Смотрите также: Различия между линейным и площадным представлением объектов.

Область с отверстиями или граница которой более 2000 точек не может быть представлена одной линией. Вместо линии для такого объекта потребуется более сложная структура данных — отношение "мультиполигон".

Отношения отношение

Основная статья: RU:Отношения

Отношения — это многоцелевая структура данных, которая документирует взаимосвязь между двумя или более данными элементов (точек, линий и/или отношений). Примеры:

  • Отношение—маршрут, в котором перечислены дороги, образующие главную (пронумерованную) линию маршрута, например велосипедный маршрут или автобусный маршрут.
  • Ограничение поворота, которое говорит, что вы не можете повернуть с одной линии на другую.
  • Мультиполигон, который описывает область (границей которой является "внешняя линия") с отверстиями ("внутренние линии").

Отношения могут иметь разные значения. Значение отношения определяется его тегами. Как правило, отношение будет иметь тег "type". Остальные теги отношения должны интерпретироваться в учетом тега type.

Отношение — это, прежде всего, упорядоченный список точек, линий или других отношений. Такие объекты известны как члены отношения.

Каждый элемент необязательно может иметь роль внутри отношения. Например, ограничение поворота будет содержать участников с ролями "from" и "to", описывающих конкретный поворот, который запрещен.

Один элемент, например конкретная линия, может появляться в отношении несколько раз.

Тег тег

Основная статья: RU:Теги

Все типы элементов данных (точки, линии и отношения), а также наборы изменений могут иметь теги. Теги описывают значение конкретного элемента, к которому они прикреплены.

Тег состоит из двух текстовых полей свободного формата: "ключ" и "значение". Каждая из них представляет собой строки в Юникоде длиной до 255 символов. Например, highway=residential определяет линию как дорогу, основная функция которой заключается в предоставлении доступа к домам людей. Элемент не может иметь 2 тега с одинаковым "ключом", и "ключ" должен быть уникальным. Например, вы не можете иметь элемент, помеченный одновременно amenity=restaurant и amenity=bar.

Фиксированного словаря тегов не существует, но в этой Вики задокументировано множество соглашений (начиная со страницы Объекты карты). Частоту использования тегов можно измерить с помощью приложения Taginfo. Если существует более одного способа пометить некоторый объект, вероятно, лучше всего использовать наиболее распространенный способ.

Не все элементы имеют теги. Точки часто не помечают, если они являются частью линий. И линия, и точка могут быть не помечены, если они являются членами отношения.

Общие атрибуты

В базе данных OSM мы храним атрибуты для точек, линий и отношений. Вашему приложению может не понадобиться использовать их все; некоторые другие сторонние приложения, созданные на основе данных OSM, могут тоже воспроизводить их не все.

Название Значение Описание
id целое (64-bit) Используется для идентификации элемента. Типы элементов имеют свое собственное пространство идентификаторов, поэтому может существовать точка с id=100 и линия с id=100, которые вряд ли будут связаны или географически близки друг к другу.
Положительные (>0) значения используются для всех существующих элементов (и останутся присвоенными при их изменении или удалении); отрицательные значения (<0) зарезервированы (их область действия ограничена текущим набором изменений и никогда не сохраняется в базе данных) и используются только при отправке данных в базу данных OSM для идентификации новых объектов для создания и указания ссылки на них в других созданных или измененных объектах (сервер заменит эти временные идентификаторы, отправленные приложением после редактирования, назначив фактический положительный идентификатор для каждого созданного объекта, и вернет сопоставление использованных отрицательных идентификаторов с назначенными им положительными идентификаторами).
user строка символов Отображаемое имя пользователя, который последним изменил объект (только информативное и может быть пустым). Пользователь может изменить свое отображаемое имя в любое время (существующие элементы будут отражать новое имя пользователя без необходимости изменения версии).
uid целое Числовой идентификатор пользователя, который в последний раз изменял объект. Идентификатор пользователя никогда не меняется.
timestamp Стандартные форматы даты и времени W3C. Время последнего изменения (например "2016-12-31T23:59:59.999Z").
visible "true" или "false" Независимо от того, удален объект в базе данных или нет, если "visible=false", то объект должен быть возвращен только вызовами истории.
version целое Отредактированная версия объекта. Вновь созданные объекты начинаются с версии 1, и значение увеличивается сервером, когда клиент загружает новую версию объекта. Сервер отклонит новую версию объекта, если версия, отправленная клиентом, не соответствует текущей версии объекта в базе данных.
changeset целое Номер набора изменений, в котором объект был создан или обновлен (поддержка 64-bit рекомендуется в приложениях для совместимости с долгосрочной эволюцией базы данных OSM, но приложения, которые запрашивают только данные без обновления могут игнорировать этот информационный атрибут).

Конечно, кроме того, мы храним теги, а также полную историю редактирования каждого элемента.

Устаревшие элементы

Исторически существовал другой тип элемента. Это:

  • Сегмент (соединяет две точки и прокладывает линию).

Предостережение и примечания по номенклатуре XML

Основная статья: OSM XML

Эта документация предназначена для пользователей высокоуровневых инструментов OSM, таких как редакторы, она не служит стандартом данных низкого уровня. Пользователям, которые ищут стандарт низкого уровня, потребуется выполнить некоторую интерпретацию документации, чтобы получить четкое представление, и они должны быть осведомлены об отклонениях от стандарта XML.

Элементы

Набор элементов в OSM XML, которые упоминаются как элементы в документации, являются подмножеством фактических XML-элементов, найденных в данных. Т.е. термин элемент в XML и термин элемент в OSM XML не являются синонимами.

Элементы в данных OSM определяются как любой из node, way и relation. XML-элементы tag, nd и member не упоминаются как элементы в OSM XML, но они фактически и являются XML-элементами.

Это никоим образом не делает данные недействительными, это просто семантическая путаница, которая проникла в документацию и считается слишком незначительной для исправления.

Идентификаторы

Пользователи инструментов XML также должны быть предупреждены о том, что OSM XML не является допустимым XML. В допустимом XML идентификаторы элементов должны быть уникальными, однако идентификаторы в данных OSM XML не уникальны. Поэтому бессмысленен Document.getElementById() с данными OSM XML.