RU:Catalog

From OpenStreetMap Wiki
Jump to: navigation, search

Каталог объектов OSM призван для организации каталога объектов OSM, в том числе и POI, унифицирующий их определение, иерархию и перевод. Предполагаемое использование:

  1. Полный перевод тегов, для понимания обычного человека
  2. Конвертация в пресеты JOSM
  3. Создания иерархии элементов для различных каталогов/списков и её однородность
  4. Организации списка "правильных" тегов, для пользователей и валидаторов


Обсуждение http://forum.openstreetmap.org/viewtopic.php?id=16704
GitHub https://github.com/ErshKUS/osmCatalog

Варианты:

Описание схемы

Каталог

Наименование Обязательный Описание
name да Уникальное имя объекта. Только буквы английского алфавита, цифры и знак подчеркивания.
parent нет Указание на родителя. Допускается указание нескольких, тогда первый родитель будет основным.
tags нет Сочетание тегов описывающих элемент. Может быть несколько, условие "И" (т.е. должны совпадать все теги). В качестве значения тега можно использовать *.
moretags нет Дополнительные информационные теги объекта.
poi да Является ли объект POI. Если true, то подразумевается наличие тегов: name, opening_hours, operator, brand, phone, fax, website
type нет Для типа объекта: node, way, area, relation

moretags:

Наименование Обязательный Описание
class да Уникальное имя, нужно для перевода. Только буквы английского алфавита, цифры и знак подчеркивания.
tag да Ключ тега, которым обозначается
type да Класс тега: period - периоды времени (opening_hours); number - количественное значение (lanes); namelang - имена, имеющие переводы на языки (name:ru); translate - полностью переводимые значения тега

пример в формате json:

 [
   {
     "name": "trade",
     "parent": [""],
     "tags": {},
     "moretags": {},
     "poi": true,
     "type": [""]
   },
   {
     "name": "shop_supermarket",
     "parent": ["trade"],
     "tags": {"shop": "supermarket"},
     "moretags": {
       "toilets": {
         "class": "boolean",
         "tag": "toilets",
         "type": "translate"
       }
     },
     "poi": true,
     "type": ["node", "area"]
   },
   {
     "name": "services",
     "parent": [""],
     "tags": {},
     "moretags": {},
     "poi": true,
     "type": [""]
   },
   {
     "name": "amenity_bank",
     "parent": ["services"],
     "tags": {"amenity": "bank"},
     "moretags": {
       "atm": {
         "class": "boolean",
         "tag": "atm",
         "type": "translate"
       },
       "atm2": {
         "class": "boolean",
         "tag": "atm2",
         "type": "translate"
       }
     },
     "poi": true,
     "type": ["node", "area"]
   },
   {
     "name": "amenity_toilets",
     "parent": ["services"],
     "tags": {"amenity": "toilets"},
     "moretags": {}
     },
     "poi": true,
     "type": ["node", "area"]
   }
 ]

Борьба с общими и уточняющими тегами категорий:

  • выстраивать перебор таким образом, что если есть две категории с одинаковыми тегами ставить на первое место категорию где есть дополнительные теги
  • проходить скриптом каталог, с расставление исключающих тегов, например для highway_service исключение highway_living_street 'highway=>service, -living_street=>*'


Словарь

Наименование Обязательный Описание
language да Язык перевода. Только двухбуквенное.
catalog да Перевод объектов каталога. name-имя, description-описание, link-сайт с подробным описанием, keywords-ключевые слова
moretags нет Перевод дополнительный информационных тегов.
class да Перевод типов значений.

пример в формате json:

 {
   "language": "ru",
   "catalog": {
     "trade": {"name": "Торговля", "description": "", "link": "", "keywords": ""},
     "services": {"name": "Услуги", "description": "", "link": "", "keywords": ""},
     "shop_supermarket": {"name": "Супермаркет", "description": "", "link": "", "keywords": ""},
     "amenity_bank": {"name": "Банк", "description": "", "link": "", "keywords": ""}
     "amenity_toilets": {"name": "Туалет", "description": "", "link": "", "keywords": ""}
   
   },
   "moretags": {
     "atm": {"name": "Банкомат", "description": "", "link": ""},
     "atm2": {"name": "Банкомат2", "description": "", "link": ""},
     "toilets": {"name": "Наличие туалета", "description": "", "link": ""}
   },
   "class": {
     "null": "неизвестно",
     "boolean": {
       "true": "да",
       "false": "нет",
       "yes": "да",
       "no": "нет"      
     }
   }
 }

классификация:

  • непереводимое значение - как есть, например, скорость
  • время - приведение типа "Mo-Su 09:00-21:00" в нужную локализацию
  • ссылка - тоже не переводимое, расширение типа
  • локализованный текст (:ru, :en, ...) - ищется сначало соответствующий локали, иначе без :xx
  • переводимое значение - yes, no и т.д.
  • переводимое сочетание тег=значение - необходимость под вопросом