Table of Contents

Using Overpass to extract data from OpenStreetMap

I used the following Overpass files to measure the amount of cycle lanes in cities:

Total length of highways in Westminster

[out:csv(number,length)];
{{geocodeArea:Westminster}}->.searchArea;
way["highway"]["highway"!="cycleway"]["highway"!="bridleway"]["highway"!="footway"]["highway"!="path"]["highway"!="service"]["access"!="private"](area.searchArea);
make stat number=count(ways),length=sum(length());
out;

Total length of segregated cycleways in Westminster

[out:csv(number,length)];
{{geocodeArea:Westminster}}->.searchArea;
way["highway"="cycleway"]["foot"!="designated"](area.searchArea);
make stat number=count(ways),length=sum(length());
out;

Total length of segregated cycleways in Camden

[out:csv(number,length)];
{{geocodeArea:London borough of Camden}}->.searchArea;
way["highway"="cycleway"](area.searchArea);
make stat number=count(ways),length=sum(length());
out;

Show all segregated cycleways in Westminster on a map

Click the zoom icon once generated

[out:json];
{{geocodeArea:Westminster}}->.searchArea;
(
  way["highway"="cycleway"]["foot"!="designated"](area.searchArea);
);
out body;
>;
out skel qt;

Show only roads in Westminster on a map

[out:json];
{{geocodeArea:Westminster}}->.searchArea;
(
  way["highway"]["highway"!="cycleway"]["highway"!="bridleway"]["highway"!="footway"]["highway"!="path"]["highway"!="service"]["access"!="private"](area.searchArea);
);
out body;
>;
out skel qt;

Show segregated cycle routes on current viewed map

[bbox:{{bbox}}];
( 
  way["highway"="cycleway"];
);
out geom;

Other things I didn't write details for

[out:csv(length,value)];
area[name="London"]->.a;
way[highway](area.a);
for (t["highway"])
{
  make stat value=_.val,length=sum(length());
  out;
}
[out:csv(length,value)];
area[name="London"];
way[highway="cycleway"];
out
for (t["highway"])
{
  make stat value=_.val,length=sum(length());
  out;
}
[out:csv(length,value)];
area[name="Isle of Man"]->.a;
way[highway="cycleway"](area.a);
for (t["highway"])
{
  make stat value=_.val,length=sum(length());
  out;
}
[out:csv(length,value)];
area[name="Isle of Man"]->.a;
way[highway="cycleway"](area.a);
make stats length=sum(length());
out;
[out:csv(length,value)];
area[name="London"]
.way[highway="cycleway"]
.way[cycleway="sidewalk"];
make stats length=sum(length());
out;
[out:csv(length,value)];
area[name="London"];
way[highway="cycleway"](area)->.a;
way[highway="cycleway"](area)->.b;
way.a.b;
make stats length=sum(length());
out;
[out:csv(length,value)];
area[name="London"];
way[highway="cycleway"](area)->.a;
way[cycleway!="sidewalk"](area)->.b;
way[foot!="yes"](area)->.c;
way.a.b.c;
make stats length=sum(length());
out;