o5m-decode
streaming parser for o5m files
This library works in node or in the browser using browserify.
example
var to = require('to2')
var decode = require('o5m-decode')()
process.stdin.pipe(decode).pipe(to.obj(write))
function write (row, enc, next) {
console.log(row)
next()
}
api
var decode =
var d = decode()
Return a transform stream d
that turns o5m file content as input into objects
of output. Each has a row.type
field:
- bbox
- node
- way
- relation
bbox
Each bbox object has:
row.x1
- west (degrees longitude)row.y1
- south (degrees latitude)row.x2
- east (degrees longitude)row.y2
- north (degrees latitude)
For example:
type: 'bbox'x1: 174875y1: -367495926x2: 175y2: -366246952
node
Each node object has:
row.id
- integer unique idrow.version
- integer document versionrow.timestamp
- integer unix epoch timestamprow.changeset
- integer id of changesetrow.uid
- integer user idrow.user
- string user namerow.longitude
- floating point longitude degreesrow.latitude
- floating point latitude degreesrow.tags
- object mapping tag keys to strings
For example:
type: 'node'id: 3246777679version: 1timestamp: 1419192559changeset: 27617118uid: 33589user: 'zenfunk'longitude: 1749457338latitude: -367353312tags:'seamark:type': 'beacon_lateral''seamark:topmark:shape': 'cylinder''seamark:topmark:colour': 'red''seamark:beacon_lateral:colour': 'red''seamark:beacon_lateral:system': 'iala-a''seamark:beacon_lateral:category': 'port'
way
Each way object has:
row.id
- integer unique idrow.version
- integer document versionrow.timestamp
- integer unix epoch timestamprow.changeset
- integer id of changesetrow.uid
- integer user idrow.user
- string user namerow.refs
- array of id integers that belong to this way
For example:
type: 'way'refs:20078962702007896278200789628420078962982007896302200789630120078962912007896278200789626120078962642007896274id: 190187715version: 1timestamp: 1352626100changeset: 13830035uid: 833786user: 'barnaclebarnes_linz'tags:is_in: 'David Rocks (The Four Islands)'natural: 'coastline''LINZ:layer': 'island_poly'source_ref: 'http://www.linz.govt.nz/topography/topo-maps/'attribution: 'http://wiki.osm.org/wiki/Attribution#LINZ''LINZ:dataset': 'mainland''LINZ:group_name': 'David Rocks (The Four Islands)''LINZ:source_version': '2012-06-06'
relation
Each relation object has:
row.id
- integer unique idrow.version
- integer document versionrow.timestamp
- integer unix epoch timestamprow.changeset
- integer id of changesetrow.uid
- integer user idrow.user
- string user namerow.members
- array of objects withid
,type
, androle
properties
For example:
type: 'relation'id: 2568782version: 2timestamp: 1363901133changeset: 15448381uid: 4499user: 'Jochen Topf'members:id: 190304472 type: 'way' role: 'outer'id: 190304664 type: 'way' role: 'outer'tags:name: 'Motutapu Island'type: 'multipolygon'place: 'island''LINZ:layer': 'island_poly'source_ref: 'http://www.linz.govt.nz/topography/topo-maps/'attribution: 'http://wiki.osm.org/wiki/Attribution#LINZ''LINZ:dataset': 'mainland''LINZ:source_version': '2012-06-06'
install
npm install o5m-decode
license
BSD