openstreetmap-stream
Version:
Streaming openstreetmap parser
154 lines (117 loc) • 3.29 kB
Markdown
```bash
$ npm install openstreetmap-stream
```
[](https://nodei.co/npm/openstreetmap-stream)
Note: you will need `node` and `npm` installed first.
The easiest way to install `node.js` is with [nave.sh](https://github.com/isaacs/nave) by executing `[sudo] ./nave.sh usemain stable`
You can extract the openstreetmap data from a file stream:
```javascript
var osm = require('openstreetmap-stream');
// wget https://s3.amazonaws.com/metro-extracts.mapzen.com/auckland_new-zealand.osm.pbf
osm.createReadStream( 'auckland.osm.pbf' )
.pipe( osm.stringify )
.pipe( process.stdout );
```
The easiest way to get started writing your own pipes is to use `through2`; just make sure you call `next()`.
```javascript
var osm = require('openstreetmap-stream'),
through = require('through2');
// wget https://s3.amazonaws.com/metro-extracts.mapzen.com/auckland_new-zealand.osm.pbf
osm.createReadStream( 'auckland.osm.pbf' )
.pipe( through.obj( function( data, enc, next ){
console.log( data.type, data.id, data.lat, data.lon );
next();
}));
```
```bash
node 241968426 -16.8675316 178.8918084
node 241968427 -16.8680169 178.8950226
node 241968428 -16.8682792 178.8944902
node 241968430 -16.8678736 178.8966257
```
Nodes:
```javascript
{
"type": "node",
"id": "241956126",
"lat": -16.2484711,
"lon": 179.5422587,
"tags": {
"created_by": "JOSM"
},
"info": {
"version": 2,
"timestamp": 1204332911000,
"changeset": 237950,
"uid": "8834",
"user": "Jocelyn"
}
}
```
Ways:
```javascript
{
"type": "way",
"id": "22572593",
"tags": {
"source": "PGS",
"natural": "coastline",
"created_by": "JOSM"
},
"info": {
"version": 1,
"timestamp": 1201026717000,
"changeset": 680785,
"uid": "10927",
"user": "Skywave"
},
"refs": [
"241979960",
"241979970",
"241979971",
"241979972",
"241979973",
"241979959",
"241979960"
]
}
```
You can extract the openstreetmap data from an existing file stream:
```javascript
var osm = require('openstreetmap-stream'),
fs = require('fs');
fs.createReadStream( './auckland_new-zealand.osm.pbf' )
.pipe( osm.parser() )
.pipe( osm.stringify )
.pipe( process.stdout );
```
You can also extract the data from stdin using a unix pipe:
```javascript
var osm = require('openstreetmap-stream');
process.stdin
.pipe( osm.parser() )
.pipe( osm.stringify )
.pipe( process.stdout );
```
```bash
cat auckland_new-zealand.osm.pbf | node stdin.js;
```
The `openstreetmap-stream` npm module can be found here:
[](https://npmjs.org/package/openstreetmap-stream)
Please fork and pull request against upstream master on a feature branch.
Pretty please; provide unit tests and script fixtures in the `test` directory.
```bash
$ npm test
```
Travis tests every release against node version `0.10`
[](https://travis-ci.org/geopipes/openstreetmap-stream)