Skip to content

derhuerst/query-overpass

Repository files navigation

query-overpass

Query the OpenStreetMap Overpass API. Yet another implementation, because it

  • is isomorphic (works in the browser)
  • is lightweight (doesn't contain any sophisticated parser)
  • uses p-retry to resend requests

Other alternatives for you to evaluate:

npm version ISC-licensed support me via GitHub Sponsors chat with me on Twitter

Installing

npm install @derhuerst/query-overpass

Usage

Pass in a string of Overpass QL. Returns a Promise that will resolve with an array of elements.

const queryOverpass = require('@derhuerst/query-overpass')

queryOverpass(`
	[out:json][timeout:25];
	node(3378340880);
	out body;
`)
.then(console.log)
.catch(console.error)
[ {
	type: 'node',
	id: 3378340880,
	lat: 52.5145076,
	lon: 13.35011,
	tags: {
		artist: 'Friedrich Drake',
		artwork_type: 'statue',
		colour: 'gold',
		height: '66.9',
		image: 'https://upload.wikimedia.org/wikipedia/commons/2/2a/Victoria_Goldelse_Siegessaeule_Berlin.jpg',
		min_height: '58.6',
		name: 'Viktoria',
		'name:de': 'Siegessäule',
		'name:ru': 'Колонна победы',
		'name:zh': '勝利女神柱',
		reg_name: 'Goldelse',
		tourism: 'artwork',
		wheelchair: 'no'
	}
} ]

Note: The Overpass API does not support extended Overpass Turbo queries, as they are an Overpass Turbo-specific feature.

To use make requests from a web site, enable CORS using the fetchMode option:

queryOverpass(query, {fetchMode: 'cors'})

To use @derhuerst/query-overpass with a custom Overpass API endpoint, use the endpoint option:

queryOverpass(query, {endpoint: 'https://overpass.example.org'})

Related

  • osm-build-query – Build a query for the OSM Overpass API that retrieves all elements within the bounding feature.
  • osm-flatten-relation – Resolve an OpenStreetMap relation recursively.

Contributing

If you have a question or have difficulties using query-overpass, please double-check your code and setup first. If you think you have found a bug or want to propose a feature, refer to the issues page.