- real OSM polygon detection
- real OSM multipolygon support
- well tested and proven
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 library:
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)
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
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.