Overpass-Turbo - kleiner / gleich / größer

hi !

muss mal eben eine Abfrage bauen um alles zu finden wo Name < 1000 ist. Querdenker werden schon richtig auf die Kleingärten tippen.

Leider komme ich aktuell nicht in das wiki - kann mir einer weiterhelfen wie das geht? z.b. auf Basis von http://overpass-turbo.eu/s/1ac

{{key=allotments}}
{{value=garden}}
<osm-script output="json">
  <union>
    <query type="node">
      <has-kv k="{{key}}" v="{{value}}"/>
      <!-- NAME < 1000 -->
      <bbox-query {{bbox}}/>
    </query>
    <query type="way">
      <has-kv k="{{key}}" v="{{value}}"/>
      <!-- NAME < 1000 -->
      <bbox-query {{bbox}}/>
    </query>
  </union>
  <print mode="body"/>
  <recurse type="down"/>
  <print mode="skeleton"/>
</osm-script>

Das nicht alle Wert richtig liegen (die von - bis) ist mir schon bewußt !

Gruß Jan :slight_smile:

Mit

<has-kv k="name" regv="{{regexp}}"/>

kann man einen Regülären Ausdruck nutzen, bei dem du dann einfach einen für eine dreistellige Zahl nehmen kannst (dazu siehe Wikipedia).

hi !

wenn ich mir das im Wiki durchlese und vorab

{{regexp=[0-9]{3}}}

ergänze - im ganzen dann:



...
    <query type="node">
      <has-kv k="{{key}}" v="{{value}}"/>
      <has-kv k="name" regv="{{regexp}}"/>
      <bbox-query {{bbox}}/>
    </query>
...

dann bekomme ich eine Fehlermeldung - vermutlich wegen der 3-fach } !

Kann mir einer weiterhelfen ? Regex ist auch nicht so meine Stärke.

Gruß jan :slight_smile:

Das sollte klappen:


<has-kv k="name" regv="^[0-9]{3}$"/>

+10

Wenn ich das richtig sehe, liefert das Ergebnis aber zunächt nur die rein nummerischen Werte.
Parzellenbezeichnungen wie “650a” oder “650+651” oder ähnliches werden nicht abgefragt…

weist Sven darauf hin.

hi !

sollte das schon mit einschließen !

Gruß Jan :slight_smile:

Da fehlen dann aber doch die ein und zweistelligen Nummern. Daher wohl besser:


<has-kv k="name" regv="^[0-9]{1,3}$"/>

Richtig angemerkt. Möchte man auch Wertebereiche (577-578) und Buchstaben am Ende (650b) berücksichtigen:


      <has-kv k="name" regv="^([0-9]{1,3}[a-z]*)(-[0-9]{1,3}[a-z]*)?$"/>

Tolle Beispiele - ab ins wiki damit!

Jan

Ich häng mich ran:

Vorausgeschickt: Ich hab’ noch nie groß mit RegEx was gemacht und bin direkt zurückgeschreckt. Die Abfrage oben sieht mir als Laie sehr nach Check auf die Stelligkeit von Werten aus, richtig?

Ich will mit Overpass Turbo alle Polygone holen, die in einem bestimmten Key “<= [x]” als Wert haben. Beispiel: Geschosszahlen von Gebäuden (building:levels). Das kann dann auch mal 11 sein. Wie geht man da möglichst simpel ran?

Ich weiss nich, ob ich hier richtig bin, aber das kommt dem schon nahe, wenn ich das richtig verstehe.
Ich suche Werte, die eine bestimmte Zahl an einer unbestimmten Stelle enthalten, Beispiel:
Mittels:

-01:00;

möchte ich Nodes oder ways dieser Art:

opening_hours=Mo-Th 17:00-01:00; Fr-Su 17:00-04:00

finden.
Optimal wäre, wenn die Abfrage dahingehend so flexibel ist, dass sie von 00:01 bis 06:00, also alles “kurz” nach Mitternacht findet.

Hintergrund der Abfrage ist, dass das Beispieltagging falsch ist, da hinter dem Semikolon eine Stunde vom Donnerstag abgeschnitten wird, da gehört richtigerweise ein Komma hin. Habe in einem kleinen Bereich mit stumpfen old-style-ablesen 3 Fehler der Art gefunden, grössere Bereiche ohne Maschine abgrasen wäre recht stumpfsinnig :wink:

Hilft Dir das weiter:
http://overpass-turbo.eu/s/eD6
? und Gruß

Da wirst du auf reguläre Ausdrücke zurückgreifen müssen:
http://overpass-turbo.eu/s/eD9

node[opening_hours~"-0?[1-6]:[0-5][0-9]"]({{bbox}});
node[opening_hours~"-0?0:[^0][^0]"]({{bbox}});

Erst einmal alles mit einer Endzeit zwischen 1 und 6. und in der zweiten Zeile noch zusätzlich alles mit 00: außer 00:00.
Die Stunden erlauben auch eine einstellige Angabe, da die zweite Ziffer doch recht häufig vergessen wird.

Danke euch Beiden. Mueschel: gleich mehrere echte Fehler gefunden, grossartig, werde das morgen ma abarbeiten und schauen ob ich da noch paar Extrawünsche finde. So ist das scheinbar erstmal gut.

Edit: @Jo Cassel auch sehr hilfreich, auch wenn’s nur 1:00 matcht

Eine kleine Korrektur muss ich noch nachreichen - zwischen dem Bindestrich und Uhrzeit darf natürlich auch ein Leerzeichen sein:
http://overpass-turbo.eu/s/eDb

Blöd, hatte das beim Schreiben der Anfrage aufm Schirm und dann vergessen, drauf hinzuweisen. schön dass Du es selbst gemerkt hast. (Anderererseits gibts “Fehler” dieser Art (zumindest in .de) nur welche die weniger als 2 Wochen alt sind)

In der Abfrage fehlte noch das Semikolon und node war doppelt.
Aktuelle zusätzlich auf boundary angepasste Version: http://overpass-turbo.eu/s/eDw
In Thüringen hab ich 32 Pois gefunden, scheint mir vom Gefühl her etwas wenig, aber kann auch hinkommen. Schaue mir jetzt mal den Rest von .de an…