RU:Элементы данных

From OpenStreetMap Wiki
(Redirected from RU:Data Primitives)
Jump to navigation Jump to search

Элементы данных это класс объектов, которые могут храниться с помощью API на сервере. Ряд различных логических вещи (например, точки интереса — POI, улицы, трамваи, автобусные остановки и т.д.) определяются из этих примитивов путем указания соответствующих объектов карты.

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

имя значение описание
user строка Отображаемое имя пользователя, который совершал последнее изменение объекта. Пользователь может изменить своё отображаемое имя
uid целое числовой идентификатор пользователя, который совершил последнее изменение объекта. Идентификатор пользователя — число постоянное.
timestamp Форматы даты и времени W3C время последнего изменения
visible "true"
"false"
является ли объект удаленным в базе данных. Если visible="false", то объект должен быть возвращен вызовом истории изменений.
version целое Версия редакции объекта. Версия вновь созданных объектов равна 1, это значение увеличивается на сервере, когда клиент добавляет новую версию объекта. Сервер будет отклонять новую версию объекта, если версия присланная клиентом не соответствует текущей версии объекта в базе данных.
changeset целое Пакет правок (история) в котором указаны создание и изменения объектов.

Точки, линии и отношения

Элементы данных, такие как точка, линия или отношение.

Nodes-ways-closedways.PNG

Точка node

</noinclude>

Основная статья: RU:Node


Osm element node.svg

Точка — базовый элемент в структуре данных OSM. Точка имеет параметры lat (latitude - широта), lon (longitude - долгота).
Можно включить дополнительный, третий, параметр высоты ele (сокращение от elevation). Точка может быть определена, как часть слоя layer=* или уровня level=*, в тех местах, где пути могут пересекаться на разных уровнях, например под мостом.

Возможности Точек

Точки используются для того, чтобы определить way (линию), однако точка может являться и самостоятельным элементом карты, и использоваться для обозначения отдельного ни с чем не связанного объекта (например, телефонной будки, бара, для указания координат, к которым привязано название населённого пункта или любого интересного места (POI - point of interest). Отдельные точки (т.е. не входящие в состав линий или областей) всегда должны иметь хотя бы одно свойство, например amenity=parking.

Точки на Линии

Смотри также: way (Линия)

Точки, входящие в состав линии, должны иметь хотя бы один tags (тег), чтобы определить её назначение. Точки могут иметь несколько тегов и/или быть частью relation (Отношения). Например, телефонная будка может просто иметь тег amenity=telephone, или может иметь тег operator=*.

имя значение пояснение
id целое (integer)
>=1
У точек id уникален только среди точек. (Линия может иметь такое же id как и точка.) Редакторы, как правило, сохраняют их как отрицательное для обозначения идентификаторов, которые не были сохранены на сервере. У точки идентификатор на сервере является постоянным; это означает, что присваиваемый идентификатор существующей точки останется неизменным, когда данные добавляются или исправлены. Удаленный ID точки не должен быть повторно использован, даже если точка восстановлена.
lat вещественное(Float)
>−90.0 и <90.0
7 знаков после запятой
Координата широты.
Значение между
Некоторые приложения не могут принимать широтах выше / ниже ± 85.
lon Float
>−180 and <180
7 знаков после запятой
Координата долготы.
теги Множество пар тегов (ключ/значение) с уникальным ключом Смотри Особенности тегирования - руководящие принципы для картографирования.


Пример XML

<node id="25496583" lat="51.5173639" lon="-0.140043" version="1" changeset="203496" user="80n" uid="1238" visible="true" timestamp="2007-01-28T11:40:26Z">
    <tag k="created_by" v="JOSM"/>
</node>

Особые случаи

broom

Help (89606) - The Noun Project.svg

Линия way

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

Линия — это упорядоченная взаимосвязь не менее 2-х и не более 2000 (API v0.6) точек, которые описывают линейные объекты, такие как улицы, тропинки, железная дорога, река, забор, линии электропередачи, контур района или строительства. Одина линия тегируется определёнными свойствами, например, приоритет (автомагистрали, федеральной трассы, …), качество поверхности, скорость и т. д. Линии должны быть разделены на более короткие участки если существуют различные свойства, например, если улица имеет односторонний участок, то он должен быть отдельной линией, даже если они имеют одинаковое имя. (Если вы достигнете лимита точек просто разделите линию и объедените все участки в отношение по мере необходимости. Точки могут быть членами нескольких линий.)

Замкнутая линия closed way (полигон area)

Замкнутая линия — это линия, в которой первая и последняя точка идентичны; линии ограничивающие области. Полигон это не отдельные примитивы данных, а просто закрытые линии, которые помечены для отображения как области. Таким образом, не все закрыты линии могут быть показаны как полигоны!

Ключи, часто используемые для описания области: area=yes, landuse=* или landuse=* (только если линия состоит в отношении типа мультиполигон). См. объекты карты, чтобы определить случаи использования полигонов. (по традиции вы должны добавить area=yes, чтобы избежать ошибок).

имя значение пояснение
id: целое положительное Заметим, что идентификаторы не являются уникальными, линия может иметь такой же идентификатор, как точка. Редакторы, как правило, сохраняют их отрицательным числом для обозначения идентификаторов, которые не были сохранены на сервере.
nodes список Список всех точек идентификаторы которых составляют линию.
tags множество Множество пар тегов (ключ/значение) с уникальным ключом. См. объекты карты для руководству по тегированию

Пример XML

Вот обычные улицы с тегом highway=unclassified name=Улица Ленина:oneway=yes

  <way id="5090250" visible="true" timestamp="2009-01-19T19:07:25Z" version="8" changeset="816806" user="Blumpsy" uid="64226">
    <nd ref="822403"/>
    <nd ref="21533912"/>
    <nd ref="821601"/>
    <nd ref="21533910"/>
    <nd ref="135791608"/>
    <nd ref="333725784"/>
    <nd ref="333725781"/>
    <nd ref="333725774"/>
    <nd ref="333725776"/>
    <nd ref="823771"/>
    <tag k="highway" v="unclassified"/>
    <tag k="name" v="Улица Ленина"/>
    <tag k="oneway" v="yes"/>
  </way>


Отношение relation

two merging arrows

Было предложено чтобы эта статья или её часть были совмещены с Relation. (Обсудить)
Основная статья: Relation

Отношение - это группа из нуля или более примитивов с соответствующими ролями. Оно используется для определения связей между объектами, а также может быть моделью абстрактного объекта.

имя значение описание
id целое положительное См. выше
tags список См. выше
members список (упорядоченный) Упорядоченный список примитивов с атрибутами роль (где ролью может быть любой текст).

Члены элемента

имя значение описание
type "точка"
"линия"
Тип члена
ref целое идентификатор члена
role строка Роль члена. Это зависит от использования отношения. Популярными являются мультиполигон или маршрут

Пример XML

Пример отношения мультиполигон:

  <relation id="12" timestamp="2008-12-21T19:31:43Z" user="kevjs1982" uid="84075">
    <member type="way" ref="2878061" role="outer"/>
    <member type="way" ref="8125153" role="inner"/>
    <member type="way" ref="8125154" role="inner"/>
    <member type="way" ref="3811966" role=""/>
    <tag k="created_by" v="Potlatch 0.10f"/>
    <tag k="type" v="multipolygon"/>
  </relation>

Полигон

Не существует в качестве элемента данных, но замкнутые линии с меткой соответствующих ключей обрабатываются как полигоны; natural=water например.

Пример симуляции полигона

  <way id="4876027" timestamp="2008-03-12T07:59:11Z" user="MichaelCollinson">
    <nd ref="31492372"/>
    <nd ref="31492338"/>
    <nd ref="31492370"/>
    <nd ref="31492371"/>
    <nd ref="31492372"/>
    <tag k="natural" v="water"/>
    <tag k="name" v="Spegeldammen"/>
  </way>

Ссылки