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

  • 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'