Skip to content

Δεδομένα που χρησιμοποιούνται στην εφαρμογή

Konstantinos Kyriakos Sitistas edited this page Jul 5, 2022 · 5 revisions

Κατά την αναζήτησή μας για πηγές δεδομένων που θα μπορούσαμε να χρησιμοποιήσουμε στα πλαίσια της εφαρμογής, ψάχναμε για ήδη "έτοιμα" δεδομένα ώστε να μην χρειάζεται να τα δημιουργήσουμε και αυτά από την αρχή.

Τελικά, επιλέξαμε το BODS - Bus Open Data Service, μία υπηρεσία που περιλαμβάνει δεδομένα δρομολογίων, τοποθεσίας, καθώς και εισιτηρίων για όλους τους φορείς αστικών λεωφορείων στην Αγγλία. Όλοι οι φορείς στην Αγλλία είναι υποχρεωμένοι να υποβάλλουν τα δεδομένα αυτά στην υπηρεσία από τον Ιανουάριο του 2021, σε συγκεκριμένα formats που θα αναλύσουμε στην συνέχεια

BODS

Διαδικασία εγγραφής στο BODS

Η λήψη δεδομένων της υπηρεσίας γίνεται μέσω ενός API, το οποίο είναι ελεύθερα διαθέσιμο. Το μόνο που απαιτείται αρχικά είναι εγγραφή στην πλατφόρμα, Create Account in BODS

και αυτόματα μετά την επιβεβαίωση του email με το οποίο έγινε εγγραφή, ο χρήστης μπορεί να βρει το προσωπικό API κλειδί του στις ρυθμίσεις λογαριασμού του BODS, όπως φαίνεται παρακάτω:

Account Settings

Περιήγηση στα δεδομένα

Για την επισκόπηση των δεδομένων στην πλατφόρμα του BODS, ο χρήστης μπορεί να επισκεφθεί την σελίδα Browse Open Data (Αρχική Σελίδα --> Find Open Bus Data --> Browse data). Τα δεεδομένα διακρίνονται σε 3 κατηγορίες:

  • Timetables data, που ακολουθούν το πρότυπο TransXChange
  • Location data, που ακολουθούν το πρότυπο SIRI-VM
  • Fares data, που ακολουθούν το πρότυπο NeTEx

Εμείς, στα πλαίσια της εφαρμογής μας κάναμε χρήση των 2 πρώτων.

Τα δεδομένα χωρίζονται σε διάφορα datasets, ανάλογα με την κατηγοριοποίηση που έχουν επιλέξει οι operators. Επομένως, ένα data feed μπορεί να έχει δεδομένα μόνο της ίδιας εταιρείας, γραμμής, περιοχής, κ.ά..

Χρήση του API

Όπως αναφέραμε νωρίτερα, για την χρήση του API απαιτείται εγγραφή στην πλατφόρμα. Η χρήση του είναι ιδιαιτέρως απλή. Για πρόσβαση σε όλα τα metadata (Timetables data) που σχετίζονται με ένα συγκεκριμένο set, κάνουμε χρήση του ακόλουθου API call: https://data.bus-data.dft.gov.uk/api/v1/dataset/[DATASET_ID]/?api_key=[API_KEY], όπου [DATASET_ID] το Data ID του κάθε Dataset και API_KEY το προσωπικό κλειδί API. Η απάντηση δίνεται σε JSON, και ένα ενδεικτικό παράδειγμα φαίνεται παρακάτω:

{"id": 649,"created": "2019-11-19T15:23:22.334498Z","modified": "2019-11-19T15:23:30.314457Z","operatorName": "Operator","noc": ["NOC1", "NOC2"],"name": "Operator_Cambridge_1|Citi_20191029_102","description": "Line 1 services until Summer 2020","comment": "First publication","status": "published","url": "https://operator.com/MyData/Line1.xml","lines": ["1|Citi"],; "firstStartDate": "2019-10-29T00:00:00Z","firstEndDate": "2020-05-01T00:00:00+01:00","lastEndDate": "2020-05-01T00:00:00+01:00","admin_areas": [{
   "atco_code": "050",
   "name": "Cambridgeshire"
   },
   {
   "atco_code": "150",
   "name": "Essex"
   }],"localities": [
   {"gazetteer_id":"N0080359","name":"Addenbrooke's (Cambs)"},
   {"gazetteer_id":"N0061155","name":"Arbury (Cambs)"},
   {"gazetteer_id":"E0055326","name":"Cambridge (Cambs)"},
   {"gazetteer_id":"N0061157","name":"Cherry Hinton"},
   {"gazetteer_id":"N0061156","name":"Chesterton (Cambs)"},
   {"gazetteer_id":"E0043826","name":"Fulbourn"},
   {"gazetteer_id":"N0061158","name":"Kings Hedges"},
   {"gazetteer_id":"E0044128","name":"Teversham"},}]

}

Η παράμετρος url μας δίνει τον σύνδεσμο για να προσπελάσουμε τα δημοσιευμένα δεδομένα.

Για δεδομένα τοποθεσίας, αντίστοιχα: https://data.bus-data.dft.gov.uk/api/v1/datafeed/[ID]/?api_key=[API_KEY]

Για δεδομένα εισιτηρίων: https://data.bus-data.dft.gov.uk/api/v1/fares/dataset/[ID]/?api_key=[API_KEY]