Guten Abend,
ich möchte mit der Overpass API Gebäude die mehr als X Stockwerke haben finden.
Die Abfrage nach einer bestimmten Anzahl ist relativ einfach.
way({{bbox}})[highway=motorway]
[maxspeed](if:t["maxspeed"]>120);
out geom;
Ich schaffe es nicht die Abfrage so umzubauen das sie auch für Gebäude funktioniert, ich habe dazu auch drei Fragen.
highway=motorway und building:levels
Warum wird der highway mit z. B. maxspeed=* und die Gebäude mit building:level=* näher beschrieben ?
Es gibt bestimmt einen Grund warum das für einen Neuling nicht einheitlich ist oder ?
Was bedeutet das t in
if:t[..
Dazu habe ich leider keine Erklärung gefunden.
Mein Ausdruck liefert in Köln keine Daten zurück, obwohl ich glaube das es dort Gebäude mit mehr als zwei Stockwerken gibt:
area({{bbox}})[building=apartments]
[levels](if:t["levels"]>2);
out geom;
Man sollte bei 3D die “building:part” nicht vergessen. Edit: Und die Relationen.
Außerdem haben bei weitem nicht alle Gebäude eine Eigenschaft, wie “building=apartments”. Es gibt sehr viele “yes” und knapp 8000 Values: https://taginfo.openstreetmap.org/keys/building#values
[out:json][timeout:45];
// gather results
(
way["building"](if:t["building:levels"]>=10)({{bbox}});
way["building:part"](if:t["building:levels"]>=10)({{bbox}});
);
// print results
out body;
>;
out skel qt;
Bei größeren Anlagen verzichte ich schon immer darauf, dem ganzen Gebäude 3D-Eigenschaften zu geben. Die gehen Dir dann durch die Lappen
Bei OSM gibt es nur node, way und relation als Datentyp. Die meisten building sind als (closed-) way eingetragen, was anhand des keys dann als Fläche interpretiert wird.