Osm2python
Jump to navigation
Jump to search
osm2python : A Simple Python OSM XML Converter
Usage is extremely simple:
>>> from osm2python import load_osm, dump_osm >>> load_osm(open('my_file.osm')) [<a list of all the XML elements as dictionaries (see help(load_osm) for more info)>]
Dump it back:
>>> dump_osm(open('another_file.osm', 'w'), new_doc_dictionary)
If you want to save the elements into a custom storage, define a callback:
>>> def cb(current, parent): print current >>> load_osm(open('my_file.osm'), cb) (will just print all the dictionaries)
You can also create an arbitrary filter for the elements:
>>> flt = lambda elt: (elt['name'] == 'node' and (54 < int(elt['attrs']['lat']) < 56) and (82 < int(elt['attrs']['lon']) < 84))
>>> load_osm(open('my_file.osm'), element_filter=flt) <list of dictionaries>
Another example: we want to get all the tags (filter) and print them (callback):
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)
This will print every tag value consecutively.
The project contains sample scripts to showcase the usage:
- tree.py can import from OSM XML in Python objects representing the document and linking correctly one another.
- osm_json.py dumps these dictionaries in json format.
Note: This project is not a PyPI package yet.