Home

Awesome

osm2geojson-lite

A lightweight (not as lightweight as xml2geojson though) yet faster convertor for OSM data whatever in XML or JSON formats to GeoJSON - much faster (the more complex the data source is, the more performance advantages it posesses) than osmtogeojson in most situations - implemented in pure JavaScript without any 3rd party dependency.

History

An internal function inside query-geo-boundary → stripped out to handle OSM XML only xml2geojson-lite → this library that supports both OSM XML and OSM/Overpass JSON

Usage

As a Node.JS Library

Installation:

$ npm install osm2geojson-lite

Usage:

    const osm2geojson = require('osm2geojson-lite');
    let geojson = osm2geojson(osm, opts);

In the Browser

    <script src='your/path/to/osm2geojson-lite.js'/>
    let geojson = osm2geojson(osm, opts);

API

osm2geojson(osm, opts)

Converts OSM data (XML/JSON) to GeoJSON.

Performance

  1. Workloads include the boundary XML and JSON of 4 administrive areas (zhucheng, hebei, tokyodo, usa)
  2. Call each conversion for 100 rounds to mitigate the impacts of GC and other factors
  3. For each script, run as many as times seperately and then calculate the average cost time (ACT for short)
  4. The # listed in the table below are coarse lowest values of dividing the ACT of osmtogeojson by the one of this library
$ cd bench
$ node o2gl-bench.js
$ node otg-bench.js

1. XML
-----------------------------------------------------
|  zhucheng  |   hebei    |  tokyodo   |    usa     |
+------------+------------+------------+------------+
|  >2.5x     |  >4.0x     |  >3.0x     |  >3.0x     |
-----------------------------------------------------
2. Overpass JSON
-----------------------------------------------------
|  zhucheng  |   hebei    |  tokyodo   |    usa     |
+------------+------------+------------+------------+
|  >2.5x     |  >11.0x    |  >7.0x     |  >5.0x     |
-----------------------------------------------------

Correctness

You can copy the converted results to geojsonlint for the correctness validation. Up until now, osm2geojson-lite behaves pretty well with all the samples (also quite representative) in the data subfolers under test and bench directories, which also outperforms osmtogeojson.

The client side example shipped along with this package, index.html will automatically call geojsonlint validation service directly after each conversion, you can wait for a while to see the validation result after click the conversion button.

Node.JS version

ES5/ES6 features

Dependencies

License

Written in 2018 by tibetty xihua.duan@gmail.com