Hallo Miteinander,
seit einigen Jahren nutze ich OSM mit OSMAnd und bin immer wieder begeistert wie gut alles funktioniert. Für den nächsten Urlaub wollte ich mir mal eine POI File mit Motorradhändlern erstellen um einfach im Falle des Falles reagieren zu können.
Über Overpass die folgende Abfrage kreiert:
[out:json][timeout:125];
// gather results
(
// query part for: “brand=KTM”. Do it using Regex expression .* = all before / after and i all small and capital letters
node["shop"="motorcycle"] ["brand"~".*KTM.*",i] ({{bbox}});
node["shop"="motorcycle"] ["name"~".*KTM.*",i] ({{bbox}});
node["shop"="motorcycle"] ["brand"~".*HUSQVA.*",i] ({{bbox}});
node["shop"="motorcycle"] ["name"~".*HUSQVA.*",i] ({{bbox}});
);
// print results
out body;
>;
out skel qt;
Und hier beginnen die Herausforderungen.
viele dieser Händler sind als Punkt aus meinem Blickwinkel richtig getaggt aber ebenfalls eine große Anzahl als Buildings, die aber in dieser Form in OSMAnd und wahrscheinlich auch vielen anderen Programmen nicht dargestellt werden.
Mich interessiert hier natürlich, wich ich das für mich in den Griff bekommen kann, aber auch was zu tun ist, um diese Situation innerhalb von OSM zu diskutieren und gegebenenfalls zu vereinheitlichen. Angenommen, mann könnte in OSM die POIS auf diese Situation (Punkt vs. Building) checken, würde sich zeigen, wieviele POIs aufgrund dieser Taggung nicht sichtbar sind.
das Zauberwort sollte hier einfach nur “center” heißen, siehe dieses Beispiel hier, oder eben die Dokumentation.
Das Problem was es aber dabei geben dürfte ist, dass der “Zentrumspunkt” der Fläche aber nicht normal unter lat/lon sondern in einem verschachtelten Untertag als lat/lon ausgegeben wird
Osmfilter hat eine Option alle Objekte in einen Punkt zu verwandeln. Oder anders ausgedrückt: Overpass-API ist für den genannten Anwendungsfall eher ungünstig.
Ist das wirklich ein Problem? Kann osmand kein gpx, kml oder geojson importieren? Dann sollte die Export Funktion in Turbo doch weiterhelfen.
out center gibt doch nur Punkte aus, nur die Formatierung ist leicht abweichend. Komplett einheitlich formatiert wird mit 0.7.55 möglich sein, oder man nimmt halt csv als Ausgabeformat.
In OSMAnd werden die mit Building getaggten Points gar nicht angezeigt. Wenn ich das Ganze über KML und Maps anzeige werden alle Building Tags miteinander als Route verbunden - das ist dann auch Banane.
Ich muss leider auch dazusagen, bin eher Anwender als Programmierer.
Wenn toc-rox sagt: “Overpass-API ist für den genannten Anwendungsfall eher ungünstig.” was würdet Ihr für einen solchen Fall eher empfehlen?
In Eurer DB sind so viele nützliche Dinge vergraben, es wäre schade, wenn das nicht intensiver nutzbar wäre.
Also ich habe es gerade mit meiner oben erwähnten Beispielabfrage von München getestet: als GPX exportiert und auf meiner SD Karte die Datei in den tracks Ordner kopiert … alle 3 Münchner Shops werden nun als rote Sterne (Waypoints) angezeigt … auch der im Südwesten als “Building” getaggte Shop
Hier mal ein Beispiel um alle Shops (Nodes, Ways, Rels) für den Regierungsbezirk Münster zu ermitteln. Das Ergebnis ist eine OSM-Datei die nur Nodes enthält:
echo "OSM-Daten für den Regierungsbezirk Münster laden (geofabrik) ..."
curl --location --url http://download.geofabrik.de/europe/germany/nordrhein-westfalen/muenster-regbez-latest.osm.pbf --output muenster-regbez-latest.osm.pbf
echo " "
echo "Tags fuer 'bBoxArea' und 'bBoxWeight' hinzufuegen; Daten vom pbf- ins o5m-Format konvertieren ..."
./osmconvert muenster-regbez-latest.osm.pbf --max-objects=600000000 --add-bboxarea-tags --add-bboxweight-tags --verbose -o=muenster-regbez-latest.bbox.o5m
echo " "
echo "Alle Wege und Relationen in Nodes umwandeln (loescht die umgewandelten Objekte) ..."
./osmconvert muenster-regbez-latest.bbox.o5m --max-objects=600000000 --verbose --all-to-nodes -o=muenster-regbez-latest.alltonodes.o5m
echo " "
echo "Daten auf Nodes mit dem Tag shop=* reduzieren ..."
./osmfilter muenster-regbez-latest.alltonodes.o5m --keep-nodes="shop=*" -o=muenster-regbez-latest.shops.osm
echo " "
Hallo Harald, vielen Dank. Ich habe das nach Deinem Vorschlag gemacht und es hat prima funktioniert. Gibt es vielleicht eine einfache Möglichkeit die Anzahl der POIs auszugeben um hier ein Gefühl zu bekommen? Bereits gefunden → out count;
Ich werde mir jetzt mal die Overpass Doku anschauen, danke für den Link weiter oben.
Freue mich, wenn diese Diskussion auch anderen hilft.