This code is used in and maintained by the overpass turbo project.
as a command line tool:
npm install -g osmtogeojson $ osmtogeojson file.osm > file.geojson
as a nodejs libary:
npm install osmtogeojson var osm = require('osmtogeojson'); osm.toGeojson(xml_data);
as a browser library:
<script src='lodash.js'></script> <script src='osmtogeojson.js'></script> osmtogeojson.toGeojson(xml_data);
.toGeojson( 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 won't be a structured json object rather than a simple key-value list.
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 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
id property that is formed from the type and id of the original OSM object (e.g.
node/123) and has the member
properties 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:
rel(the relation's id) and
reltags(contains all tags of the relation)
If the option
flatProperties is set to true, the
properties object will not contain any nested object literals, but directly provide a concise id, meta data and the tags of the respective OSM object.