MapServer-configuratie voor map.data.amsterdam.nl.
- Hernoem
.env-example
naar.env
- Pas in
.env
de volgende parameters aan:- het pad aan waar je je Database DIR neer wil zetten
- het wachtwoord om je database te verbinden
- Start de database:
docker-compose up -d database
. - Vul de gewenste tabellen in de database, die woont op localhost, poort 5403.
- Bouw Docker image met MapServer:
docker-compose build map
. - Start de map met:
docker-compose up -d map
. - Vervang het password in
dataservices.inc
naarinsecure
Test nu of MapServer werkt:
curl --head http://localhost:8383/maps/index.json
Als dit geen foutmelding geeft, dan kunnen kaarten nu benaderd worden als WFS of WMS, via bijv. QGIS. De kaarten hebben URL's zoals
http://localhost:8383/maps/meetbouten?service=WMS&request=GetCapabilities
Zorg dat de database blijft draaien en voeg daarin data toe. Na elke wijziging aan een mapfile moet de MapServer-container opnieuw worden opgebouwd en opgestart volgens de instructies hierboven.
In de file .mapfile_template.txt
wordt een voorbeeld geschetst hoe een mapfile eruit moet komen te zien.
Hierin wordt gedefinieerd hoe bepaalde benamingen worden gedaan en hoe structuren worden gemaakt. Dit resulteert in uniformiteit binnen de WMSen.
Zo is bijvoorbeeld de titel
in Lowercase in meervoud zonder afkortingen en de naam
beter leesbaar met leestekens en hoofdletters.
Een ander voorbeeld is dat binnen de Mapfile verschillende manieren kunnen worden gebruikt om data op te halen. Dit omdat het SQL statement vrijheid biedt voor complexe queries.
We geven de voorkeur aan het gebruik van een Filter
blok, dit is sneller leesbaar en op de achtergrond wordt er een where
binnen de SQL gedaan.
Deze alinea zal worden uitgebreid met nieuwe Tips & Tricks wanneer deze uitgezocht zijn.
Sommige mapfiles worden gegenereerd door Python-scripts. Deze zijn te herkennen aan een commentaartje als
# GENERATED BY gen_bomen.py, DO NOT EDIT.
In dit geval moet het genereerscript, hier gen_bomen.py
, worden aangepast
in plaats van de mapfile zelf. Daarna moet het worden gedraaid als
python3 gen_bomen.py > bomen.map
waarna de Docker-container opnieuw moet worden opgebouwd.
Als de wijzigingen aan het script klaar zijn, moeten zowel script als mapfile
worden gecommit in Git (git add bomen.map gen_bomen.py
, etc.). Tijdens
CI/CD wordt gecontroleerd of script en resultaat consistent met elkaar zijn;
zie .github/workflows/
.
De mapfiles in de directory private/
worden door een apart Docker-container
geserved, die weer een container proxy
nodig heeft. Zie
docker-compose.yml
en de map jwtproxy
.
Voeg de volgende regels toe aan de file header.inc
en start de container
opnieuw:
CONFIG "MS_ERRORFILE" "/tmp/ms_error.txt"
DEBUG 5
Na het opvragen van een map zal dan de logging te zien zijn via:
docker exec -it `docker-compose ps -q map` bash -c 'tail -f /tmp/ms_error.txt'