wie wär’s mit einer Wochen-/Monatsaufgabe fuel:*?

Eine kurze Durchsicht aller Mainzer Tankstellen per Overpass Turbo zeigt mir, daß bei einigen zwar lobenswerterweise Öffnungszeiten und Teflonnummern getaggt sind, aber nur bei sehr wenigen die angebotenen Spritsorten.

Mich als Autogasfahrer interessiert natürlich besonders, welche Tanke fuel:lpg=yes hat (bzw. verdient). Aber auch Fahrer, die nicht unter ROZ 100 tanken, werden es zu schätzen wissen, wenn unsere Datenbank das leistet. Und selbst anspruchslose Benzinfahrer freuen sich, nach dem Ansteuern einer amenity=fuel sich nicht an einer reinen Dieseltankstelle wiederzufinden. Und theoretisch kann amenity=fuel ohne weitere Spezifikation auch ein Verkauf von Grillkohle sein.

OsmAnd kann übrinx unterwegs gezielt nach Spritsorten an Tankstellen suchen, sofern die Datenbank sie kennt. Von anderen Navis weiß ich es nicht.

Dabei könnte man nochmal einige Tagging-Feinheiten klarstellen:

  • So was wie name=SHELL + brand=Shell + operator=Shell ist Riesenquatsch und gehört schon deshalb editiert
  • Die Marke („Shell“) gehört in brand=*
  • In operator=* gehört nur die genaue Bezeichnung des dahinterstehenden Unternehmens, z.B. Esso Deutschland GmbH
  • name=* wird nur dann gesetzt, wenn die Tankstelle einen echten Eigennamen hat
  • Der lokale Pächter gehört in tenant=* (halte ich für überaus verzichtbar)
  • fuel:lpg und fuel:cng sind zwei komplett unterschiedliche Treibstoffe (eine Wiesbadener Tanke habe ich hier schon trauernd korrigieren müssen)

–ks

Key:operator nun mit oder ohne Gesellschaftsform? Wiki empfiehlt ohne, wobei das wieder einmal so eine völlig unsinnige Kann-Regelung ist (denn es geht gerade nicht um Vielfalt beim Taggen).

Aber davon mal ganz abgesehen: Woher will man wissen, wer der Operator ist? Aus Steuergründen betreiben diese Unternehmen oft dutzende Tochtergesellschaften, die wiederum jede nur für einen Teil der Tankstellen zuständig ist. Ich würde deshalb mal behaupten, dass das größtenteils eine Falschinformation sein wird, weil sie auf reiner Spekulation fußt.

Ist ja grundzipiell richtig nur, dass operator kein Schw… auswertet, weder Smartie-App noch die Standard-Ansicht auf osm.org. Ich Blödmann draußen eine Notiz gemacht, nur um dann zu merken: einer hat “Shell” vom Namen nach Operator verschoben. Eine Note habe ich zu dem Thema auch schon gesehen.

Gruß Thomas

Zunächst: Operator wäre falsch, sondern prinzipiell gehört eine Bezeichnung wie “Shell”, “OMV” oder “Aral” auf Key:brand, denn es ist eine reine Markenbezeichnung. Operator wäre das dahinterstehende Unternehmen, welches üblicherweise einen anderen Namen hat und zudem auch gar nicht unbedingt so leicht zu ermitteln ist.

Auch wird das durchaus ausgewertet. OsmAnd rendert beispielsweise diese Tankstelle als OMV, obwohl kein Name daran steht, sondern nur Brand getaggt wurde (Operator würde ohnehin auch erst als letzte Rückfallmöglichkeit genommen).

Und natürlich die alte Leier: Es wird nicht für den Renderer getaggt. :wink:

Und daran wird sich auch nie was ändern, solange brav name=* dafür mißbraucht wird.

Seit wann schreiben wir semantisch falsches Zeug in die Datenbank, nur weil Autoren von Auswertern es nicht für nötig halten, die richtigen Tags auszuwerten? Fehler durch Gegenfehler auszugleichen war noch nie eine gute Idee.

–ks

Ich wollte bloß aufzeigen wohin das führt. Ich schrieb ja das es richtig ist.

Bevor die Diskussion føllig abgleitet: Meine einkliche Absicht war das Taggen der jeweils angebotenen Spritsorten. Ob im operator=* die Rechtsform dazugehört, finde ich ein wenig zweitrangig.

snip kaputter code, siehe nächster post

–ks

Irgendwie ist deine Anfrage vermurkst. Du überschreibst mit der Suche nach den Ways die Ergebnismenge der Nodes. Zudem werden zum Schluss völlig willkürlich Ergebnismengen rekursiert.

Ich habe das mal gefixt:


[out:json][timeout:25];

(
  (node["amenity"="fuel"]({{bbox}}); - node["amenity"="fuel"][~"^fuel:.+"~"."]({{bbox}}););
  (way["amenity"="fuel"]({{bbox}}); - way["amenity"="fuel"][~"^fuel:.+"~"."]({{bbox}}););
);

out body;
>;
out skel qt;

Danke, ja, das war Flickschusterei :slight_smile: hab irnkwas zusammengeschrieben, das zu funktionieren schien.

–ks

Ich kenne mich nun leider nicht im Detail mit den von Overpass verwendeten Datenbanken aus, aber ich habe mich gerade gefragt, ob man die Anfrage nicht noch etwas optimieren könnte:


[out:json][timeout:25];
(node["amenity"="fuel"]({{bbox}}); - node[~"^fuel:.+"~"."];);
out body;

(way["amenity"="fuel"]({{bbox}}); - way[~"^fuel:.+"~"."];);
out body;
>;
out skel qt;

Man braucht kein Union konstruieren, sondern kann Nodes und Ways einfach hintereinander ausgeben. Das funktioniert auch.

Aber die Differenz funktioniert auf diese Weise nicht sonderlich gut (sehr viel langsamer bzw. Timeout), was darauf schließen lässt, dass für den Subtrahenden Anfragen über die Gesamtdatenbank laufen. Dabei dürfte das unnötig sein, denn die Ergebnismenge kann bei Differenz nicht größer werden als der Minuend. Also wäre es doch sinnvoll, dass man für den Subtrahenden keine neue Gesamtdatenbankabfrage durchführt, sondern einfach nur im Speicher auf der Ergebnismenge des Minuenden operiert. Denn die ist viel kleiner und damit schneller zu prozessieren als die Gesamtdatenbank. Damit wäre es aber wiederum sinnlos, beim Subtrahenden nochmals die gleichen Abgleiche wie [“amenity”=“fuel”] oder ({{bbox}}) durchzuführen, denn diese Beschränkungen sind durch den Minuenden schon vorgegeben. Aber so funktionert es eben offenbar nicht.

Besser als wie folgt, scheint es also nicht zu gehen:

[out:json][timeout:25];

(node["amenity"="fuel"]({{bbox}}); - node["amenity"="fuel"][~"^fuel:.+"~"."]({{bbox}}););
out body;

(way["amenity"="fuel"]({{bbox}}); - way["amenity"="fuel"][~"^fuel:.+"~"."]({{bbox}}););
out body;
>;
out skel qt;

Das ist richtig, beide Queries werden unabhängig voneinander ausgeführt. Am besten dazu einen Enhancement request aufmachen unter https://github.com/drolbr/Overpass-API/issues

Prinzipiell würde dieser Ansatz auch heute schon mit einem ._ funktionieren, wie im folgenden Beispiel zu sehen (link). Das bringt nochmal etwa 15% Laufzeitverbesserung, natürlich abhängig von der bbox:


(node["amenity"="fuel"]({{bbox}}); - node._[~"^fuel:.+"~"."];);
out body;

(way["amenity"="fuel"]({{bbox}}); - way._[~"^fuel:.+"~"."];);
out body;
>;
out skel qt;

Generell würde ich vorschlagen, für Laufzeitmessungen aktuell eher die frz. Instanz (api.openstreetmap.fr/oapi/) zu nutzen, in overpass turbo zu finden unter “Einstellungen” → “Server”, hier den dritten Eintrag auswählen.

Dort läuft schon die gerade aktuelle Version 0.7.53, allerdings ohne attic.
Laufzeitprobleme auf älteren Versionen sind nicht mehr so wirklich aussagekräftig.

Gut, wir ändern meinen Wochenaufgabenwunsch in „Overpass-Abfragen optimieren“. Für das Taggen von Spritsorten besteht offenbar nicht der geringste Bedarf.
sigh

–ks

OK, ich war mal so frei.

Sieh es doch positiv: Du konntest durch deine Aufgabe sogar noch zusätzliche Dinge bewirken - nämlich verborgenes Optimierungspotenzial in Overpass aufdecken. Das schafft nicht jeder mit einer Aufgabenstellung.

Für mich ist “Shell” der Name einer Tankstelle. So wie auch Supermärkte “Aldi” heissen, Restaurants “Burger King” und Hotels “Hilton”. Das sind alles eigentlich nur brand=*. Ich verwende das auch so im Sprachgebrauch, wenn ich bei “der Agip” war und nicht bei “der Tankstelle, die Agip-Produkte vertreibt”.

operator=* würde ich auch vermeiden. Wir werden es nicht schaffen, die Beziehung zwischen dem Geschäftsführer / Eigentümer / Pächter und der Ölgesellschaft rauszubekommen. Die Ölgesellschaft ist auch schwer zu ermitteln und eher sinnlos zu taggen. Bei Pächtern müsste die auf der Rechnung stehen, wenn man Benzin kauft und keine Schokoriegel. Bei angestellten Geschäftsführern auch bei Schokoladenrechnungen. Bei Eigentümern ist eben dieser der Betreiber, nicht der Ölkonzern.

Grüße
Max (ehemaliger Pächtersgatte :wink: )

Jein. Es ist halt unbefriedigend Dinge zu erfassen, die standardmäßig erwartet werden. Diesel und Benzin kriegt man halt “immer”. Und diejenigen, die Gas- oder Elektroautos fahren, sind nicht viele :wink:
Die Aufgabe wäre halt leichter, wenn man weniger verbreitete Dinge erfassen/prüfen soll - dann ist man auch schneller fertig.

+1 … und für alle die, die bisher immer das Argument “in name gehört das, was an dem Gebäude steht” - und das ist bei den von maxbe genannten nun mal der Fall -, brauchen jetzt gar nicht widersprechen :wink:

PS: Auch wenn ich als Softwareentwickler Redundanzen ungern sehe, so habe ich bei den paar handvoll Tankstellen neben den fuel-Sorten - um die es hier geht - eben auch redundant name, brand und Co erfasst.

Ja, dem mag vielleicht jetzt zu diesem Punkt so sein … aber was ist in ein paar Jahren, da kann sich das Verhältnis auch schneller als uns allen lieb ist drehen … also warum auch nicht hier “Vorreiter” in der Datenerfassung und -pflege (!) sein.

… die Aufgabe das könnte man noch um charging_station erweitern.

kicher Ich bin heute während meiner Tankstellenerkundungsfahrt (die noch viele Fehler offenbarte – http://www.openstreetmap.org/node/3966462517 war als Dieseltanke getaggt!) in 105 km über Land an immerhin drei reinen Autogas-Tankstellen vorbeigefahren, die als normale amenity=fuel in der Datenbank stehen, wo du aber weder Benzin noch Diesel kriegst. Da stehst dann nämlich zur Abwechslung du davor und guckst komisch, nicht ich.

Viele Autohäuser oder Vertreiber technischer Gase stellen sich eine Autogastankstelle auf den Hof, weil sie wirklich nur hingestellt werden muß – da kann ja unter Normalbedingungen nichts Flüssiges ins Grundwasser sickern, deshalb fällt der ganze Aufwand mit Ölabscheider und so weiter weg, den eine normale Tanke braucht. Zahlung per EC-Karte, 24/7 geöffnet, geringe Investition, langfristiges Geschäft, gerade in schwächer strukturierten Gegenden.

Nenee, die Spritsorten gehören für mich an eine Tankstelle ebenso wie die Leerungszeiten an einen Briefkasten.

–ks

Mir fehlt ein tag “Es gibt nur den getaggten Brennstoff.” Dann bräuchte man für eine reine Gas-Tankstelle nicht unzählige Male “no” angeben.

Baßtölpel

Hallöchen :slight_smile:

wird damit angegeben ob sie Gas haben, oder auch ob sie das verkaufen.

<<<Hamburg. Aral, Shell, Esso, Jet, Total – die großen Tankstellenketten in Deutschland haben den Pächtern und Betreibern ihrer Stationen empfohlen, Kunden vorübergehend kein Erdgas mehr zu verkaufen. Zuvor war es zu einem schweren Unfall beim Betanken eines Erdgasautos gekommen. Das Abendblatt beantwortet die wichtigsten Fragen zu den Gründen und den Folgen des Verkaufsstopps.>>>
http://www.abendblatt.de/hamburg/article208252507/Explosionsgefahr-1600-Hamburger-koennen-kein-Gas-mehr-tanken.html

das aktuell zu halten wird ne Mammutaufgabe