Samenvatting
In Onemap kan , vanuit de featureinfo, additionele informatie worden opgehaald en getoond vanuit relevante REST API endpoints.
Het uitgangspunt hierbij is dat een laag in Onemap attributen bevat die gevoed kunnen worden aan het gekoppelde endpoint. bv:
Een laag met percelen (vanuit PDOK) bevat de attributen (perceel identificatie) om bij de haalcentraal-BRK endpoints extra informatie op te halen die niet als attribuut in de laag aanwezig is (bv: zakelijke rechten of eigenaren van een perceel)
De Rest interface bevat doorgaans meerdere endpoints die aan elkaar zijn gerelateerd. Op die manier kan worden doorgevraagd over meerdere Rest-endpoints. Om dit in Onemap te kunnen koppelen is het zaak om 1 start endpoint te configureren , en zelf de relevante gegevens hiervoor te verzamelen en terug te geven.
FME (desktop/server) is een generieke tool waarmee dit zou kunnen worden ingericht.
In deze workshop gaan we dit uitvoeren voor de Basis Registratie Ondergrond (BRO).
De beschikbare BRO Rest-endpoints zijn beschreven in BRO publieke Rest services
In PDOK zijn een aantal BRO lagen beschikbaar (sonderingen, booronderzoeken, grondwater meetpunten..).
Deze lagen bevatten de BRO identificatie attributen waarmee De BRO publieke Rest services kunnen worden bevraagd. Deze services bevatten o.a. endpoints om bijbehorende metingen en gegevens grafisch te presenteren (bv de bodem profielen).
In deze workshop gaan we deze grafische presentaties ophalen en toevoegen aan de Onemap feature informatie.
De algemene werkwijze hiervoor is als volgt:
Maak een FME script ( met FME desktop) dat gevoed wordt met attributen ( en waardes) die nodig zijn om de REST services te bevragen.
Verzamel de gewenste gegevens door ( vanuit het script) een aantal Rest endpoints sequentieel te bevragen. Lever de verzamelde gegevens aan in json formaat.
Upload het script naar FME Server, en maak hiervoor een ‘WebHook' aan. De 'WebHook’ kan vervolgens als API-endpoint worden gekoppeld in Onemap.
Richt het API basis endpoint in bij de Onemap workspace systeem instellingen.
Koppel dit basis endpoint aan de featureinfo van de bijbehorende laag.
Maak het FME Desktop script
Het benodigde FME script bevat doorgaans de volgende onderdelen:
De parameters die voor de Rest-services nodig zijn, en die als attribuut in de Onemap laag beschikbaar zijn.
Een 'creator' transformer om het proces te starten
Een ( of meerdere ) 'http_caller' transformers om de relevante Rest-endpoints te bevragen
Een JSON writer
De precieze invulling van het script is verder afhankelijk van hoe de Rest services zijn ingericht en communiceren.
Richt een FME server WebHook in
Upload FME script naar FME server
Registreer dit als een 'Data Streaming' service
Publiceer het script als een FME WebHook
Een FME Server Webhook vormt een API-endpoint dat met een api-key is geauthoriseerd.
Download de webhook configuratie instellingen en bewaar deze.
Configureer de API koppeling in Onemap
Allereerst wordt het basis endpoint toegevoegd bij de API-configuraties in de workspace systeem instellingen.
Het basis endpoint bevat de basis-URL ( alles tot het ? ) en een HTML header met de benodigde authorizatie.
Het tweede deel voor de API/WebHook aanroep wordt uitgevoerd in de laag/featureinfo configuratie. Hier hebben we (doorgaans) de benodigde parameters tot onze beschikking.
WMS services leveren niet altijd de bijbehorende veld definities (de functie 'DescribeFeature' is voor WMS niet verplicht).
De workarounds zijn dan:
1-Gebruik de bijbehorende WFS (waar ‘describefeature’ wel verplicht is)
Indien de WFS niet als service beschikbaar is:
2-Herleid de laag velden door in de WMS de featureinfo middels TWIG toch te implementeren en vervolgens op de kaart een keer uit te voeren. (e.a. is beschreven in Twig templates)
Helaas doet deze situatie zich voor bij de BRO-PDOK lagen. Door eenmalig een featureinfo in Onemap uit te voeren krijgen we zo toch de beschikking over de aanwezige attributen.
We kunnen nu de API/WebHook aanroep inrichten door de BRO_ID parameter in de aanroep toe te voegen.
De Rest-API’s leveren gegevens terug in json formaat. In Onemap moet deze json vervolgens geparsed worden naar een html formaat m.b.v. TWIG.
In dit geval wordt de grafiek in svg ( xml formaat) terug geleverd als waarde van het json item 'json_result'. Deze waarde kan direct worden opgenomen in de featureinfocode als waarde.
Omdat FME de json altijd als json-array teruggeeft moet eerst nog het eerste element naar een 'normale' json worden gezet.
De api koppeling die naast de featureinfo is ingericht komt , binnen de featureinfo, als tabblad/button beschikbaar. Door hier op te klikken wordt een request naar de fme server webhook verstuurd ( met het bijbehorende bro_id) en wordt ( in dit geval) het bodemprofiel grafisch teruggeleverd.