Немного упростил модуль, теперь не надо возиться с классами.
>>> from osm2py import load_osm
>>> load_osm(open('my_file.osm'))
выдаст список словарей, в которых представлены XML элементы. Чтобы как-то обрабатывать их и сохранять в нужном вам виде, нужно написать функцию обработчик, например, по умолчанию функция просто записывает элемент в родительские дети:
def load_callback(current, parent):
parent['children'].append(current)
Можно переопределить функцию, чтобы она, например, записывала в базу данных.
Чтобы было проще работать с элементами, нужно определить фильтр. Он будет фильтровать узлы, но не включая дочерние. Например, хотим узнать только все тэги:
def cb(elt, parent=None):
print "{k}: {v}".format(elt['attrs'])
flt = lambda elt: elt['name'] == 'tag'
load_osm(open('my_file.osm'), cb, flt)
Напечатает все тэги последовательно. Как посчитать тэги самому, оставляю в качестве домашнего задания.