by tyrasd

tyrasd /osmtogeojson

convert osm to geojson

463 Stars 72 Forks Last release: Not found MIT License 225 Commits 30 Releases

Available items

No Items, yet!

The developer of this repository has not created any items for sale yet. Need a bug fixed? Help with integration? A different license? Create a request here:


Converts OSM data to GeoJSON. Try the demo!

This code is used in and maintained by the overpass turbo project.

Build Status


command line tool


  $ npm install -g osmtogeojson


$ osmtogeojson file.osm > file.geojson

Supported command line options are shown with:

$ osmtogeojson --help

When working with extra large data files (≳ 100 MB) it is recommended to run the programm with a little extra memory to avoid process out of memory errors. The easiest way to do this is by running the command as

and setting the
parameter to the available memory size in MB (osmtogeojson typically needs about 4-5 times the input data size). On a Unix system, you can use the following command:
$ node --max_old_space_size=8192 `which osmtogeojson` large.osm > large.geojson

nodejs library


$ npm install osmtogeojson


var osmtogeojson = require('osmtogeojson');

browser library



osmtogeojson( data, options )

Converts OSM data into GeoJSON.

  • data
    : the OSM data. Either as a XML DOM or in OSM JSON.
  • options
    : optional. The following options can be used:
    • flatProperties
      : If true, the resulting GeoJSON feature's properties will be a simple key-value list instead of a structured json object (with separate tags and metadata). default: false
    • uninterestingTags
      : Either a blacklist of tag keys or a callback function. Will be used to decide if a feature is interesting enough for its own GeoJSON feature.
    • polygonFeatures
      : Either a json object or callback function that is used to determine if a closed way should be treated as a Polygon or LineString. read more

The result is a javascript object of GeoJSON data:


The GeoJSON produced by this library will include exactly one GeoJSON-feature for each of the following OSM objects (that is everything that is also visible in overpass turbo's map view):

  • all unconnected or interesting tagged nodes (POIs)
  • all ways (except uninteresting multipolygon outlines)
  • all multipolygons (simple multipolygons with exactly one closed outer way are present via their outer way)

All data is given as a FeatureCollection. Each Feature in the collection has an

property that is formed from the type and id of the original OSM object (e.g.
) and has the member
containing the following data:
  • type
    : the OSM data type
  • id
    : the OSM id
  • tags
    : a collection of all tags
  • meta
    : metainformaton about the feature (e.g. version, timestamp, user, etc.)
  • relations
    : an array of relations the feature is member of. Each relation is encoded as an object literal containing the following properties:
    (membership role),
    (the relation's id) and
    (contains all tags of the relation)
  • tainted
    : this flag is set when the feature's geometry is incomplete (e.g. missing nodes of a way or missing ways of a multipolygon)

If the option

is set to true, the
object will not contain any nested object literals, but directly provide a concise id, meta data and the tags of the respective OSM object.

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.