Get OpenStreetMap objects via the Overpass API as GeoJSON
$ npm install -g get-overpass
$ get-overpass relation/3082668 > buenos-aires.geojson
$ get-overpass [-a/--api-endpoint url] [-m/--mapbox-ids] <OSM ID>
get-overpass
exports a single function which returns a promise.
function getOverpass(osmId, mapboxIds = false, apiEndpoint = "https://overpass-api.de/api/interpreter") => new Promise()
Example:
const getOverpass = require('get-overpass')
getOverpass('relation/3082668')
.then(data => console.log("Buenos Aires:", data)
.catch(error => console.log("DOH!", error.message)
There are two valid formats for OSM identifiers:
- The OSMtoGeoJSON string format:
{OSM type}/{OSM ID of that type}
- The Mapbox globally unique numeric format:
- nodes:
{OSM node ID} * 10
- ways:
{OSM way ID} * 10 + 1
- relations:
{OSM relation ID} * 10 + 4
- nodes:
Examples of valid and equivalent OSM IDs are (osmtogeojson format, mapbox format):
-
relation/3082668
,30826684
-
way/213576258
,2135762581
-
node/4497495008
,44974950080
Only the primary OSM types relation
, way
, and node
are supported, other types (ie area
) are not supported.
Use the given url as an Overpass API endpoint. If not set, the default public Overpass API instance https://overpass-api.de/api/interpreter
will be used. Note that general 'be friendly' data usage limits apply to the default endpoint.
Format IDs in the output in Mapbox format. If not set, ID's will be in the default OSMtoGeoJSON format.
One way to do this is to use the 'query features' tool (the question mark on the right of the interface) at https://www.openstreetmap.org/.
Under the hood, this tool uses osmtogeojson to build geojson from result sets. There are some OSM structures, particularly some relations
, that it appears that osmtogeojson is unable to convert to geojson.
Maybe. OpenStreetMap data is licensed under the ODbL. Attribution is required, and derivative works must also be licensed under the ODbL.
Inspired by and makes heavy use of Per Liedman's query-overpass.