RDW data verwerken 🦍 - jonahgoldwastaken/functional-programming GitHub Wiki
RDW Data verwerken
Huidige data-structuur
Ik heb een diagram gemaakt met de data-structuur hoe ik het straks in ga laden. De pijltjes geven aan waar ik relaties tussen de verschillende datasets kan leggen. De variabelen die in de diagram staan zijn niet alle variabelen die ik binnenkrijg, maar de variabelen die ik ga gebruiken die ik hier heb uitgelicht.
Zoals je ziet kan ik onderlinge verbinden maken tussen alle datasets. De bedoeling is dan ook dat ik alle data die te combineren valt combineer tot een structuur die ik kan gebruiken voor data-visualisaties.
Verwerkte data-structuur
De data-structuur waarin ik de datasets wil omvormen is een array met daarin alle gebiedsbeheerders die parkeergebieden exploiteren in Amsterdam, opgemaakt in objecten. Elk object bevat een id, beschrijving, tariefdelen die de gebiedsbeheerder hanteert en de parkeergebieden die de beheerder exploiteert.
Elk tariefdeel is een object met een hoeveelheid in euro's, stapgrootte in minuten en een datum waarop het tarief is ingegaan en uitgegaan (als deze niet meer in gebruik is).
De parkeergebieden zijn objecten met een id, beschrijving, gebruiksdoel, een coördinaten-object, een array met veranderingen in het "24-uur uitrijden"-beleid van het gebied en openingstijden per dag opgedeeld in arrays die ook aangeven wanneer de openingstijden in en uit zijn gegaan.
De data verwerken
Voordat ik begin met het daadwerkelijk verwerken van de data, maak ik een flow voor het verwerken van de data. Deze flow zal me een steuntje in de rug geven, zodat ik niet telkens hoef te nadenken welke stappen ik hoef te zetten, of in ieder geval de belangrijkste stappen.
De eerste paar stappen waren nog best simpel. Het verkrijgen en verwerken van de data die ik binnenkrijg van het RDW is zeker niet ingewikkeld. Het enige wat wel aan me begint te knagen is TypeScript. Ik krijg steeds meer onnodige errors, waardoor ik er meer tijd aan moet besteden wat zonde is van mijn tijd.
Wat ik ook begin door te krijgen is dat de manier waarop ik mijn functies nu schrijf, in de ES6 Arrow Function format, niet echt leesbaar is. Vooral met TypeScript. Daarom neem ik de tijd om alles over te zetten naar de traditionele function syntax. Mijn code wordt er een stuk schoner door.
TypeScript refactor naar JavaScript
Na de gehele maandagochtend van week 3 besteedt te hebben met het proberen te fixen van een TypeScript error, heb ik besloten om er een einde aan te maken en alles over te zetten naar JavaScript. Het is het niet meer waard om TypeScript te gebruiken als het me zo erg tegenzit, dus het is terug naar het oude vertrouwde ECMAScript.
Smooth sailing
Met een extra avondje om de verloren tijd in te halen, heb ik de RDW data verwerkt. De code hiervan kan je hier vinden. Nadat ik alles in JS over had gezet, was het programmeren bijna moeiteloos. Het is jammer dat ik zoveel tijd ben kwijtgeraakt omdat ik TS gebruikte, maar ik ben blij dat ik hierachter ben gekomen.
Incomplete data
Veel data is niet compleet, en dat heb ik eigenlijk gelaten zoals het is. De data zelf is verder erg schoon, en grotendeels consistent. Wanneer de data niet compleet is, laat ik dat zien door een onmogelijke waarde mee te geven, zoals Infinity voor de coördinaten van een parkeergebied en bepaalde string-waardes die expliciet vertellen dat een data-punt niet is ingevuld. Zo hoop ik het duidelijk te maken met D3 wanneer iets dus niet bestaat in een dataset.
Als allerlaatste heb ik het project omgezet zodat ik D3 kan gaan gebruiken in een HTML bestand, dus nu is het alleen nog het concept verder uitwerken en het in D3 zetten. Dit proces kan je in de frontend-data wiki vinden.