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 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 naar insecure

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.

Tips & Tricks

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.

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'