npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

osm2geojson-lite

v0.9.4

Published

a lightweight yet faster osm (either in xml or in json formats) to geojson convertor - 4x faster than xmldom + osmtogeojson in most situations - implemented in pure JavaScript without any 3rd party dependency

Downloads

872

Readme

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.

  • osm: the OSM XML data in String, or OSM/Overpass JSON as object or in String
  • opts?: optional, the options object, right now supports below properties/fields:
    • completeFeature/allFeatures: the default value is false. When it's set to true, the returned geojson will include all elements that meet the specified conditions in FeatureCollection format; otherwise, only the bare geometry of the first relation element will be returned.
    • renderTagged: the default value is false. When it's set to true, the returned geojson will include all elements with tags (i.e., tagged) until suppressWay changes its behavior a bit; otherwise only the unreferenced ones get returned.
    • suppressWay/excludeWay: the default value is true. When it's set to true, the returned FeatureCollection will exclude all referenced ways even though they are tagged; otherwise the features of those ways will be included in the resulted result as well.

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

  • No 3rd party dependency

License

Written in 2018 by tibetty [email protected]