Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Overpass-API-Request als JSON (https://www.delphipraxis.net/204311-overpass-api-request-als-json.html)

Hobbycoder 18. Mai 2020 11:41

Overpass-API-Request als JSON
 
Hi,

ich mache bei einer GPS-Tracker-Auswertung eine Abfrage auf die zulässige Höchstgeschwindigkeit. Die Daten hole ich mir über die Overpass-API.
Zur Zeit frage ich jede Wegstrecke zwischen 2 aufeinander folgenden Wegpunkten ab, was auch im Großen und Ganzen funktioniert. Nur ist die Anzahl der Abfragen zu hoch, was ab und zu mal zu einem "Too many request" führt, und auch zu langsam ist.

Deswegen hole ich mir jetzt alle Daten zu der gesamten Fahrtstrecke und such mir alles raus, was ich brauche. Das geht um einiges schneller.
http://www.overpass-api.de/api/xapi?...66,52.1204483]

Nur hätte ich das ganze lieber aus JSON, was auch laut API irgendwie gehen soll. Nur habe ich bisher nicht herausbekommen, wie ich das in den Syntax einfließen lassen kann. Ist ja auch mehr oder weniger komplex.

Hat jemand eine Idee, wie ich in die o.g. Abfrage reinbekomme?

Uwe Raabe 18. Mai 2020 12:29

AW: Overpass-API-Request als JSON
 
Könnte das helfen?
Zitat:

To get a response in format JSON, start the request with a [out:json] directive, for example:

/api/interpreter?data=[out:json];out;

Hobbycoder 18. Mai 2020 13:59

AW: Overpass-API-Request als JSON
 
Ja, das habe ich probiert. Nur weiß ich nicht, wie ich das einbauen soll.

Probiere ich das so:
Code:
http://www.overpass-api.de/api/xapi?data=[out:json][maxspeed=][bbox=9.3555183,52.1029216,9.3617866,52.1204483]
kommt
Zitat:

Error in [data=[out:json][maxspeed=][bbox=9.3555183,52.1029216,9.3617866,52.1204483]]:
Error: Query must start with 'node', 'way', 'relation', or '*'
Oder so:
Code:
http://www.overpass-api.de/api/xapi?*data=[out:json][maxspeed=][bbox=9.3555183,52.1029216,9.3617866,52.1204483]
dann kommt
Zitat:

Error in [*data=[out:json][maxspeed=][bbox=9.3555183,52.1029216,9.3617866,52.1204483]]:
Error: Text before '[' found.
Oder auch das hier
Code:
http://www.overpass-api.de/api/xapi?*[maxspeed=][bbox=9.3555183,52.1029216,9.3617866,52.1204483];data=[out:json];out
bringt mich nicht zum erfolg.

Ich finde auch nirgends eine (für mich verständliche) Anleitung, wie ich das jetzt schreiben muss.

himitsu 18. Mai 2020 14:16

AW: Overpass-API-Request als JSON
 
[GOOGLE]overpass-api out:json[/GOOGLE] -> https://gis.stackexchange.com/questi...rpass-api-call

Zitat:

You can't get a JSON result from the XAPI-compatibility endpoint. Instead, use the standard Overpass API (“interpreter”) endpoint and put the [out:json]; at the very start of your ql query:
Code:
https://www.overpass-api.de/api/interpreter?data=[out:json];node[highway=speed_camera](43.46669501043081,-5.708215989569187,43.588927989569186,-5.605835010430813);out%20meta;
(note the different ordering of the bbox coordinates compared to the xapi request!)

TiGü 18. Mai 2020 14:31

AW: Overpass-API-Request als JSON
 
Code:
https://www.overpass-api.de/api/interpreter?data=[out:json];node[maxspeed=](52.1029216,9.3555183,52.1204483,9.3617866);

https://www.overpass-api.de/api/interpreter?data=[out:json];node[maxspeed=](9.3555183,52.1029216,9.3617866,52.1204483);
Ergebnismenge ist zwar leer, aber es gibt zumindest keine Fehler. :-)
Nach: https://gis.stackexchange.com/questi...rpass-api-call

Hobbycoder 18. Mai 2020 17:05

AW: Overpass-API-Request als JSON
 
Liste der Anhänge anzeigen (Anzahl: 2)
Leider trifft es das doch nicht so ganz.

Hie mal die beiden Abfragen zum Vergleich.

XML:
Code:
http://www.overpass-api.de/api/xapi?*[maxspeed=][bbox=9.3555183,52.1029216,9.3617866,52.1204483]
Ergebnis in XAPI in Anhang

JSON:
Code:
https://www.overpass-api.de/api/interpreter?data=[out:json];node[maxspeed=](52.1129216,9.3605183,52.1204483,9.3617866);out;
Ergbnis in der JSON im Anhang

Der Unterschied ist, in der XML sind Way's enthalten, wo ich die zulässigen Höchstgeschwindigkeiten finden. Die Way's enthalten dann die Referenzen auf die Node's mit den Koordinaten. So könnte ich mir aus der Koordinatenmenge die passende heraussuchen.
In der JSON sind nur die Nodes. Und da gibt dann maximal die Blitzer, welche mich nicht interessieren.

himitsu 18. Mai 2020 17:13

AW: Overpass-API-Request als JSON
 
Einfach nochmal die BuzzWords deiner URL genommen und Google damit gefüttert
[google]overpass-api interpreter out:json maxspeed[/google]

die ersten beiden Links sind dann
http://overpass-api.de/api/interpret...maxspeed];out;
https://wiki.openstreetmap.org/wiki/...API_by_Example

* das maxspeed am Ende, ohne = (liefert was)
* die Koordinaten getauscht (Ergebnis ist leer)
* und dann noch way zu node (findet wieder was)
Code:
http://overpass-api.de/api/interpreter?data=[out:json];way(around:10,53.6788398,-1.4992124)[maxspeed];out;
http://overpass-api.de/api/interpreter?data=[out:json];way(52.1129216,9.3605183,52.1204483,9.3617866)[maxspeed];out;
http://overpass-api.de/api/interpreter?data=[out:json];node(52.1129216,9.3605183,52.1204483,9.3617866)[maxspeed];out;

http://overpass-api.de/api/interpreter?data=[out:json];node[maxspeed](52.1129216,9.3605183,52.1204483,9.3617866);out;
http://overpass-api.de/api/interpreter?data=[out:json];[maxspeed]node(52.1129216,9.3605183,52.1204483,9.3617866);out;
http://overpass-api.de/api/interpreter?data=[out:json][maxspeed];node(52.1129216,9.3605183,52.1204483,9.3617866);out;
maxspeed nach vorne
* wieder leer
* und fehler
* und nochmal
also nur am Ende geht's ohne Fehler

Hobbycoder 18. Mai 2020 18:05

AW: Overpass-API-Request als JSON
 
Danke für die Unterstützung.

Ich habe jetzt mit diesen beiden Abfragen
Code:
http://overpass-api.de/api/interpreter?data=[out:json];way(52.1129216,9.3605183,52.1204483,9.3617866)[maxspeed];out;
http://overpass-api.de/api/interpreter?data=[out:json];node(52.1129216,9.3605183,52.1204483,9.3617866);out;
einmal die Way's mit den maxspeed Angeben und den dazugehörigen Nodes,
und in einer zweiten Datei die Nodes mit den Koordinaten. Ich denke daraus kann ich mir was zurechtbasteln. Mal sehen wie das so klappt.

Ich danke euch.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:10 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz