You are not logged in.

#1 2021-10-03 07:50:52

BLE
Member
From: Wetterau
Registered: 2021-07-10
Posts: 283

Overpass: rechnen mit aktuellem Datum

Ich habe eine Abfrage in Overpass, die mir alle nodes, die einen Namen haben und seit 5 Jahren nicht mehr geändert wurden, anzeigt:

(
  node [name](if:timestamp()<"2016-10-01")({{bbox}});
);
out body;
>;
out skel qt;

Gibt es eine Möglichkeit diesen String 2016-10-01 dynamisch zu gestallten, etwa wie today() - (5 * 365) ?

hmm

Offline

#2 2021-10-03 08:20:24

mmd
Member
Registered: 2010-11-06
Posts: 1,961

Re: Overpass: rechnen mit aktuellem Datum

Mit der date Erweiterung von overpass turbo geht sowas: https://wiki.openstreetmap.org/wiki/Ove … bo_Queries

Offline

#3 2021-10-03 08:33:05

BLE
Member
From: Wetterau
Registered: 2021-07-10
Posts: 283

Re: Overpass: rechnen mit aktuellem Datum

Das hatte ich schon probiert. Da ich aber eine Fehlermeldung bekam, dachte ich, dass mein Gedanke falsche wäre:

node [name](if:timestamp()<{{date:1825 day}})

Wenn man aus der C Programmierung kommt, hat man mit dieser Sprache manchmal seine Probleme. Das die "" trotz einer Funktion bleiben müssen, muss ich erst noch verinnerlichen. roll

So klappt es.

node [name](if:timestamp()<"{{date:1825 day}}")

Danke für die Unterstützung

big_smile

Offline

#4 2021-10-03 09:30:27

smootheFiets
Member
Registered: 2019-12-09
Posts: 473

Re: Overpass: rechnen mit aktuellem Datum

Geht das auch in der JOSM-Suchfunktion bzw. in validator.mapcss? Ich hab mir, aus ähnlichen Gründen, ein Validator-File gebastelt, das vor diversen Objekten warnt, die lange nicht mehr angefasst worden sind: https://github.com/smootheFiets/validat … tor.mapcss

Leider hab  ich da das Datum "fest verdrahten" müssen, à la

[JOSM_search("timestamp:/2019")

(Timestamp vor 2019)

Ein Datum relativ zu heute, wie in BLEs Frage, wäre viel eleganter. Kann JOSM das?

Offline

#5 2021-10-03 14:16:48

the-asca
Member
Registered: 2020-05-18
Posts: 280

Re: Overpass: rechnen mit aktuellem Datum

BLE wrote:

Wenn man aus der C Programmierung kommt, hat man mit dieser Sprache manchmal seine Probleme. Das die "" trotz einer Funktion bleiben müssen, muss ich erst noch verinnerlichen.

Weil das {{...}} nicht zur Sprache von Overpass dazugehört ;-)
Overpass ist eine API, welche 2 (Overpass QL was du nutzt und Overpass XML) Abfragesprachen versteht. Und darauf aufbauend gibt es u.a. Overpass-Turbo als Webclient in welchem man halt mit den Sprachen eine Abfrage fomulieren kann. Und Overpass-Turbo bietet mit den {{...}}-Dingern halt Zusatzfunktionen an, welche umgewandelt werden, bevor es als Abfrage an die Overpass-API geht.
So wird aus {{bbox}} halt die "4 Zahlen mit Komma getrennt"-Kolonne, entsprechend dem, was die in OverpassTurbo dargestellte BBox halt ist. Overpass selbst kennt kein {{bbox}} und auch kein {{date:...}}.
Daher muss dann halt weiterhin das "" drum rum, weil es an Overpass halt tatsächlich als fester Datums-String geht, welcher lediglich von Overpass-Turbo jeweils dynamisch erzeugt wird.

Du würdest ja auch das hier (dein Eingangsbeispiel ohne "") als falsch betrachten, oder?

(
  node [name](if:timestamp()<2016-10-01)({{bbox}});
);
out body;
>;
out skel qt;

(Syntaktisch nur deshalb richtig, weil 2016-10-01 halt 2005 als Zahl ergibt xD)

Gruß,
asca


Mein Name ist nur "asca" (kleines a und ohne "the-"), bitte so schreiben, vielen Dank.
Alle Edits meiner Kommentare sind (nur) Typofixes, wenn nicht explizit anders angegeben.

Offline

#6 2021-10-03 16:08:00

BLE
Member
From: Wetterau
Registered: 2021-07-10
Posts: 283

Re: Overpass: rechnen mit aktuellem Datum

Muss ich mir das also so vorstellen, dass Overpass Turbo als Web-Anwendung eine Spracherweiterung der API-Sprache hat. Und diese Erweiterungen wie ein Interpreter dann, zwar nicht in Maschinensprache, aber in die original Abfragesprache übersetzt?



Vielleicht werde ich jetzt bei dem kommenden Usselwetter doch mal das Wiki intensiver konsultieren.

Puuuh, roll
Handbücher lesen, mad
war noch nie mein Ding sad

smile

Offline

#7 2021-10-03 16:40:05

mmd
Member
Registered: 2010-11-06
Posts: 1,961

Re: Overpass: rechnen mit aktuellem Datum

Das läuft eher nach dem Prinzip "Text suchen und ersetzen": Overpass turbo sucht die {{ .. }} mit regulären Ausdrucken und ersetzt einfach Teile, wenn sie zu den Shortcuts passen.

Ein paar Links zur Implementierung::
https://github.com/tyrasd/overpass-turb … ery.js#L27
https://github.com/tyrasd/overpass-turb … ts.js#L138

Offline

Board footer

Powered by FluxBB