Iterate over .osm file and call a provided callback function for each element
This code loads .osm file and allows to call function on all OSM objects in dataset.
pip install osm-iterator
It is distributed as an
osm_iterator PyPI package.
from osm_iterator.osm_iterator import Data def show_places(element): place_tag = element.get_tag_value("place") name_tag = element.get_tag_value("name") osm_object_url = element.get_link() if place_tag != None: print(name_tag, "is an object", osm_object_url) osm = Data("file.osm") osm.iterate_over_data(show_places)
python3 -m unittest
Design explanation: this code has deeply suboptimal handling of pretty much everything. For start, all data is loaded into memory and then duplicated in-memory dataset is created.
As result, attempt to process any large datasets will cause issues due to excessive memory consumption.
This situation is consequence of following facts
- This code was written during my first attempt to process OSM data using Python
- API allows (at least in theory) to painlessly switch to real iterator that is not loading all data into memory at once
- So far this was good enough for my purposes so I had no motivation to spend time on improving something that is not a bottleneck
Though, if someone has good ideas for improvements (especially in form of a working code) - comments and pull requests are welcomed.
Release history Release notifications | RSS feed
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
|Filename, size||File type||Python version||Upload date||Hashes|
|Filename, size osm_iterator-1.1.2-py3-none-any.whl (4.4 kB)||File type Wheel||Python version py3||Upload date||Hashes View|
|Filename, size osm_iterator-1.1.2.tar.gz (3.2 kB)||File type Source||Python version None||Upload date||Hashes View|
Hashes for osm_iterator-1.1.2-py3-none-any.whl