From c51c837850b5c21b870ac5c001167ea9bb669efa Mon Sep 17 00:00:00 2001
From: Jacek Kowalski <Jacek@jacekk.info>
Date: Fri, 01 Feb 2019 00:30:21 +0000
Subject: [PATCH] Use database to find out bus type by vehicle number
---
parse.php | 14 +++-
common.php | 109 ++++++++++++++++++++++++++++++++++++
2 files changed, 119 insertions(+), 4 deletions(-)
diff --git a/common.php b/common.php
new file mode 100644
index 0000000..70f2eef
--- /dev/null
+++ b/common.php
@@ -0,0 +1,109 @@
+<?php
+function numToType($id, $data, $defaultLow=NULL) {
+ $data = explode("\n", trim($data));
+ foreach($data as $line) {
+ $line = explode("\t", trim($line));
+ if((int)$line[0] <= (int)$id && (int)$id <= (int)$line[1]) {
+ return [
+ 'num' => $line[2] . str_pad($id, 3, '0', STR_PAD_LEFT),
+ 'type' => $line[3],
+ 'low' => isset($line[4]) ? $line[4] : $defaultLow,
+ ];
+ }
+ }
+ return [];
+}
+function numToTypeT($id) {
+$data = <<<'END'
+101 107 HW E1 0
+108 113 RW E1 0
+114 126 HW E1 0
+127 127 RW E1 0
+128 130 HW E1 0
+131 132 RW E1 0
+133 133 HW E1 0
+134 134 RW E1 0
+135 136 HW E1 0
+137 139 RW E1 0
+140 147 HW E1 0
+148 150 RW E1 0
+151 152 HW E1 0
+153 153 RW E1 0
+154 154 HW E1 0
+155 155 RW E1 0
+156 158 HW E1 0
+159 159 RW E1 0
+160 174 HW E1 0
+201 245 RZ 105N 0
+246 299 HZ 105N 0
+301 312 RF GT8S 0
+313 313 RF GT8C 1
+314 322 RF GT8S 0
+323 323 RF GT8N 1
+324 324 RF GT8S 0
+325 328 RF GT8N 1
+401 440 HL EU8N 1
+451 456 HK N8C-NF 0
+457 461 HK N8S-NF 1
+462 462 HK N8C-NF 0
+601 614 RP NGT6 (1) 2
+615 626 RP NGT6 (2) 2
+627 650 RP NGT6 (3) 2
+801 824 RY NGT8 2
+899 899 RY 126N 2
+901 914 RG 2014N 2
+915 936 HG 2014N 2
+999 999 HG 405N 1
+END;
+ return numToType($id, $data);
+}
+function numToTypeB($id) {
+$data = <<<'END'
+2 4 DN Solaris Urbino 18 IV Electric
+71 83 BH Solaris Urbino 18 III Hybrid
+84 96 BH Volvo 7900A Hybrid
+103 105 PA Mercedes-Benz 516
+106 112 DA Autosan M09LE
+113 121 BA Autosan M09LE
+122 128 DA Autosan M09LE
+129 139 BA Autosan M09LE
+141 146 PM MAN NL283 Lion's City
+200 200 DO Mercedes Conecto
+206 210 PO Mercedes O530 C2 Hybrid
+211 218 DO Mercedes O530
+219 243 PO Mercedes O530 C2 Hybrid
+244 269 DO Mercedes O530 C2
+270 299 BO Mercedes O530 C2
+301 338 DU Solaris Urbino 12 IV
+339 340 BU Solaris Urbino 12 IV
+341 345 DU Solaris Urbino 12 III
+400 403 BH Solaris Urbino 12,9 III Hybrid
+404 408 DH Solaris Urbino 12,9 III Hybrid
+501 510 BR Solaris Urbino 18 IV
+511 568 DR Solaris Urbino 18 IV
+569 579 BR Solaris Urbino 18 IV
+580 595 DR Solaris Urbino 18 IV
+601 601 DE Solaris Urbino 12 III Electric
+602 605 DE Solaris Urbino 8,9LE Electric
+606 606 DE Solaris Urbino 12 III Electric
+607 623 DE Solaris Urbino 12 IV Electric
+700 700 DC Mercedes Conecto G
+701 731 DC Mercedes O530G
+732 732 DC Mercedes Conecto G
+737 741 BR Solaris Urbino 18 III
+742 745 DR Solaris Urbino 18 III
+746 764 PR Solaris Urbino 18 III
+765 768 DR Solaris Urbino 18 III
+769 776 PR Solaris Urbino 18 MetroStyle
+777 777 DR Solaris Urbino 18 III
+778 797 PR Solaris Urbino 18 IV
+851 903 BU Solaris Urbino 12 III
+904 905 DU Solaris Urbino 12 III
+906 926 BU Solaris Urbino 12 III
+927 976 PU Solaris Urbino 12 III
+977 977 DU Solaris Urbino 12 III
+978 991 PU Solaris Urbino 12 IV
+992 997 BU Solaris Urbino 12 IV
+END;
+ return numToType($id, $data, 2);
+}
diff --git a/parse.php b/parse.php
index 6e5b4e9..afa57b0 100644
--- a/parse.php
+++ b/parse.php
@@ -1,5 +1,6 @@
<?php
-require_once 'vendor/autoload.php';
+require('vendor/autoload.php');
+require('common.php');
use transit_realtime\FeedMessage;
@@ -53,6 +54,7 @@
$trip = $vehiclePosition->getTrip();
$tripId = $trip->getTripId();
$this->gtfsTrips[self::convertTripId($tripId)] = [
+ 'id' => $entity->getId(),
'num' => $vehicle->getLicensePlate(),
'tripId' => $tripId,
'latitude' => $position->getLatitude(),
@@ -102,6 +104,7 @@
}
if($options != 1) {
+ fwrite(STDERR, 'Found '.$options.' possible mappings!'."\n");
return FALSE;
}
return $bestOffset;
@@ -112,9 +115,12 @@
foreach($this->gtfsTrips as $gtfsTripId => $gtfsTrip) {
$jsonTripId = $gtfsTripId + $offset;
if(isset($this->jsonTrips[$jsonTripId])) {
- $result[$jsonTripId] = [
- 'num' => $gtfsTrip['num'],
- ];
+ $data = numToTypeB($gtfsTrip['id']);
+ $num = $gtfsTrip['num'];
+ if($data['num'] != $num) {
+ fwrite(STDERR, 'Got '.$num.', database has '.$data['num']."\n");
+ }
+ $result[$jsonTripId] = $data;
}
}
return $result;
--
Gitblit v1.9.1