Liste aller places als CSV mit Land

[out:csv(
  "place:country",
  "wikipedia", 
  "place", "name", "population")][timeout:90];
(
  nwr["place"="city"]({{bbox}});
  nwr["place"="town"]({{bbox}});
)->.all;
area[admin_level=2]["ISO3166-1"]({{bbox}});
foreach ->.country
{
  nwr.all(area.country);
  convert info ::=::,"place:country"=country.u(t["ISO3166-1"]);
  out;
}

Die beiden nwr-Selektionen kommen in eine Union, damit auch Ergebnisse aus beiden ankommen. Nach .all um das Ergebnis in der ersten Zeile im forech nutzen zu können.

Die Suche nach area beschafft möglichst genau die Ländergrenzen, und das foreach iteriert dann darüber. Da es von mehreren Staaten mehrere Landesgrenzen gibt (z.B. Frankreich komplett vs. Hexagon), möglichst mit ISO3166-1 so beschränkt, dass jeweils nur ein Land iteriert wird. Dann per räumlicher Abfrage jeweils auf das Land beschränkt.

2 Likes