mfdz / zhv-issues

(Inoffizieller) Issue-Tracker zum zentralen Haltestellenverzeichnis (zHV) des DELFI e.V.
13 stars 0 forks source link

Haltestellen mit gleichen Koordinaten für verschiedene Steige #27

Open hbruch opened 4 months ago

hbruch commented 4 months ago

Derzeit sind im zHV für eine Reihe von Haltestellen mehrere Steige mit der gleichen Koordinate angegeben.

Da in Realität unterschiedliche Steige bis auf wenige Ausnahmen auch unterschiedliche Koordinaten aufweisen, gehen wir überwiegend von Datenfehlern aus. Solche Fehler erhöhen das Risiko, dass es zu falschen Steigzuordnungen von Bedienungen kommt, wie derzeit bei einigen Linien im GTFS-Sollfahrplan der Fall (siehe https://github.com/mfdz/GTFS-Issues/issues/147 und https://github.com/mfdz/GTFS-Issues/issues/149). Eine realitätsnahe Positionierung verbessert darüberhinaus die Möglichkeit zur automatischen Plausibilisierung, z.B. durch Abgleiche mit Datenquellen wie OSM oder auch Plausibilisierungen der Seitenlage zur Fahrtrichtung.

SELECT h.Authority, anzahl_hst_mit_doppelungen, anzahl_hst, ROUND(100.0*anzahl_hst_mit_doppelungen/ anzahl_hst,1) Prozent
  FROM (SELECT Authority, count(*) anzahl_hst_mit_doppelungen
          FROM (SELECT Authority, dhid, count(*) anzahl_verschiedener_koordinaten_doppelungen FROM
                 (SELECT s.Authority, s.dhid, q.Latitude,q.Longitude, count(*) anzahl_steige_mit_dieser_koordinate
                    FROM zhv q
                    JOIN zhv a ON a.DHID = q.Parent
                    JOIN zhv S ON s.DHID = a.Parent AND s.type='S'
                   WHERE s.lastOperationDate > '2024-05-09'
                     AND q.type='Q'
                   GROUP BY q.Authority, s.dhid, q.Latitude,q.Longitude
                  HAVING COUNT(*) > 1)
                GROUP BY Authority, dhid)
         GROUP by Authority) d
  JOIN (SELECT Authority, count(*) anzahl_hst
          FROM (SELECT s.Authority, s.dhid
                  FROM zhv s
                 WHERE s.type='S'
                   AND s.lastOperationDate > '2024-05-09'
                 GROUP BY s.Authority, s.dhid)
         GROUP BY Authority) h ON h.Authority=d.Authority
 ORDER BY ROUND(100.0*anzahl_hst_mit_doppelungen/ anzahl_hst,2) DESC;

Aufgeschlüsselt nach Authority ergibt sich:

Authority anzahl_hst_mit_doppelungen anzahl_hst Prozent
NVV 721 3691 19.5
BEG 5956 42708 13.9
NVBW 2923 25680 11.4
VBN 2475 26300 9.4
VMV 562 8125 6.9
VRR 2782 46990 5.9
VMT 278 7133 3.9
HannIT 376 10123 3.7
Hamburger Hochbahn 275 8028 3.4
rms 285 10236 2.8
VVO 281 11115 2.5
NASA 32 10546 0.3
ZPS 11 3623 0.3
VBB 25 12717 0.2
VRN 22 17542 0.1

Da sich das LastOperationDate leider nicht auf Steige bezieht (siehe #25), sondern nur auf gesamte Haltestellen, ist es möglich, dass bei den Steigen auch mittlerweile nicht mehr gültige in die Zählung eingehen.

Beispiele betroffener Haltestellen:

WITH examples AS 
(SELECT authority, dhid, count(*) anzahl_verschiedener_koordinaten_doppelungen, 
        ROW_NUMBER() OVER ( PARTITION BY authority) AS nr 
   FROM (SELECT s.Authority, s.dhid, q.Latitude,q.Longitude, count(*) anzahl_steige_mit_dieser_koordinate
           FROM zhv q
           JOIN zhv a ON a.DHID = q.Parent
           JOIN zhv S ON s.DHID = a.Parent AND s.type='S'
          WHERE s.lastOperationDate > '2024-05-09'
            AND q.type='Q'
          GROUP BY q.Authority, s.dhid, q.Latitude,q.Longitude
         HAVING COUNT(*) > 1)
  GROUP BY authority, dhid)
SELECT * FROM examples WHERE nr <= 3;
authority dhid anzahl_verschiedener_koordinaten_doppelungen nr
BEG de:09161:1492 1 1
BEG de:09161:7526 1 2
BEG de:09161:7994 1 3
Hamburger Hochbahn de:01053:10110 1 1
Hamburger Hochbahn de:01053:11052 1 2
Hamburger Hochbahn de:01053:22100 1 3
HannIT de:03101:108 1 1
HannIT de:03101:135 1 2
HannIT de:03101:175 1 3
NASA de:14713:13550 1 1
NASA de:14729:12551 1 2
NASA de:14729:30448 1 3
NVBW de:08111:100 1 1
NVBW de:08111:104 1 2
NVBW de:08111:105 1 3
NVV de:06611:200001 1 1
NVV de:06611:200008 1 2
NVV de:06611:200011 1 3
VBB de:11000:900058102 2 1
VBB de:11000:900131508 1 2
VBB de:11000:900132501 1 3
VBN de:01001:20703 1 1
VBN de:01001:21004 1 2
VBN de:01001:27270 1 3
VMT de:16051:151013 1 1
VMT de:16051:151014 1 2
VMT de:16051:151017 1 3
VMV de:13003:3057 2 1
VMV de:13003:747 1 2
VMV de:13003:752 3 3
VRN de:06431:1769 2 1
VRN de:06431:1771 5 2
VRN de:06431:1789 1 3
VRR de:05111:18150 1 1
VRR de:05111:18492 1 2
VRR de:05112:16032 5 3
VVO de:14511:30029 1 1
VVO de:14511:30103 1 2
VVO de:14511:30238 2 3
ZPS de:10041:17503 1 1
ZPS de:10041:18512 1 2
ZPS de:10041:19211 1 3
rms de:06411:24200 1 1
rms de:06411:24650 2 2
rms de:06411:24655 1 3