mapserver
mapserver copied to clipboard
Mapserver configuration for various public datasets
MapServer-configuratie voor map.data.amsterdam.nl.
Vereisten
Opstarten
- 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 MapServer:
docker-compose run -p "8383:80" -v /tmp/srv/lufo:/mnt/lufo -v /tmp/srv/infrarood/:/mnt/infrarood map
.
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.map
Benader deze URL's niet via een webbrowser, dat zal in het algemene geval niet werken.
Ontwikkelen
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.
Gegenereerde mapfiles
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/
.
Private mapfiles
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
.
DEBUG Mapserver
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'