Technische IT-uitvoering¶
Dit hoofdstuk is alleen bedoeld voor de geïnteresseerden in de onderliggende IT, om een indruk te geven van de opzet.
Python + Django + ReactJS¶
De website is gemaakt met de programmeertaal Python en het web framework Django. De frontend is gemaakt met ReactJS.
Python is een van de meest gebruikte programmeertalen. Een groot voordeel is de leesbaarheid (en dus onderhoudbaarheid) van de code. Django staat bekend om z’n netheid, veiligheid en robuustheid. De meest voorkomende beveiligingsproblemen worden door Django afgevangen dan wel voorkomen.
De code wordt steeds automatisch op netheid gecontroleerd en getest (met een hoge test coverage).
Configuratie van thema’s en kaarten¶
De thema’s en kaarten worden los van de code geconfigureerd. Er is voor allebei een configuratieformaat gemaakt waarin zaken zoals titel, omschrijving, kaartlaag en labelberekening opgeschreven kunnen worden. Hierdoor kunnen de kaarten makkelijk aangepast en verbeterd worden zonder dat er codewijzigingen nodig zijn.
Ook deze configuratiebestanden worden automatisch gecontroleerd.
Bronnen¶
De meeste kaarten komen uiteindelijk uit Lizard en wel het raster server gedeelte. Daarin zijn de kaartlagen geconfigureerd, samengesteld en berekend. En vandaaruit kunnen we ze downloaden. Ook kunnen we per projectgebied gericht statistieken opvragen zoals “gemiddelde”, “maximum” en “75 percentiel”, wat gebruikt wordt voor de legenda’s en de labels.
De wateroverlast door neerslag wordt berekend met Rana. Voor het projectgebied wordt een simulatie klaargezet door middel van de AHN-hoogtekaart, landgebruikskaart, enz. En vervolgens wordt de simulatie gedraaid. De waterdieptekaart kunnen we vervolgens downloaden.
Eenvoudige opslag¶
Hoe ingewikkeld een berekening ook is, uiteindelijk komt alles eenvoudigweg in een directory per rapportage terecht. De kaarten worden als geotiff gedownload. De overige gegevens zoals titel, omschrijving, berekende labels, min/max voor de legenda, enz worden in een .json bestand opgeslagen per kaart.
Dit wordt vervolgens via een API doorgegeven aan de frontend.
Hosting (EU/NL)¶
De websites draaien in een “Kubernetes” cluster op eigen hardware in een datacenter in Amsterdam, dus het is helemaal oké qua EU/NL soevereiniteit.