Overpass Query ground information für Koordinate

Hey

Ich würde gerne eine Overpass-Query absetzen, die mir sagt welche “Art von Boden” bei einer Koordinate ist.
Z.b. möchte ich sowohl landuse (grass, …) aber auch natural (water) wenn kein landuse gefunden wird abfragen.

hier ist meine bisherige Abfrage:

<osm-script output="json" timeout="25">
  <union>
    <query type="way">
      <has-kv k="landuse"/>
      <around lat="48.009595" lon="11.117341" radius="500"/>
    </query>
    <query type="way">
      <has-kv k="amenity"/>
      <around lat="48.009595" lon="11.117341" radius="500"/>
    </query>
    <query type="way">
      <has-kv k="natural"/>
      <around lat="48.009595" lon="11.117341" radius="2000"/>
    </query>
  </union>
  <print mode="body"/>
  <recurse type="down"/>
  <print mode="skeleton" order="quadtile"/>
</osm-script>

leider bekomme ich hier z.b. auf der angegebenen Koordinate (Ammersee) nicht wie erwartet water zurück.

Könnt ihr mir hier helfen?

Mit besten Grüßen
Tortoc

Das Problem ist, dass wenn du eine Koordinate mitten im Wasser abfragst du kein Ergebnis kriegst, wenn dein Around-Filter nicht die Grenze schneidet.
Außerdem ist der See als Relation erfasst.

Tests:
Koordinate: http://www.openstreetmap.org/?mlat=52.3573&mlon=9.7411#map=15/52.3553/9.7510

http://overpass-turbo.eu/s/b2R , mit Radius 2500:

[out:json][timeout:25];
// gather results
(
  // query part for: “natural=water”
  relation(around:2500,52.3573,9.7411)["natural"];
);
// print results
out body;
>;
out skel qt;

http://overpass-turbo.eu/s/b2T , mit Radius 25:

[out:json][timeout:25];
// gather results
(
  // query part for: “natural=water”
  relation(around:25,52.3573,9.7411)["natural"];
);
// print results
out body;
>;
out skel qt;

(muss natürlich noch erweitert werden um die anderen Typen von Landbedeckung)

Cool! Danke!

Es kommt also auf den radius an…

d.h. es wäre wohl sinnvoll eine Logik einzubauen die bei unzureichendem Ergebnis einfach mal den Radius erhöht und erneut abfrägt…

Welche Arten von Bodenbedeckung gibt es denn noch?
Würden die “Arten der Bodenbedeckung” dann in relation(…)[“natural”] anstelle von natural eingetragen? z.b. Landuse?
Sorry… habe die (für mich im Moment verwirrende) API noch nicht wirklich studiert…

Beste Grüße

Es gibt in OSM leider ein Durcheinander bei der Bodenbedeckung.

Es wird teilweise z.B. der Bewuchs erfasst (natural=heath für Heideflächen), teilweise aber auch die Nutzungsart (landuse=residential). Es ist jetzt dem Mapper überlassen ob er sagt “Hier ist ein Industriegebiet” oder “Hier ist eine Wiese”, wenn es in der Realität eine Wiese in einem Industriegebiet ist.

Ein bisschen Problembeschreibung gibts auf der Seite http://wiki.openstreetmap.org/wiki/Landcover und den verlinkten. Guck da mal durch, und überlege was genau du willst.

Kommst du beruflich aus der ökologischen Ecke, d.h. hast du schon klare Vorstellungen, was/wie Landnutzung für dich bedeutet?

Ich komme beruflich aus der Ecke der Informatiker.

Ich hab da so ne fixe Idee für ne App.
Prinzipiell würde ich gerne ohne viel Daten-Overhead wissen welche Bodenbedeckung an Koordinate XY vorherrscht. Sprich man läuft mit dem Handy durch die gegend und bekommt das dann angezeigt. Deswegen teste ich gerade ein wenig. :wink:

So wie ich das verstanden habe gibt es also mehrere “Tags” anhand derer die Bodenbedeckung festgelegt wird!?
landuse=*
surface=*
natural=*
landcover=*

Kann ich diese dann entsprechend mit:
relation(around:2500,52.3573,9.7411)[“landuse”];
relation(around:2500,52.3573,9.7411)[“surface”];
relation(around:2500,52.3573,9.7411)[“natural”];
relation(around:2500,52.3573,9.7411)[“landcover”];
abfangen?

Gibt es eine Möglichkeit dann schon in einer Abfrage eine leere Abfrage erst gar nicht auszugeben sondern mit der nächsten weiter zu machen?