Harjoitustyö 3 - Reittioptimisaatio



Samankaltaiset tiedostot
Harjoitustyö 3 - Millosemeni

Integraatio-ohje. TVV LMJ Liikennöintitietojen Hallinta Liikennöintitietojen hallinta integraatio-ohje V1.11.

LIITE 2.7. Integraatio-ohje. TVV LMJ Liikennöintitietojen Hallinta

Joukkoliikenteen suunnittelutarpeet v Hervanta

Tampereen raitiotie,

Open Data Tampere Region Kickoff Avoimen datan käyttömahdollisuudet liikenteessä

Joukkoliikenteen ennustepalvelu

Testitapaukset - Siirtoprotokolla

Reitityksen ja realiaikatiedon virheelliset tilanteet

Ajoissa Pysäkillä. Parhaat aikataulut niille joukkoliikenteen matkustajille, jotka eivät käytä mobiilisovelluksia.

Avaras, kyselykooste. Petri Linna, TTY Porin laitos

OULUN SEUDUN JOUKKOLIIKENNEINFO

Tietojen kuvaus: Looginen tietorakenne

HSL-tietoisku: Uusi Avoin reittiopas ja pysäkkikuulutukset. Kerkko Vanhanen, VAMPO-seminaari

Valtion yhteisen viestintäratkaisun (Vyvi) Työtila- ja Ryhmä-palvelun kirjautumisohje

LIIKENNEDATA HYÖTYKÄYTTÖÖN

S11-09 Control System for an. Autonomous Household Robot Platform

Omat Lähdöt ohjelmointirajapinta: Versio 1.01

4. Luokan testaus ja käyttö olion kautta 4.1

ASUKASKYSELY KYMENLAAKSON JOUKKOLIIKENTEEN PALVELUTASOMÄÄRITYS LIIDEA OY

Osoitin ja viittaus C++:ssa

Hakemistojen sisällöt säilötään linkitetyille listalle.

Avoin liikennetieto. Tero Piirainen Tampereen Yliopisto / Älyliikenteen liiketoiminnan kehitys.

Harjoitustyö: virtuaalikone

5. HelloWorld-ohjelma 5.1

3 Joukkoliikenteen tavoitteellinen palvelutaso Mikkelin seudulla

National Access Point, NAP Liikennevirasto toteuttaa rajapintakatalogin

MyBus. Apps4Pirkanmaa. Einari Kurvinen Rolf Lindén Ranjeet Raya Rajput

Varmennepalvelu - testipenkki. Kansallisen tulorekisterin perustamishanke

Maastotietokannan torrent-jakelun shapefile-tiedostojen purkaminen zip-arkistoista Windows-komentojonoilla

SmartShip Connect Lite lisäosa WooCommerce alustalle (c) Webbisivut.org

Liikennepalvelulain ja valtioneuvoston asetuksen mukaiset olennaisia tietoja koskevat velvoitteet käytännössä

Tapiolan liikenneilta

Valppaan asennus- ja käyttöohje

AIKATAULULIITE LUPA REITTI VÄINÖ PAUNU OY PÄÄTÖSNRO / RATKAISUPVM

Algoritmit 1. Luento 3 Ti Timo Männikkö

Rajapintakuvaus Liikenneluvat

Teiskon, Aitolahden ja Ylä-Pirkanmaan joukkoliikenne alkaen Yleisötilaisuus, Kämmenniemen koulu

OP Tunnistuksen välityspalvelu

206 Verkkosivun tuottaminen finaalitehtävät

15. Ohjelmoinnin tekniikkaa 15.1

Liite 1: KualiKSB skenaariot ja PoC tulokset. 1. Palvelun kehittäjän näkökulma. KualiKSB. Sivu 1. Tilanne Vaatimus Ongelma jos vaatimus ei toteudu

BigData - liikenne esimerkkinä. Tietoyhteiskunta-akatemia Ostrobotnia, Helsinki

Näin järjestän ohjelmointikurssin, vaikka en ole koskaan ohjelmoinut

3 PAIKKATIETOHARJOITUSTA

Subversion-ohje. Linux Traffic Control-käyttöliittymä Ryhmä paketti2

MetropAccess- workshop Tutustuminen MetropAccess- Reitittimen toimintaan

Bussilla, pyörällä vai autoillen? Urbaania saavutettavuutta mittaamassa. Tuuli Toivonen Helsingin yliopisto MetropAccess-hanke

OULA TelemArk - arkkitehtuuri

OHJEET / KESKITETTY MAKSUJÄRJESTELMÄ

6. Harjoitusjakso II. Vinkkejä ja ohjeita

JWT 2016 luento 11. to klo Aulikki Hyrskykari. PinniB Aulikki Hyrskykari

Joukkoliikenteen reititys- ja aikataulupalvelu (MATKA.FI)

PHP tehtävä 3 Atte Pekarinen TIKT13A

Savonlinja-yhti. yhtiöt. Pysäkiltä pysäkille jo yli 85 vuotta

Sokkelon sisältö säilötään linkitetyille listalle ja tekstitiedostoon. Työ tehdään itsenäisesti yhden hengen ryhmissä. Ideoita voi vaihtaa koodia ei.

KEVYEN LIIKENTEEN LIIKENNEMÄÄRÄT KESÄLLÄ 2010

Kotkan paikallisliikenteen BUSSIAIKATAULUT koulujen alkuun elokuussa 2020

Paikka- ja karttatiedon avaaminen Tampereella - case kantakartta

Palvelun kuvaus, Oulun toimivalta-alueen linja-autoliikenne

Hallinnon karttapalvelu

TAMPEREEN RAITIOTIEHANKE Yleisötilaisuus raitiotien ja bussiliikenteen suunnittelusta Galleria Nottbeck

Rajapinnasta ei voida muodostaa olioita. Voidaan käyttää tunnuksen tyyppinä. Rajapinta on kuitenkin abstraktia luokkaa selvästi abstraktimpi tyyppi.

Sukupuu -ohjelma. Ossi Väre ( ) Joni Virtanen ( )

Rajapinta (interface)

Sosiaalinen media Facebook, Twitter, Nimenhuuto

Harjoituksen aiheena on tietokantapalvelimen asentaminen ja testaaminen. Asennetaan MySQL-tietokanta. Hieman linkkejä:

Tehtävälista digitaalisten palvelujen kehittäjälle. Helsingin kaupunki - Digitaalinen Helsinki -ohjelma 2017

HÄMEENLINNAN JOUKKOLIIKENTEEN ASIAKASTYYTYVÄISYYSKYSELY

Liikennepalvelulain ja valtioneuvoston asetuksen mukaiset olennaisia tietoja koskevat velvoitteet käytännössä

1 YLEISTÄ PROJEKTIN TAVOITTEET AVOIMEN REAALIAIKARAJAPINNAN TOTEUTUSRATKAISU PROJEKTIN ONNISTUMINEN JA RISKIT...

IDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit

Järjestelmäarkkitehtuuri (TK081702)

Ei raportteja roskiin

ATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014

Sisällys. 11. Rajapinnat. Johdanto. Johdanto

Tämän ohjeen avulla pääset alkuun Elisa Toimisto 365 palvelun käyttöönotossa. Lisää ohjeita käyttöösi saat:

LOAD R1, =2 Sijoitetaan rekisteriin R1 arvo 2. LOAD R1, 100

1

Kuurinniityn asukaskyselyn yhteenveto

Tulorekisterin sidosryhmätestaus

Johdatus Ohjelmointiin

Testaussuunnitelma. Ohjelmistotuotantoprojekti Nero. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Moottorikelkkareittien ja -urien lataaminen Lipas liikuntapaikat.fi järjestelmään

Tavallisen videomainoksen sijasta Ruudussa voidaan mainostauolla esittää dynaamisia spotteja.

Ohjelmoinnin perusteet Y Python

Pääkaupunkiseudun moniulotteista saavutettavuutta tutkimassa

Tampereen joukkoliikenteen linjastosuunnitelma 2014

Paytrail lisäosa WooCommerce alustalle (c) Webbisivut.org

VERSIO 5.1/5.2 PIKAOHJE WEBACCESS HTML 3

Järjestelmän asetukset. Asetustiedostojen muokkaaminen. Pääkäyttäjä eli root. Järjestelmänhallinnan työkalut

Saavutettavuuden alueellinen tarkastelu eri kulkumuotojen matkaa-aikoihin perustuen

Kuutoskaupunkien suositukset avoimista rajapinnoista

Vantaan kaupungin Future City Challenge -haasteet

Liikennepalvelulaki. Joukkoliikennevastaava Rauno Matintupa, Etelä-Pohjanmaan ELY-keskus

KOULUKULJETUKSET Tarjouspyynnön LIITE 1

ROVANIEMEN PAIKALLISLIIKENNE MATKUSTAJATUTKIMUS

Varmennepalvelu Rajapintakuvaus Kansallisen tulorekisterin perustamishanke

EUREFin vaikutukset organisaatioiden tietojärjestelmiin

JOUKKOLIIKENTEEN KESÄAIKATAULUT

Transkriptio:

Harjoitustyö 3 - Reittioptimisaatio Tampereen kaupunki tarjoaa avoin data -sivuilla kaupungin avoimena julkaistun tietoaineston osana Tampereen joukkoliikenteen aikataulut, reitit sekä rajapinnan joukkoliikenteen reaaliaikaiseen seurantaan. Näinpä erilaisille alustoille on syntynyt käteviä joukkoliikennepalveluita. Sinun tehtäväsi on toteuttaa pieni nopeimman reitin hakuapuri, jolla voi hakea nopeinta reittiä annettujen pysäkkien välille tietyllä lähtöajalla. Linja-autoliikenne Jokaisella linjalla on tunnus (route_id), kulkusuunta (direction_id) sekä jokaisella vuorolla oma reittitunnuksensa (trip_id). Jokaisella pysäkillä on tunnus (stop_id) sekä nimi (stop_name). Useammalla pysäkillä voi olla sama nimi, joten ne yksilöidään tunnuksen perusteella. Vuoroista tiedetään pysäkkijärjestys sekä saapumis- ja lähtöaika jokaiselle pysäkille. GTFS-tiedostot Linja-autojen reittitiedot on saatavilla Tampereen joukkoliikenteen tuottamana GTFS muotoisena datana, joka sisältää: lähtöjen pysäkkikohtaiset ohitusajat reittien linjanumerot, linjojen määränpäät ja reittiviivat pysäkkien tunnukset, nimet ja koordinaatit. Lisätietoa ja reittidata on saatavilla http://wiki.itsfactory.fi/index. php/tampere_public_transport_gtfs_feed. 1 Tarjotut tiedostot ja niiden formaatit: stops.txt: Pysäkkien tiedot ja sijainnit.formaatti: stop_id,stop_code,stop_name,stop_lat,stop_lon routes.txt: Reittien tiedot. Formaatti: route_id,route_short_name,route_long_name,route_type trips.txt: Linjatiedot kaikille reiteille. Formaatti: route_id,service_id,trip_id,trip_headsign,direction_id,shape_id stop_times.txt: Linja-autojen saapumis- ja lähtöajat pysäkeille. Formaatti: trip_id,arrival_time,departure_time,stop_id,stop_sequence 1 Tampere City Open Data License c Tampereen kaupunki, released 9.4.2013, Tampere City Public Transport

calendar.txt: Linjojen ajopäivätiedot. Formaatti: service_id,monday,tuesday,wednesday,thursday,friday,saturday,sunday,start_date,end_date calendar_dates.txt: Poikkeukset calendar.txt:n tietoihin. Formaatti: service_id,date,exception_type shapes.txt:reittien karttapiirtosäännöt. Formaatti: shape_id,shape_pt_lat,shape_pt_lon,shape_pt_sequence Huomaa, ettet välttämättä tarvitse kaikkia tietoja ohjelmassasi. Tutustu tiedostoihin tarkasti olennaisen tyyppitiedon selvittämiseksi. Täydellisestä aineistosta poiketen tässä harjoitustyössä käsitellään vain arkipäiviä. Tiedostoformaattiin voi luottaa. Linjan vaihtaminen Reittillä voi olla käytössä yksi tai useampia linjoja eli linja-autoa on mahdollista vaihtaa. Vaihdon pitää olla mahdollinen suorittaa eli bussista A voidaan vaihtaa bussiin B vain, jos bussin A saapumisaika pysäkille on aikaisempi kuin bussin B lähtöaika samalta pysäkiltä. Pysäkiltä toiselle kävelyä vaativia vaihtoja ei tehdä vaan vaihtaminen tapahtuu aina samalla pysäkillä. Bussista ei saa vaihtaa itseensä eli saman linjan eri vuorolle. Ohjelman toiminta Ohjelman tunnistamat komennot on esitelty parametereineen ja kuvauksineen taulukossa 1. Valmiit osat Harjoitustyössä opetellaan graafirakenteen hyödyntämistä käytännössä. Tyypillisesti tietorakennetoteutukset tehdään rajapintoina, niin tässäkin työssä. Toteuta tietorakenteesi.cc-päätteiseen tiedostoon. Pohjan tiedostolle saat versionhallinnasta. Tämä toteutetaan käytännössä antamalla toteutus valmiina annetulle luokkarajapinnalle. Valmiina tarjotaan pääohjelma, joka toteuttaa syötteen käsittelemisen, tietorakenteen luomisen sekä tietorakenteen jäsenfunktioiden kutsumisen. Sen tehtävä on testata toteutettua toiminnallisuutta. Pääohjelmaa ei tarvitse eikä tulekaan muuttaa. Määritelty rajapinta annetaan valmiina C++:lla. Rajapinnan funktioiden toteutukset ja tarvittavat jäsenmuuttujat on toteutettava itse. Julkista rajapintaa ei saa muuttaa. 2

Taulukko 1: Ohjelman ymmärtämät komennot Komento Kuvaus R [full simple] Lukee tarvittavat reittitiedot: vaihtoehtoinen yksinkertainen tai laaja aineisto. Tiedostojen tarkempi kuvaus sivulla 1. B <stop_id> Tulostaa pysäkiltä <stop_id> menevät linja-autovuorot tunnusjärjestyksessä. N <hh:mm> <stop_id1> Tulostaa nopeimman reitin lähtöpysäkiltä <stop_id2> <stop_id1> määränpäähän <stop_id2>. Reitin lähtöaika on ensimmäinen mahdollinen annetun kellon ajan <hh:mm> jälkeen saman vuorokauden aikana. Tulostaa pysäkit reittijärjestyksessä, käytettävän vuoron sekä saapumisajan jokaiselle pysäkille. P <stop_id> Tulostaa pysäkin <stop_id> nimen annetun tunnuksen perusteella. C Tulostaa pysäkkien, linjojen ja vuorojen määrän. E Q Tyhjentää tietorakenteen. Lopettaa ohjelman. Tulostaa lisenssitiedot: "Sisältää Tampereen kaupungin aineistoa:" sekä tiedoston agency.txt sisällöstä tiedot agency_id, agency_name ja agency_url". Valmiit osat ovat saatavilla opiskelijan harjoitustöitä varten saamassa gitrepositoriossa. Lisäksi versionhallinnassa annetaan ohjelman testaamiseen käytettävä testiaineisto, jota vastaan harjoitustyön toiminnallisuutta arvioidaan. Hakemistoon material voit myös tehdä omia testimateriaalejasi. Virhetilanteet Pääohjelma huolehtii virhetilanteista sikäli kun ne liittyvät komentojen parametreihin. Osa virheilmoituksista on käytännön syistä tulostettava tietorakenteen puolella, nämä on kuvattu seuraavassa. Virhekoodit on määritelty datastructure.hh:ssa vakioina. Jos annettujen pysäkkien välillä ei ole linja-autoyhteyttä annetun ajankohdan jälkeen, tulostetaan EI_LINJAA. Jos annettuja pysäkkejä ei ole olemassakaan, tulostetaan VIRHE. 3

Esimerkki ohjelman toiminnasta > R full > B 3735 13, 20, 24, 38, 65 > N 12:51 3525 2012 Bussi 3: 12:53 3525, Ahvenisjärvi Bussi 3: 12:55 3523, Hervantakeskus Bussi 3: 12:56 3723, Orivedenkatu Bussi 3: 12:56 3721, Kanjoninkatu Bussi 3: 12:58 3517, Lukonmäki et. Bussi 3: 12:59 3515, Lukonmäki pohj. Bussi 3: 13:00 3951, Laulunmaa Bussi 3: 13:00 3513, Turtola Bussi 3: 13:01 3943, Palvaanniemi Bussi 3: 13:05 4517, Sammonkatu 47 Bussi 3: 13:06 4515, Sammonkatu 45 Bussi 3: 13:07 4507, Sammonkatu 43 Bussi 3: 13:08 4505, Uintikeskus Bussi 3: 13:09 4503, Sammonkatu 13 Bussi 3: 13:10 4501, Kalevan kirkko Bussi 3: 13:12 0513, Itsenäisyydenkatu 25 Bussi 3: 13:14 0511, Itsenäisyydenkatu 13 Bussi 3: 13:16 0505, Rautatieasema H Bussi 3: 13:18 0501, Koskipuisto A Bussi 25: 13:20 0501, Koskipuisto A Bussi 25: 13:22 0036, Keskustori B Bussi 25: 13:23 0018, Tuulensuu B Bussi 25: 13:24 0024, Metso Bussi 25: 13:26 0064, Mariankatu Bussi 25: 13:28 2000, Mäntypuisto Bussi 25: 13:28 2002, Piispantalo Bussi 25: 13:29 2004, Pyynikintie Bussi 25: 13:30 2006, Rosendahl Bussi 25: 13:31 2008, Trikookuja Bussi 25: 13:32 2012, Varala > P 1556 Siirtolapuutarha > P 9876 Virhe: Pysäkkiä ei ole! > N 16:52 0001 1651 4

Virhe: Ei linjaa! > C 2169 pysäkkiä, 53 linjaa, 3622 vuoroa > Q Sisältää Tampereen kaupungin aineistoa: JOLI, Tampereen joukkoliikenne, http://joukkoliikenne.tampere.fi/ Rajoitteet Ei rajoitteita. C++11:n standardikirjastoa saa ja pitää käyttää. Koodatkaa hyvin! 5