Необходимые и достаточные условия для вытаскивания дорог из OSM

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

Я уже понял, что файл OSM состоит из трех частей: nodes, ways и relations.
С nodes понятно. С ways вроде как тоже. То что я ищу это ways у которых есть тэг с ключем highway. Я правильно понимаю или мне могут еще какие-то теги понадобиться?

Так же мне нужны названия этих дорог (улиц, трасс…). Откуда согласно стандарту их нужно брать?
Вот у меня перед глазами файл RU-TY.osm (Тува). Возможно не самый лучший образец, но благодаря этому файлу у меня появился ряд вопросов.
Тут есть ways у которых сразу определено название. Вот пример:

  <way id="34882725" version="8" timestamp="2010-12-14T16:51:11Z" uid="365883" user="morganvenable" changeset="6659995">
    <nd ref="409084354"/>
    <nd ref="409084605"/>
    <nd ref="409084607"/>
    <nd ref="867606796"/>
    <nd ref="409084362"/>
    <nd ref="409084366"/>
    <nd ref="409084376"/>
    <nd ref="409084356"/>
    <nd ref="1038352332"/>
    <nd ref="869107035"/>
    <nd ref="409085198"/>
    <tag k="addr:postcode" v="667000"/>
    <tag k="cladr:code" v="17000001000008200"/>
    <tag k="cladr:name" v="Ленина"/>
    <tag k="cladr:suffix" v="Улица"/>
    <tag k="highway" v="tertiary"/>
    <tag k="name" v="улица Ленина"/>
    <tag k="name:en" v="Lenin street"/>
    <tag k="name:ru" v="улица Ленина"/>
  </way>

И эта улица корректно отображается на карте. Но но большенсво ways описывающих улицы не содержат тега с названием.
Так же в файле много relations, которые вроде как призваны объеденить в себе ways и дать название этой улицы, например:

<relation id="1575716" version="1" timestamp="2011-05-07T04:02:51Z" uid="180462" user="Dennis Apter" changeset="8070396">
    <member type="relation" ref="1568614" role="is_in"/>
    <member type="way" ref="31718655" role="street"/>
    <member type="way" ref="31718973" role="street"/>
    <member type="way" ref="31718982" role="street"/>
    <tag k="address:a6" v="Гранитная улица"/>
    <tag k="address:type" v="a6"/>
    <tag k="name" v="Гранитная улица"/>
    <tag k="type" v="address"/>
  </relation>

Но way’ев с такими id в файле нет. Судя по всему это какой-то косяк и это какие-то мертвые relations. Потому как в данном городе куча неназванных улиц (судя по отрендеренной карте), а в данном файле куча таких вот мертвых relations с (отсутствующими на карте) названиями улиц.
Но все это я вот к чему. Так откуда же брать названия улиц? Что является стандартом? Или если описание улицы укладывается в один way то название может быть там, а если улица состоит из нескольских way’ев, то искать её название нужно в соответвующем relations?

Потом, как видно в последнем листинге role=“street”. А какие еще role могут мне понадобиться? Для чего нужны relatedStreet и associatedStreet?

Если вы про РФ, то названия улиц надо смотреть ТОЛЬКО в

<tag k="name" v="улица Ленина"/>

Ну, ещё в name:lang, если надо.

Для дорог вам, скорее, понадобятся релейшены ограничений поворотов.
Алсо, отсутствующий в файле объект — это просто отсутствующий в файле объект. Это никоим образом не значит, что в осме его нет. А проверить можно вот так.

Кроме того, оставить только объекты с нужными тегами (highway=*, …) можно при помощи osmosis.

ну, я свою структуру БД хочу.

Моё дело предложить способ препроцессинга перед разбором своими средствами, ваше дело — отказаться. :3

“могут ездить” это весьма растяжимое понятие (и “дорога” кстати тоже, highway=* далеко не обязательно “дорога”). В зависимости от того, что именно под ним понимается, могут понадобиться и другие теги (в частности, route=ferry), а часть hw возможно придется исключить (pedestrian, service, track).

Ну и без всякого сомнения потребуется анализировать кучу тегов, описывающих запреты и ограничения.

А вы osmosis-ом не пробовали?

вот такого рода информация мне и нужна. только по-подробнее. это все только опытный пользователь может знать. а документанция мягко говоря ужасная. поэтому я сюда и обратился. может кто сможет расписать теги которые могут мне понадобиться.

да, пробовал. но мне это решение по ряду причин не подходит.