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;
}
}}