924.3 - Joblog koordinatudsøgning - omlægning af kald til DAWA og Google

Beskrivelse af epic af it-understøttelse af Styrelsen for Arbejdsmarked og Rekrutterings forretning


STAR Projektleder (PL)Forretningsanalytiker (FA)STAR ReleaseEpic statusEksterne snitflader
Knud de Place (STAR)Rolf Marcher Arndt2019-11.0KSS(t.o), A-Kasse(t.o)

DS-487 - Getting issue details... STATUS




Indholdsfortegnelse




Afgrænsning af epic

Afgræsning

Som mådeholden budgetansvarlig i STAR

vil jeg gerne ændre koordinat udsøgning, der benyttes ved beregning af rejsetid i jobloggen, således at det sker ved opslag i Rejseplanen frem for opslag i Google

for at jeg ikke skal betale unødigt, når Google licensbetingelser set fra STARs synspunkt forringes betydeligt.

Acceptkriterier

Nr.BeskrivelseRelevant for
924.3.1Analyse af koordinat udsøgnings brug af googlemaps og alternativer Rejseplanen /DAWADFDG
924.3.2Implementér yderligere kald til DAWADFDG
Kriterier for tilsagn til serviceaftager i forhold til STARs snitfladerBerørte acceptkriterierBemærkninger

924.3.2924.3.3


A-kasser og JC skal være bekendte med, at STARs udsøgning af Geo koordinater brugt i jobloggen, fremover kan være fortaget ved opslag i DAWA fremfor googlemaps api.x


I forbindelse med postnummer udsøgning

Ligeledes skal serviceaftagere være bekendt med der fremadrettet returneres koordinatsæt for Grønland postnummer 3900, hvis postnummer ikke kan findes hos DAWA.







Oversigt over berørte webservices 

SnitfladeServiceaftager der er berørtBemærkninger

DFDGJobnet (t.o)PlannersystemerKSS (t.o)A-kasse (t.o)YdelsessystemJobkon (t.o)Jobag (t.o)SFBI
JoblogServicexx
xx
x


Geo koordinater udstilles i servicen. Ingen snitfladeændringer
CitizenJoblogServicexx
xx
x


Geo koordinater udstilles i servicen. Ingen snitfladeændringer

GeoService (Version 1)

  • GeocodeStructuredAddress
    GeocodeSimpleAddress
xx



xx

Geo koordinater udstilles i servicen. Ingen snitfladeændringer

summary varslingstype varslingsnote eksterne snitflader interne snitflader project
Loading...
Refresh

Beskrivelse af epic

STAR benytter sig af Google Maps Platform til blandt andet, beregning af koordinat udsøgning når opslag via Danmarks Adressers Web API (DAWA) ikke giver noget resultat.

Disse koordinater bliver blandt andet benyttet til rejsetidsberegning omtalt i epic 924.2 - Joblog rejsetid - skift fra Google til rejseplanen

Eksisterende prisudregnings model hos google inkluderer at de første 100.000 kald per dag er gratis.

Google har varslet ændringer ved denne prisudregnings model: Google har valgt at de i stedet for de 100.000 gratis kald per dag at  gå over til at abonnementerne får 200$ gratis credits om måneden som svarer til ~ 40.000 gratis kald.

Til eksempel benyttede STAR i oktober måned 2018 sig af koordinat udsøgning 933.328 gange.

Se evt. /wiki/spaces/ISB/pages/999620621, hvor statistikkerne ligger, hvor man kan se, hvor mange kald per dag der er til google maps services.


Nedenfor kan den eksisterende prisudregning ses:

https://developers.google.com/maps/premium/usage-limits

Web serviceLimits
Directions

Shared* daily free quota of 100,000 requests per 24 hours; additional requests applied against the annual purchase of Maps APIs Credits.

Maximum of 23 waypoints per request. 50** requests per second.

Elevation

Shared* daily free quota of 100,000 requests per 24 hours; additional requests applied against the annual purchase of Maps APIs Credits.

Maximum of 512 points per request. 50** requests per second.

Geocoding

Shared* daily free quota of 100,000 requests per 24 hours; additional requests applied against the annual purchase of Maps APIs Credits.

50** requests per second.

Distance Matrix

Shared* daily free quota of 100,000 elements per 24 hours; additional requests applied against the annual purchase of Maps APIs Credits.

Up to 625 elements per request (with a maximum of 25 origins and 25 destinations per request). Rate limit of 1,000 elements per second. 

Note: requests using the optional parameter departure_time when mode=driving are limited to 100 elements per request.

Geolocation

Shared* daily free quota of 100,000 requests per 24 hours; additional requests applied against the annual purchase of Maps APIs Credits.

50** requests per second.

Time Zone

Shared* daily free quota of 100,000 requests per 24 hours; additional requests applied against the annual purchase of Maps APIs Credits.

50** requests per second.

Roads

Shared* daily free quota of 100,000 requests per 24 hours; additional requests applied against the annual purchase of Maps APIs Credits.

50** requests per second. Each request may contain up to 100 points.

* The 100,000 daily free requests are shared across all Maps JavaScript API client-side services and Google Maps APIs web services—all requests are subtracted from the same pool of 100,000 free daily requests.

Any additional requests are applied against the total number of Maps APIs Credits you purchased for your Premium Plan.

Your free daily request pool is reset at 12:00 am Pacific Time. Note that the 100,000 daily free requests do not apply to Location Services licenses.

** Default rate limit, to prevent abuse. Learn how to optimize web service usage or request a rate limit (QPS) increase.


STAR har med deres nuværende abonnement 33.000.000 Credits om året.

This type of API request...Consumes this many Maps APIs Credits...
Maps JavaScript API map load1
Maps Static API, Street View API map load0.25
Street View API metadata request0
Mobile SDKs (Android, iOS) map load1
Places API server-side and client-side request; excluding Place Autocomplete2
Place Autocomplete (server-side and client-side) request0.1

Web service APIs (server-side) request: Geocoding API, Directions API,

Distance Matrix API (per element), Elevation API, Geolocation API, Time Zone API, Roads API

0.25 (after included daily usage limit)
Client-side request: Geocoding API, Directions API, Distance Matrix API (per element), Elevation AP0.25 (after included daily usage limit)


Nedenfor kan den nye prisudregning ses:

https://cloud.google.com/maps-platform/pricing/sheet/

SKU$200 MONTHLY CREDIT
EQUIVALENT FREE USAGE
MONTHLY VOLUME RANGE
(PRICE PER THOUSAND)


0—100,000100,001-500,000500,001+
GeocodingUp to 40,000 calls$5.00$4.00



CONTACT SALES

for volume discounts.






GeolocationUp to 40,000 calls$5.00$4.00
Time ZoneUp to 40,000 calls$5.00$4.00
ElevationUp to 40,000 calls$5.00$4.00

Eksisterende implementering

Det estimerede antal kald per. måned til koordinat udsøgning er 800.000 - 1.600.000 fordelt jævnt ud over måneden via enkelt forespørgsler.

Koordinat udsøgningen bliver brugt til blandt andet rejsetidsberegning, Ankiro jobopslag mm.

DFDG udstiller via GeoService to metoder til koordinat udsøgning vha. adresse:

Servicemetoderne er udelukkende tiltænkt STARs egne applikationer, grundet licensomkostninger.

  • På baggrund af en struktureret adresse eller ustruktureret adresse forsøges først opslag i DAWA, hvis intet resultat, forsættes der vha. googlemaps api og koordinater returneres med en kodeliste værdi for, hvor præcise disse koordinater er, GeoCoordinateQualityTypeIdentifier
    • Eksakt match returneres, hvis resultat fra DAWA returneres.
  • Hvis adresse struktur ikke kan bestemmes, benyttes postnummer udsøgning via googlemaps api.
  • Hvis postnummer er imellem 3900 og 3999, hvor begge tal er inkluderet udregnes koordinat udsøgning for Grønland og post nummer 3900 benyttes (Nuuk) via googlemaps api.
  • Om natten er der et batchjob som forsøger at populere joblogs med koordinater og rejsetidsberegning, hvor der forsøges op til 5 gange.

Rejseplanen

Rejseplanen A/S har et åbent ReST-API med webservices, hvor adgang til disse data er under Creative Commons BY-ND 3.0 licens.

Dokumentation af dette API kan findes her:

/wiki/spaces/ISB/pages/1001521168

Der er tilbage i marts 2017 været kontakt til Rejseplanen med henblik på at få afdækket om deres åbne ReST-API var en mulighed, der var dog ikke behov for videre kontakt, da STARs eksisterende abonnement med googlemaps kunne håndtere den ekstra mængde kald.

Der har igen i november 2018 været kontakt med Rejseplanen i forbindelse med epic 924.2 - Joblog rejsetid - skift fra Google til rejseplanen


Personer der er kontakt til hos Rejseplanen

Jens Willars- Business Manager

Jørgen Sinding - Projektleder

924.2.1 Analyse af koordinat udsøgnings brug af googlemaps og alternativer Rejseplanen / DAWA

Rejseplanen analyse

Vi er blevet gjort opmærksom på fra Rejseplanen at det er DAWA der ligger til grund for deres Lokation service, hvorved en udskiftning fra googlemaps api til Rejseplanen ikke vil være en løsning i forbindelse med adresse udsøgning, da vi i eksisterende implementering allerede fortager koordinat udsøgning hos DAWA og at kald til googlemaps api bliver benyttet som en backup løsning, hvis vi ikke får noget resultat fra DAWA.


Undersøgen går på om Rejseplanen udstiller en webservice som dækker det behov googlemaps i øjeblikket dækker i forbindelse med beregning af rejsetid i forbindelse med registrering af Joblog.

Ud fra Rejseplanens dokumentation udvælges webservice der kan benyttes til beregningen.

Dokumentation på Rejseplanens API

/wiki/spaces/ISB/pages/1001521168

Det er i forbindelse med analysen vurderet at det er rejseplanens Location service der indeholder den fornødende information til at fortage udsøgningen af koordinater.

I det i forbindelse med kode analyse blev det identificeret at rejseplanen benytter sig af 8 tal til indikation af koordinat i modsætning til googlemaps som har op til 9 og DAWA som har op til 10.

Eksempel på servicekald:

http://xmlopen.rejseplanen.dk/bin/rest.exe/location?input=strandvejen%20999,2900,Hellerup&format=json

Nedenstående vises et eksempel på location service response:

Trip response

"Location": {

                "LocationList": {

                                        "noNamespaceSchemaLocation":"http://xmlopen.rejseplanen.dk/xml/rest/hafasRestLocation.xsd",

                                        "CoordLocation": {

                                                                    "name":"Nørgaardsvej 32, 2800 Kongens Lyngby, Lyngby-Taarbæk K",

                                                                    "x":"12512670",

                                                                    "y":"55770192",

                                                                    "type":"ADR"

                                                                    }

                                      }

                 }

DAWA analyse

I analysen viste det sig at DAWA også har en implementering af koordinat udsøgning på postnummer, hvor vi idag benytter os af googlemaps api til udsøgning.

Eksempel på DAWA postnummer servicekald:

https://dawa.aws.dk/postnumre/2800

Nedenstående vises et eksempel på postnumre service response:

Postnumre response

{
  "href": "https://dawa.aws.dk/postnumre/2800",
  "nr": "2800",
  "navn": "Kongens Lyngby",
  "stormodtageradresser": null,
  "bbox": [
    12.41145743,
    55.74830002,
    12.58343013,
    55.81431067
  ],
  "visueltcenter": [
    12.52083673,
    55.78572204
  ],
  "kommuner": [
    {
      "href": "https://dawa.aws.dk/kommuner/0157",
      "kode": "0157",
      "navn": "Gentofte"
    },
    {
      "href": "https://dawa.aws.dk/kommuner/0159",
      "kode": "0159",
      "navn": "Gladsaxe"
    },
    {
      "href": "https://dawa.aws.dk/kommuner/0173",
      "kode": "0173",
      "navn": "Lyngby-Taarbæk"
    },
    {
      "href": "https://dawa.aws.dk/kommuner/0230",
      "kode": "0230",
      "navn": "Rudersdal"
    }
  ]
}

924.3.2 Implementér yderligere kald til DAWA

I forbindelse med udvikling er det identificeret at der ved kald af DAWA på baggrund af postnumre som ikke er danske ikke vil returneres et koordinatsæt.

Bemærkning går på at der ved disabling a GoogleMaps api ikke vil være mulighed for at udsøge koordinatsæt på udenlandske adresser.


Beskrivelse

Den løsningsmodel der er tiltænkt at blive implementeret i release 2019-2 er følgende:

Ved Koordinatudsøgning undersøges det om:

  • Adresse og postnummer er OK
    • Hvis OK, søges der efter koordinater på baggrund af adresse imod DAWA og koordinater returneres, hvis de kan udsøges.
    • Hvis intet resultat fundet hos DAWA, og adresse er udfyldt undersøges det om GoogleMaps er slået til
      • Hvis GoogleMaps er slået til fortages der koordinatudsøgning hos GoogleMaps på baggrund af adresse og koordinater returneres, hvis de kan udsøges.
      • Hvis GoogleMaps er slået fra eller intet resultat hos GoogleMaps
    • Eller adresse ikke er udfyldt
      • Fortages der koordinatudsøgning hos DAWA på baggrund af postnummer og koordinater returneres, hvis de kan udsøges.
      • Hvis intet resultat hos DAWA og postnummer er fra 3900 - 3999 returneres koordinatsæt for Grønland postnummer 3900.
      • Hvis intet resultat hos DAWA og postnummer ikke er fra 3900 - 3999
        • Returneres tom koordinat udsøgning (som i dag)

Implementering DAWA

DAWA postnumre request

Eks. url: https://dawa.aws.dk/postnumre/2800

ParameterBeskrivelseBemærkning
Postnummer

postnummer i DK


DAWA postnumre Response

Nedenstående vises et eksempel på postnumre service response:

Postnumre response

{
"href": "https://dawa.aws.dk/postnumre/2800",
"nr": "2800",
"navn": "Kongens Lyngby",
"stormodtageradresser": null,
"bbox": [
12.41145743,
55.74830002,
12.58343013,
55.81431067
],
"visueltcenter": [
12.52083673,
55.78572204
],
"kommuner": [
{
"href": "https://dawa.aws.dk/kommuner/0157",
"kode": "0157",
"navn": "Gentofte"
},
{
"href": "https://dawa.aws.dk/kommuner/0159",
"kode": "0159",
"navn": "Gladsaxe"
},
{
"href": "https://dawa.aws.dk/kommuner/0173",
"kode": "0173",
"navn": "Lyngby-Taarbæk"
},
{
"href": "https://dawa.aws.dk/kommuner/0230",
"kode": "0230",
"navn": "Rudersdal"
}
]
}

Response

ElementTypeDetaljerForekomstBeskrivelse
Postnummer

0 - 1Type indeholdende postnummer entryen
hrefstringurl1Kald url
nrint
1Postnummer
- navnstring
1Navn på by
- stormodtageradresser



1
- bboxcollection
1
- - koordinatsættype
0 - *


- - - x

1koordinat med 10 cifre med punktum efter de 2 første.
- - - y

1koordinat med 10 cifre med punktum efter de 2 første.
- visueltcentercollection
1
- - koordinatsættype
1
- - - x

1koordinat med 10 cifre med punktum efter de 2 første.
- - - y

1koordinat med 10 cifre med punktum efter de 2 første.
-kommunercollection
1liste af kommuner
- - kommunetype
0 - * kommune
- - - hrefstringurl1url til DAWA kommune
- - - kodestring
1DAWAs id til kommunen
- - - navnstring
1Navn på kommunen


Overvej for hvert acceptkriterie hvilke systemer der berøres af ændringen:

  • DFDG
    • Services
    • WSRMer
    • Kodelister
    • PersonStatusService (PSS)
    • PersonHistoryService (PHS)
    • LSS (Landssupportsystem) og herunder Registerudtræk (hvis STAR har dataejerskab og der er lavet PHS på domænet)
  • Jobnet
  • VITAS
  • JobKon
  • JobAG
  • BI integrationsplatform
  • Alle områder
    • Nye batchjobs
      • Dokumentation af jobbet til SF (jf. skabelon: xxx link til skabelon) 
    • Dataløft
      • Hvis der i Databaser tilføjes eller fjernes kolonner med personfølsomme data (f.eks. person navne, adresser, email, telefonumre etc.), så skal SF informeres så disse data fremadrettet tilføjes eller fjernes fra scrambling.
  • Kommunalt sagsbehandlingssystem
  • A-kasse sagsbehandlingssystem
  • Kommunalt bookingsystem
    • JobcenterPlanner (JCP)
    • WorkForcePlanner (WFP)
  • Kommunalt ydelsessystem

Særlige krav til test

Test scenarieBerørte systemområder (herunder nye batchjobs*) Identificeret af






* Batchjobs

  • bør testes både med delta og fuldt load,
  • bør hvis der er afhængigheder køres med normalt load fra BI i ét testmiljø i hele testperioden
  • bør testes i samarbejde med teams som har afhængigheder
  • kørselstid, særligt hvis det er en del af NightlyBatch

Konsekvenser for drift/idriftsættelse

NB. Serviceaftagere skal være opmærksom på at der på GeoService (Version 1)

  • GeocodeStructuredAddress
  • GeocodeSimpleAddress

Kun returneres for danske adresser, hvis googlemaps api bliver slået fra.

I forbindelse med idriftsættelse:

  • Skal der køres et fuldt dataload ved første kørsel af et batchjob - aftal med SF hvornår load skal køres
  • skal der køres konvertering
  • Skal der køres databasescripts for opdatering af tabeller i databasen

Efter idriftsættelse:


Arkitektur- og implementeringsnoter 

Her beskriver PO/FA om arkitekturen og teknikken bag løsningen, om der f.eks. anvendes:

  • Nye dataområder
  • Nye snitflader
    • Omlægning af eksisterende googlemaps api/DAWA implementering i forhold til koordinatudsøgning på baggrund af adresser/postnummer.
  • Nye komponenter
  • Nye miljøer
  • Nye teknologier
  • Nye aftagertyper
  • Eller afvigelser fra principperne


Der gives en beskrivelse af hvorledes disse tænkes håndteret/implementeret i løsningen og om dette har været vendt med STAR arkitekten.