Стал обновлять конвертер. Нашёл на ГитХабе какой-то, но там код ужасный и не поправишь ничего. Решил, что лучше день потерять, потом за 5 минут долететь… Теперь конвертер может и экспортировать файлы, не только считывать.

Теперь есть 2 класса, работа с ними - проще, чем раньше. Один выдаёт словари, другой - красивенькие объекты.

d = SmartOsmDocument()
d.load(open(sys.argv[1]))  # открываем файл, который указан в командной строке
d.dump(open('test.osm', 'w'))

Вместо обычного файла питоном можно открывать и bz2, в общем load принимает любой объект с интерфейсом файла.
И выдаёт тоже в любой подобный.

Единственное что ограничено пока - это возможности генерировать новые данные. То есть создать точку или путь будет затруднительно (придётся сгенерировать словарь).