Skip to content

Amsterdam/mapserver

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

MapServer-configuratie voor map.data.amsterdam.nl.

Vereisten

Opstarten

  • Hernoem .env-example naar .env
  • Pas in .env het pad aan waar je je Database DIR neer wil zetten.
  • 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?service=WMS&request=GetCapabilities

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'