imposm.parser - OpenStreetMap XML/PBF parser for Python
It has a simple API and it is fast and easy to use. It also works across multiple CPU/cores for extra speed.
Imposm-parser is in maintenance mode and it's unlikely that we will provide any further releases.
Here is an example that parses an OSM file and counts all ways that are tagged as a highway.
from imposm.parser import OSMParser # simple class that handles the parsed OSM data. class HighwayCounter(object): highways = 0 def ways(self, ways): # callback method for ways for osmid, tags, refs in ways: if 'highway' in tags: self.highways += 1 # instantiate counter and parser and start parsing counter = HighwayCounter() p = OSMParser(concurrency=4, ways_callback=counter.ways) p.parse('germany.osm.pbf') # done print counter.highways
Source and issue tracker
Source code and issue tracker are available at https://github.com/omniscale/imposm-parser.