RU:Catalog
Каталог объектов OSM призван для организации каталога объектов OSM, в том числе и POI, унифицирующий их определение, иерархию и перевод. Предполагаемое использование:
- Полный перевод тегов, для понимания обычного человека
- Конвертация в пресеты JOSM
- Создания иерархии элементов для различных каталогов/списков и её однородность
- Организации списка "правильных" тегов, для пользователей и валидаторов
Обсуждение 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 и т.д.
- переводимое сочетание тег=значение - необходимость под вопросом