RU:Namespace

From OpenStreetMap Wiki
Jump to navigation Jump to search

Пространство имён — это префикс или постфикс, входящий в состав ключа тега. Пространства имён применяются (когда это необходимо) для группировки тегов или ключей, что позволяет избегать конфликтов значений и описать отдельный ключ с большей степенью детализации. Разграничивать пространства имён принято двоеточием (':') после каждого слова-префикса ("префикс:постфикс=значение").

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

Хранение некой переменной величины в виде отделяемого двоеточием суффикса или префикса ключа не является случаем использования пространства имен, так как в этом случае суффикс (префикс) хранят не метку группировки, а переменную величину. Создания подобных схем стоит избегать, так как это усложняет обработку данных. Большинство приложений, использующих данные OSM, спроектированы так, что ожидают обнаружить значение тега в value, а не в составе key. Хранение значений в суффиксах и префиксах требует более сложной предварительной обработки данных перед их использованием.

Примеры применения

  • maxspeed:forward=* — указание ограничения скорости, которое установлено только для одного направления движения, соответствующего направлению линии дороги.
  • addr:city=Mandaluyong — часть описания адреса.
  • generator:output=* — описывает выходную мощность электростанции.
  • proposed:lanes=* — описывает количество предполагаемых полос (lanes=*) после окончания строительства/реконструкции.

Значение для потребителей данных

Прежде всего, ключ с пространством имён должен сохраняться и обрабатываться любым ПО, работающим с данными OSM, как текстовая строка (string) с произвольным содержимым (так уж вышло, что это строка содержит двоеточие).

Многие потребители данных OSM будут обрабатывать данные с пространством имён. Приложения-потребители данных выискивают в данных ключи, которые имеют для них значения и игнорируют нераспознанные. При этом проявляется желанный эффект от применения пространств имён — они могут быть использованы для выделения определённых типов специальной информации, "отводя" таковую от 'основных' данных карты и подчёркивая, что подобные данные скорее всего будут интересны только специфическим обработчикам данных. (например, данные о цвете и форме крыш домов интересуют далеко не каждый рендер)

Чрезмерное употребление

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

  • пространство имён одного проекта; иногда может казаться заманчивым просто ввести новое пространство имён для избежания конфликтов с существующими тегами, вместо того, чтобы найти способ органично подстроиться под существующие схемы тегирования, но это плохая практика. OSM является мультисхемовой базой данных, где один и тот же тег может участвовать в нескольких разных схемах тегирования (как например layer=*), поэтому интеграция с существующими схемами тегирования важна для поддержания организации данных.
  • лишние пространства имён рассогласуют базу данных: когда у нас есть и name=xxx и kakoy_to_project:name=xxx , часто будут возникать ситуации, при которых участник обновит лишь часть из этих данных, пропустив другую. Более простые и общие теги применять удобнее и надёжнее.
  • лишние пространства имён рассеивают базу данных: к примеру, кто-то, ищущий данные об частотах УКВ-связи для причала будет должен провести поиск по ключу бухта:УКВ_частота , плюс маяк:бухта:УКВ_частота, плюс УКВ_частота, плюс шлюз:УКВ_частота, плюс укв, чтобы собрать полные данные... Использование простого ключа укв должно быть достаточно для выведения всей информации, связанной с бухтой или шлюзом, или чем-либо ещё, что мы описываем тегами в OSM.

Отображение

Обработчик картоданных RU:Mapnik и 'стандартный' стиль карты, присутствующий на главной странице OpenStreetMap.org поддерживают лишь весьма ограниченное количество тегов с пространствами имён.