Gelöst: Overpass-API: Daten unvollständig

Hallo,

nach der Diskussion unter “Overpass-API: Union” https://forum.openstreetmap.org/viewtopic.php?id=62045 habe ich meine Abfragen entsprechen geändert.

Bei einigen Verkehrsverbunden lässt sich jetzt ein reproduzierbarer Fehler beim Overpass-API feststellen - es fehlen Daten.

Z.B.: DE-HB-VBN: 4 mal getestet und es fehlen immer wieder die selben Daten.

Query:


    area[boundary=public_transport][name='Verkehrsverbund Bremen/Niedersachsen'];
    (
        rel(area)[route~'(bus|tram|train|subway|light_rail|trolleybus|ferry|monorail|aerialway|share_taxi|funicular)'];
        rel(br);
        rel[type~'route'](r);
    )->.routes;
    (
        .routes;
        rel(r.routes);
        way(r.routes);
        node(r.routes);
    );
    out;

Das Resultat bzw. Problem ist in meiner Analyse https://mipv6.de/OSM/analyze-routes/DE-HB-VBN-Analysis.html zu sehen.

Dort nach “Error” bzw.“Bus 353” suchen. Es ist reproduzierbar und betrifft hier immer nur den Bus 353.

Hinweis ohne Gewähr auf Relevanz:

  • die beiden Bus-Relationen liegen komplett außerhalb des obigen Suchgebietes
  • sollten aber (nach meiner Ansicht) selber überhaupt nicht in den Daten vorhanden sein, ebenso wenig wie ihr Route-Master.
  • Ihr Route-Master ist auch drin, u.U. weil dessen Eltern-Relation (type=network) auch drin ist.
  • Aber ein zweistufiges “rel(br);” ist in der Query nicht drin.
  • Es sei denn in der Eltern-Relation mit type=network sind type=route Relationen, die im Suchgebiet liegen.

Fazit: obige letzte Annahme würde die Anwesenheit der Bus-Relationen 353 erklären.

Aber: es erklärt nicht, warum die Daten der Member-Ways und Member-Nodes fehlen.

Denn: egal was in der ersten Klammer (…)->.routes; pasiert und als Daten landet, in der zweiten Klammer sollten (auch) deren Member komplett aufgelöst werden.

Sehr merkwürdig.

Viele Grüße
Toni

Entwarnung?

Vermutliche Lösung der Ursache und kein Fehler im Overpass-API:

Die Eltern-Relation des Route-Masters des Busses 353 kommt über die Regel

rel(br);

in die Datenmenge, da sie womöglich die Eltern-Relation einer Route-Relation aus dem Suchgebiet ist.
Diese Eltern-Relation ist type=network, der “Westfalentarif” …

Über die Regel

rel[type~'route'](r);

kommt dann erstmalig der Route-Master des Busse 353 in die Datenmenge.

Über die nach-gelagerte Abfrage

rel(r.routes);

kommen dann die beiden Route-Relationen des Busses 353 in die Ausgabedatenmenge.
Auf diese erfolgt keine weitere Auflösung nach deren Member.

Es fehlen also alle Member-Relationen, Member-Wege und Member-Nodes der beiden Route-Relationen des 353er.

Ich analysiere die anderen Problemfälle mal in diese Richtung.

Viele Grüße
Toni

BTW: wie kann ich in die Überschrift gegebenenfalls das "Gelöst: " reinbringen?

  1. einloggen
  2. im allerersten Betrag unten auf “bearbeiten”
  3. da sollte dann auch die Zeile “Betreff” auftauchen, in der Du beliebig rumändern kannst.
  4. Manche machen noch einen Timestampf am Ende was sie wann geändert haben.

Gruss derBeKri

Lösung:

aus

rel[type~'route'](r);

mach

rel[type='route'](r);

und es werden keine “route_master” mehr nachgeladen.

Danke fürs Zuhören. Manchmal kommt man selber auf die Lösung, wenn man versucht es jemand anderem zu erklären.

Viel Grüße
Toni