Iterate over .osm file and call a provided callback function for each element
Project description
This code loads .osm file and allows to call function on all OSM objects in dataset.
It is distributed as an osm_iterator
PyPI package.
Usage example:
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)
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 (especially in form of a working code) - comments and pull requests are welcomed.
Running tests
nosetests3
or python3 -m unittest
Publishing new version
- run tests (see section above)
- bump version in
setup.py
file in the top directory - from the top directory run
python3 setup.py sdist bdist_wheel
andtwine upload dist/*
- one can make local install, without publishing to PyPi. Run from dist folder command like
pip3 install osm_iterator-0.0.4-py3-none-any.whl
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for osm_iterator-0.0.6-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | bd782deed4f8f20f7f405fc5057cf26eeeb464767cd1d9e07ca7182c9151fb95 |
|
MD5 | d4158292d3be1a23ca460e794c234b04 |
|
BLAKE2b-256 | e21bc8a1ed74d68dff3379ce3c6f256601a67bb7cab49c5cf7a6b5f4d7b6cc26 |