-
Notifications
You must be signed in to change notification settings - Fork 24
Description
I have used the random access features in osm-read to make a different way to iterate through records in the osm.pbf file. The problem I was having before was that since reading this OSM was faster than inserting it into SQLite, the reading got ahead of writing, and pause was not working (as I expected whereby it would immediately pause the output). I decided to implement an asynchronous iterator interface, not within the codebase of osm-read but using its API.
The code I use to iterate objects is as follows:
let c = 0;
let type_counts = {};
for await (const item of reader.objects) {
//console.log(item);
const {type} = item;
if (!type_counts[type]) {
type_counts[type] = 1
} else {
type_counts[type]++;
}
c++;
}
console.log('c', c);
console.log('type_counts', type_counts);
For guernsey-and-jersey I get the following output:
c 513686
type_counts { node: 461240, way: 51971, relation: 475 }
The code I have here is concise, will run quickly when the results are requested quickly, but will also run as slow as needed when the result processing takes more time.
Is this a feature that's worth incorporating into the library?
I would like to coordinate with @marook regarding including this and possibly other features in osm-read.