Skip to content

Instantly share code, notes, and snippets.

@kes1
Created February 17, 2018 15:58
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kes1/1e28949c34946fbc41ae55b6263f559e to your computer and use it in GitHub Desktop.
Save kes1/1e28949c34946fbc41ae55b6263f559e to your computer and use it in GitHub Desktop.
Google Spreadsheet get osm lat lon from node or way id
function getLatLong(osm_node) {
// Takes an open street map url and returns lat long as a comma separated string
// eg. osm_node = https://www.openstreetmap.org/way/95010444
// Returns 56.4563803,-3.069582
overpass_url = "http://overpass-api.de/api/interpreter?data=";
// TODO - handle this better;
var node_type = osm_node.split('/')[3]
var node_id = osm_node.split('/')[4]
overpass_query = "[out:json];" // Base query.
switch(node_type)
{case "node":
// query for node
//http://overpass-api.de/api/interpreter?data=[out:json];node(5412454861);out skel;
overpass_query += "node(" + node_id + ");out skel;";
var response = UrlFetchApp.fetch(overpass_url + overpass_query);
var json = response.getContentText();
obj = JSON.parse(json);
lat = obj.elements[0].lat
lon = obj.elements[0].lon
return lat + "," + lon;
break;
case "way":
// http://overpass-api.de/api/interpreter?data=[out:json];way(126902635);out center;
// query for way centroid (todo - return geojson).
overpass_query += "way(" + node_id + ");out center;";
var response = UrlFetchApp.fetch(overpass_url + overpass_query);
var json = response.getContentText();
obj = JSON.parse(json);
lat = obj.elements[0].center.lat
lon = obj.elements[0].center.lon
return lat + "," + lon;
break;
}
return "";
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment