Overpass

siiky

2022/03/26

2022/12/28

en

Overpass is an interface used to query OSM data. Overpass Turbo is an Overpass web client you can use to query OSM data, export it, &c.

Useful Queries

This is a list of useful queries I've learned over time.

Features last modified by an user

Nodes, ways, or relations last modified by "user name":

nwr(user:"user name")({{bbox}});
out body;

Features modified between two dates

Node, way, or relation amenities modified between 2022-02-04T00:00:00Z and "to-date":

// to-date is optional and defaults to now
[diff:"2022-02-04T00:00:00Z","to-date"];
nwr["amenity"]({{bbox}});
out body;

Features around other features

Picnic sites within a 1km radius of restaurants with takeaway:

node[amenity=restaurant][takeaway=yes]({{bbox}});
node(around:1000)[tourism=picnic_site];
out body;

Features inside some area object

Libraries in Portugal:

nwr["amenity"="library"](area:3600295480);
out body;

// Or:

area(3600295480)->.searchArea;
(nwr["amenity"="library"](area.searchArea););
out body;
>;
out skel qt;

I don't understand the difference between the two yet, but the latter is supposed to be more correct. All I know is that >; makes the query recursive (whatever that means).

Found on StackOverflow an explanation of the area:XXX:

If the polygon you want to query inside of is an OSM feature, you can also query using an area ID.



Area IDs are generated by the Overpass server to make querying data within existing polygons easier. You can determine the area ID for a way by adding 2400000000 to the way ID and the area ID for a relation by adding 3600000000 to the relation ID (assuming that the way or relation is a valid area feature).

I found Portugal's relation object, which is the relation 295480, and 3600000000+295480=3600295480.

Color-coding OSM data by age

Based on this diary entry by SK53:

[out:json][timeout:2500];
(
  nwr["highway"]({{bbox}});
  nwr["building"]({{bbox}});
);
(._;>;);
out meta;

{{style:

node {
  color: #00000000;
  fill-color: #00000000;
}

way[@timestamp=~/2022.*/] {
  color: #313695;
  fill-color: #313695;
}
way[@timestamp=~/2021.*/] {
  color: #4575B4;
  fill-color: #4575B4;
}
way[@timestamp=~/2020.*/] {
  color: #74ADD1;
  fill-color: #74ADD1;
}
way[@timestamp=~/2019.*/] {
  color: #ABD9E9;
  fill-color: #ABD9E9;
}
way[@timestamp=~/2018.*/] {
  color: #E0F3F8;
  fill-color #E0F3F8;
}
way[@timestamp=~/2017.*/] {
  color: #FFFFBF;
  fill-color: #FFFFBF;
}
way[@timestamp=~/2016.*/] {
  color: #FEE090;
  fill-color: #FEE090;
}
way[@timestamp=~/2015.*/] {
  color: #FDAE61;
  fill-color: #FDAE61;
}
way[@timestamp=~/2014.*/] {
  color: #F46D43;
  fill-color: #F46D43;
}
way[@timestamp=~/2013.*/] {
  color: #D73027;
  fill-color: #D73027;
}
way[@timestamp=~/2012.*/] {
  color: #A50026;
  fill-color: #A50026;
}
way[@timestamp=~/2011.*/] {
  color: #A50026;
  fill-color: #A50026;
}
way[@timestamp=~/2010.*/] {
  color: #A50026;
  fill-color: #A50026;
}
way[@timestamp=~/200.*/] {
  color: #A50026;
  fill-color: #A50026;
}
}}