API-gegevensmapping
Het integreren van web servicedata met MapForce is een populaire en beproefde strategie om tijdig informatie te verzamelen voor analyse of het genereren van gebruiksvriendelijke rapporten. In een eerdere publicatie hebben we laten zien hoe API-data gemapt kunnen worden in 5-daagse weersvoorspellingen voor drukke containerhavens, door web servicedata in JSON-formaat te lezen en deze te mappen naar uitgebreide Excel-spreadsheets. De weer-API die we hebben gebruikt, wordt aangeboden door OpenWeather, een leverancier van historische, actuele en weersvoorspellingsgegevens.
Het integreren van data van een API is geen klus die je eenmalig instelt en dan vergeten kunt. Wanneer je een oplossing bouwt op basis van externe data, moet je snel kunnen reageren wanneer de datastructuur verandert. In ons oorspronkelijke integratieproject heeft OpenWeather de data die via hun API wordt aangeboden, aangepast. De API bevat nu voorspellingen van windstoten in een aparte JSON-eigenschap, los van de windsnelheid. Aangezien windstoten worden vermoed als een oorzaak van de recente blokkade van het Suezkanaal, is deze nieuwe data zeer relevant voor onze applicatie! Gelukkig kunnen zowel de data-mapping in MapForce als de Excel-spreadsheet eenvoudig worden aangepast om de nieuwe data toe te voegen.

Voordat we de datamapping van de API kunnen aanpassen, moeten we de wijzigingen in de nieuwe Excel-output begrijpen. Hier is een overzicht van het nieuwe hoofdonderdeel van de tabel met de 5-daagse voorspelling:

De maker van de spreadsheet heeft een nieuwe kolom toegevoegd tussen "windsnelheid" en "windrichting" om de voorspelde windstoten voor elke voorspelling weer te geven.
Er zijn ook verschillende wijzigingen aangebracht in de koptekst van de spreadsheet. Er is een regel toegevoegd aan de windgrafiek die de maximale windstoot aangeeft, de geografische coördinaten van de haven zijn toegevoegd, en de maximale windstoot over de 5-daagse voorspelling wordt vermeld.

Een nieuwe, klikbare knop in het werkblad, gelabeld "Bekijk huidige scheepvaartactiviteit", opent een webpagina. Alle commerciële schepen zijn uitgerust met transponders voor het automatische identificatiesysteem (AIS), dat continu de positie van het schip uitzendt om botsingen te voorkomen en navigatiekaarten te maken. MyShipTracking.com is een van de vele websites en andere bedrijven die AIS-technologie gebruiken om real-time AIS-gegevens te rapporteren en een beter inzicht te bieden in hoe schepen zich over de wereld bewegen.
Door op de knop in de spreadsheet te klikken, wordt een pagina geopend op myshiptracking.com die activiteiten in de buurt van de vastgestelde locatie weergeeft:

We moeten slechts enkele aanpassingen maken in de datamapping om deze verbeteringen in de uiteindelijke output te realiseren. We moeten de gegevens over windstoten op de juiste plaats in de tabel invoegen en we moeten de geografische coördinaten koppelen.
Allereerst hebben we de weer-API handmatig uitgevoerd in een browser om een nieuw voorbeeld van de reactie te verkrijgen, inclusief gegevens over windstoten. Vervolgens hebben we een nieuw JSON-schema gegenereerd in XMLSpy voor het resultaat van de API. Het opslaan van dit nieuwe JSON-schema met de oorspronkelijke bestandsnaam voegt automatisch het veld "windstoot" toe aan de reactie in de datamapping van de API.

De labels die aan de oorspronkelijke, in kaart gebrachte datacoördinaten zijn gekoppeld, maken het eenvoudig om de juiste plaats te vinden waar de nieuwe Gust-kolom in de Excel-spreadsheet moet worden ingevoegd:

Het selecteren van "Cel invoegen voor" in het contextmenu opent een dialoogvenster waarin u de details kunt toevoegen:

MapForce beheert handig de koppelingen voor kolommen K en L, waardoor we alleen de koppeling voor kolom J hoeven te maken.
De nieuwe geografische coördinaten in de spreadsheet, voor breedtegraad en lengtegraad, staan in cellen G5 en I5. De coördinaten voor elke haven staan al in de bronlijst van havens, omdat we deze gebruiken om weergegevens op te vragen via de API. We hebben die celadressen onderaan de doellijst toegevoegd.
Hieronder een overzicht van de bijgewerkte mapping in het MapForce-mappingvenster, waarbij de nieuwe verbinding voor windstootvoorspellingen is gemarkeerd:

Voor een laatste verbetering hebben we meer havens aan de lijst met verzoeken toegevoegd, waaronder het Suezkanaal en verschillende grote zeehavens in Europa. We hebben de nieuwe havens toegevoegd door het oorspronkelijke JSON-bestand met de verzoeklijst te bewerken in XMLSpy. Hieronder staat het nieuwe JSON-bestand met de havenverzoeken, bedoeld als input voor de API-datamapping, weergegeven in de rasterweergave van XMLSpy:

Door op de knop "Output" onderaan het mappaneel te klikken, wordt de mapping uitgevoerd en wordt het "Output"-venster geopend, waarin het eerste uitvoerbestand wordt weergegeven. Als Excel 2007 of een nieuwere versie op het systeem is geïnstalleerd, opent MapForce automatisch Excel om het resultaat weer te geven:

De resultaten zijn gegenereerd voor elke poort in de bronlijst. We kunnen elk Excel-bestand selecteren om een voorvertoning te bekijken:

Het klikken op de knop "Bekijk huidige poortactiviteit" in het voorbeeldscherm werkt precies hetzelfde als wanneer het bestand direct in Excel wordt geopend:

Het resultaat is gebaseerd op de geografische breedte- en lengtegraad van de haven:

Elke stip op de kaart vertegenwoordigt een schip met een AIS-transponder dat in real-time gegevens doorgeeft. Om onze resultaten verder te valideren, kunnen we elk ander uitvoerbestand bekijken en de link controleren voor een andere haven. Hier is de kaart voor Hamburg, Duitsland:

De rode stipjes vertegenwoordigen tankvaartuigen, en de groene stipjes zijn vrachtschepen. We kunnen op elk stipje klikken voor meer informatie over het schip:

Bekijk het oorspronkelijke artikel over integratie van webdiensten, bekijk een korte video-demonstratie van MapForce, of download een gratis proefversie inclusief tutorials, helpbestanden en nog veel meer voorbeelden om aan de slag te gaan met uw eigen project voor het mappen van API-gegevens, of andere taken op het gebied van data-integratie, -conversie en -transformatie!