Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Table of Contents

1. Inleiding

Voor het HR-portaal zijn wij gevraagd declaraties te kunnen maken voor de reiskosten die gemaakt worden. Het bedrag van de declaratie wordt berekend door een standaard tarief keer de afstand te doen, hierbij is het dus erg belangrijk om een correcte afstand te hebben zodat dit consistent is en ook daadwerkelijk klopt. Tot nu toe werd dit door JDI gedaan door de locaties in te vullen op de ANWB routeplanner en deze vervolgens zelf in een excel sheet te zetten en daar te berekenen, dit kan natuurlijk veel makkelijker.

Door JDI waren wij de opties gegeven gebruik te maken van de Google Distance Matrix API of de ANWB routeplanner API. Over de ANWB routeplanner was echter niks te vinden dus hebben wij ervoor gekozen te gaan met de Google API, hier lag ook bij JDI de voorkeur bij.

2. Doelstelling

Het doel van dit onderzoek is duidelijk maken wat de opties zijn bij het gebruiken van de Google API en wat de verschillen zijn tussen de Google API en hoe JDI het voorheen heeft gedaan.

3. Onderzoeksvragen

Om goed onderzoek te kunnen doen stellen we onderzoeksvragen op die alle punten raken om het doel te behalen en zo een voldoende conclusie te kunnen trekken.

3.1. Hoofdvraag

De hoofdvraag luidt als volgt:

Kan de Google Distance Matrix API gebruikt worden om onze berekening te doen bij het declareren?

3.2. Deelvragen

De deelvragen zijn als volgt:

  1. Zijn er kosten verbonden aan het gebruiken van de Google Distance Matrix API?
  2. Zijn er grote verschillen tussen de resultaten van de Google Distance Matrix API en de ANWB routeplanner?
  3. Welke mogelijkheden zijn er bij het gebruiken van de Google Distance Matrix API?

4. Aanpak en criteria

4.1. Onderzoek aanpak

Dit onderzoek zal voornamelijk aan de hand van internetbronnen worden uitgevoerd, Google heeft zelf uitgebreide documentatie over de API dus dit zou de voornamelijkste bron zijn die gebruikt zal worden. Verder zal het onderzoek door middel van de deelvragen de hoofdvraag beantwoorden en hierdoor tot een voldoende conclusie komen.

4.2. Criteria waaraan de API moet voldoen

Om de API goed te kunnen gebruiken zijn er wat criteria waar het aan moet voldoen, de criteria zijn:

  • De API moet makkelijk te gebruiken zijn.
  • De API moet geen kosten in kaart brengen.
  • De API berekende afstanden mogen niet veel verschillen van die van de ANWB routeplanner.
  • De API moet voldoende gegevens op kunnen sturen voor ons gebruik.

5. Resultaten

5.1. Zijn er kosten verbonden aan het gebruiken van de Google Distance Matrix API?

Het prijsmodel van de Google Distance Matrix API is 'pay-as-you-go', dit houd in dat je het niet hoeft te kopen en het ook geen subscriptie is maar er echter een bedrag verbonden is aan een request doen van de afstand tussen twee punten (voor het declareren van reiskosten) gebruiken wij de Google Distance Matrix API. Voor de API hebben wij een key om deze te gebruiken in de back-end. Voor de eerste 100.000 requests (per maand) kost het 0.005USD 005 USD per request, er dit zou 5 USD zijn voor 1000 requests. Er is echter een crediet van 200 USD per maand een gratis krediet beschikbaar van 200USD.

Wij waren voor het project de opties gegeven gebruik te maken van de Google Matrix Distance API of een ANWB routeplanner API, JDI heeft voorheen altijd de routeplanner op de site van de ANWB gebruikt maar gaf de voorkeur uit naar de Google API. Over de ANWB routeplanner API zelf is niks te vinden, alleen APIs die claimen gelijke resultaten te hebben met de ANWB routeplanner. Met voorkeur naar de Google API vanuit JDI, hebben wij er voor gekozen gebruik te maken van deze API.

beschikbaar van Google voor het gebruiken van bepaalde APIs, de Google Distance Matrix API valt hier ook onder. Dit betekend dus dat zolang het onder de 40.000 requests per maand blijft. er geen kosten aan verbonden zijn.

5.2. Zijn er grote verschillen tussen de resultaten van de Google Distance Matrix API en de ANWB routeplanner?

JDI heeft voorheen altijd gebruik gemaakt van de ANWB routeplanner site om afstanden te berekenen. Bij het gebruik van ons portaal hadden zij de voorkeur naar de Google API, maar alleen als deze niet veel zou verschillen van de asftanden die zij op moment dus gebruikten. Hiervoor zijn er enkele routes naar het JDI kantoor berekend vanaf enkele willekeurige locaties en zijn deze vervolgens vergeleken met de resultaten van de ANWB routeplanner, dit ziet er uit als volgt:

Locatie ALocatie BAfstand Google APIAfstand ANWB routeplanner
Gildekamp 3318, NijmegenBeekhuizensweg 12, Velp30508m30600m
Professor Molkenboerstraat 3, NijmegenBeekhuizensweg 12, Velp28422m28300m
Willem van Arenbergstraat 4, NijmegenBeekhuizensweg 12, Velp22413m22400m
Antoon van Hooffplein 1, ArnhemBeekhuizensweg 12, Velp7118m6900m

Zoals te zien is zijn de verschillen erg minimaal en zou dit geen problemen opleveren voor JDI.

5.3. Welke mogelijkheden zijn er bij het gebruiken van de Google Distance Matrix API?

De Google Distance Matrix API heeft een heel aantal parameters die meegegeven kunnen worden om de resultaten te verfijnen of aan te passen naar wens.

Alle parameters die meegestuurd kunnen worden bij een request zijn als volgtBij het versturen van een request kunnen er verschillende parameters worden mee gegeven:

TypeBeschrijvingVerplicht
destinationhet eind puntJa
originhet begin puntJa
arrival_timede tijd waarop je aan zou komenNee
departure_timede tijd waarop je zou vertrekkenNee
avoid

resticties om te voorkomen zoals: 

toll wegen, snelweg, veerboot of binnen plekken

Nee
languagede taal waarin je het terug krijgtNee
mode

transport mode zoals:

rijden, lopen fietsen of het OV

Nee

regionregio codeNee
traffic_modelaanname bij het berekenen van de reistijdNee
transit_mode

specificatie van welk type OV gebruikt mag worden zoals:

bus of trein

Nee
transit_routing_preference

extra voorkeuren zoals:

zo min mogelijk lopen of overstappen

Nee
unitsin welke unit het wordt terug gegevenNee

...

Voor ons doeleinde gebruiken wij alleen de 'destination', 'origin' en 'units' om de afstand te berekenen in kilometers.

De functie die wij hiervoor zullen gebruiken ziet er uit Een functie voor een request hiermee zal er uitzien als volgt:

String url = "https://maps.googleapis.com/maps/api/distancematrix/json?destinations=" + destination + "&origins=" + origin + "&units=metric&key=" + APIKEY;

String resultString = restTemplate.getForObject(url, String.class);

...

{
    "destination_addresses": [
        "Zoetendaal 31, 6662 XG Elst, Netherlands"
    ],
    "origin_addresses": [
        "Professor Molkenboerstraat 3, 6524 RN Nijmegen, Netherlands"
    ],
    "rows": [
        {
            "elements": [
                {
                    "distance": {
                        "text""13.5 km",
                        "value"13510
                    },
                    "duration": {
                        "text""20 mins",
                        "value"1181
                    },
                    "status""OK"
                }
            ]
        }
    ],
    "status""OK"
}

Hier wordt Hierbij hebben wij alleen de afstand uitgehaald en vervolgens wordt deze samen met het begin en eindpunt in de database opgeslagen in de tabel 'ROUTE'.

Uiteindelijk zal dit gebruikt worden om de reiskosten te berekenen van een gebruiker.

Tot slot zijn wij gevraagd door JDI een overzicht te maken van de verschillen tussen de afstanden berekend door de ANWB routeplanner en de door ons gebruikte Google API, deze ziet er als volgt uit:

...

nodig, deze pakken wij hieruit in meters.

6. Conclusie

Nu alle deelvragen zijn beantwoord kunnen we antwoord geven op de gestelde hoofdvraag: Kan de Google Distance Matrix API gebruikt worden om onze berekening te doen bij het declareren?

Zoals in de eerste deelvraag is opgesteld zijn er geen kosten (tot en bepaald punt) verbonden aan het gebruik van de API, wij kunnen hier dus gratis gebruik van maken. Verder zoals er beschreven staat in de tweede deelvraag zijn er geen grote verschillen tussen de afstanden waar JDI gebruik van maakte en de afstand die wij nu krijgen via de API. En tot slot zoals in de derde deelvraag beschreven staat kunnen wij erg makkelijk gebruik maken van de API en krijgen wij hier vervolgens ook de benodigde informatie uit terug.

Om de vraag dus te beantwoorden: ja deze kan gebruikt worden om onze berekening te doen.


Bronnen

  1. https://developers.google.com/maps/documentation/distance-matrix/distance-matrix
  2. https://developers.google.com/maps/documentation/distance-matrix/start
  3. https://developers.google.com/maps/documentation/distance-matrix/usage-and-billing

...