RU:Catalog

Эта статья является неполной. Вы можете помочь проекту OpenStreetMap, дополнив её.

Каталог объектов 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 и т.д.
  • переводимое сочетание тег=значение - необходимость под вопросом
This article is issued from Openstreetmap. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.