QGIS in de klas onder Windows

In mijn omgeving (Haarlem) is een bekende van mij een Windows Administrator op een Middelbare School.
De school, het Mendelcollege, had in het kader van de Geoweek een gastles aangevraagd en ontvangen. Margit Stapel (GisWijzer) geeft introducties QGIS voor 10 – 14 jarigen op basis- en middelbare scholen.
qgismendel1
Het enige ‘probleem’ was nog even de 30 computers in het computerlokaal te voorzien van QGIS en de demo data.

Samen met de Systeembeheerder hebben we even de verschillende mogelijkheden bekeken, om uiteindelijk te komen tot onderstaand plan. We delen het hier moet iedereen in de hoop dat ook anderen helpt om eenvoudig QGIS uit te rollen op hun school.
De eerste hobbel, was de eigenlijke installatie: QGIS op elke computer? Of op een netwerkschijf? Het laatste leek het eenvoudigst en werd dus uitgevoerd: een kale OSGeo4W installatie van QGIS op een Windows Share en QGIS is beschikbaar met iedereen die toegang heeft tot die schijf.
Dan zijn er een paar andere zaken om rekening mee te houden:
– QGIS schrijft haar instellingen onder Windows weg in het Windows Register. En gebruikt de $USER/.qgis2 folder dan om alle ander zaken als plugins, cache etc in op te slaan.
– Omdat het profiel van de scholieren verhoudingsgewijs beperkt is, voorzagen we problemen om QGIS op de standaard manier op te starten. Ook al omdat we veel gebruik zouden maken van OGC/WMTS services en die alle images opslaan in de cache folder in the .qgis2 directory.
Het blijkt dus dat je QGIS kunt opstarten met wat extra parameters op de commando prompt om het standaard gedrag te beinvloeden:

$ qgis --help
src/app/main.cpp: 402: (main) Starting qgis main
QGIS - 2.3.0-Master 'Master' (80b7021)
QGIS is a user friendly Open Source Geographic Information System.
Usage: /home/richard/apps/qgis/master/debug/bin/qgis [OPTION] [FILE]
OPTION:
[--snapshot filename] emit snapshot of loaded datasets to given file
[--width width] width of snapshot to emit
[--height height] height of snapshot to emit
[--lang language] use language for interface text
[--project projectfile] load the given QGIS project
[--extent xmin,ymin,xmax,ymax] set initial map extent
[--nologo] hide splash screen
[--noplugins] don't restore plugins on startup
[--nocustomization] don't apply GUI customization
[--customizationfile] use the given ini file as GUI customization
[--optionspath path] use the given QSettings path
[--configpath path] use the given path for all user configuration
[--code path] run the given python file on load
[--defaultui] start by resetting user ui settings to default
[--help] this text

Dus door:

qgis.exe --configpath c:/temp/foo

te gebruiken, instrueer je QGIS om NIET de standaard manier te laten gebruiken voor het opslaan van de Settings en .qgis map, maar om juist een schone(!) set van settings aan te maken op de gegeven plek, EN om een ini bestand te gebruiken voor allen andere opties en die file op te slaan in QGIS/QGIS2.ini
Verder is er nog:

qgis.exe --optionspath c:/temp/foo

om QGIS te laten weten dat het QGIS/QGIS2.ini om gebruiken om de aangeven plek, maar daarna de gewone .qgis2 folder moet gebruiken voor alle andere zaken.
Met deze informatie kun je allerlei scenario’s bedenken. Uiteindelijk kwamen we dus op:
– een osgeo4w installatie op een shared network schijf
– in het .bat bestand wat QGIS opstart: c:/OSGeo4W/bin/qgis.bat de laatste lijn aanpassen van:
start "QGIS" /B "%OSGEO4W_ROOT%"\bin\qgis-bin.exe %*
tot
start "QGIS" /B "%OSGEO4W_ROOT%"\bin\qgis-bin.exe --configpath c:/temp/qgisconfig %*
– de demonstratie data gewoon kopieren naar c:\temp\qgisdata op alle individuele computers
Nu kunnen alle kids genieten van een uitstekende QGIS les 🙂
qgismendel2
Natuurlijk zijn er nog vele scenario’s mogelijk. Een probleempje waar we tegenaan liepen was dat na de eerste les sommige kinderen aanpassingen hadden gemaakt in de stijlen of lagen (opgeslagen in het .qgs project bestand). Of zelfs aanpassingen hadden gemaakt in de data. Dus waarschijnlijk is het aanmaken van een soort mappen sjabloon het handigst. Bij het starten van de lest moet dan eerst een klein scriptje worden gedraaid wat weer even een ‘verse’ data en settings directory klaarzet voor iedereen.
Een ander scenario: je wilt dat iedereen bepaalde QGIS plugins geinstalleerd en enbled heeft. Dit zou je kunnen doen door de plugins al in de c:\temp\qgisconfig\python\plugins map te zetten. OF in de plugins directory van de QGIS installatie zelf (op de share): x:\OSGeo4w\apps\python\plugins\. Ze moeten dan natuurlijk wel allemaal nog ‘geactiveerd. zijn. Dit zou je dus kunnen doen in het project bestandje in het sjabloon project zodat dit in het te kopieren ini bestandje staat.
Intermezzo: hoe slaat QGIS al die settings, cache, plugins en andere zaken eigenlijk op?
QGIS, is een programma dat gebruikt maak van de Qt4 software bibliotheek en gebruikt dan ook het Qt QSettings mechanisme om instellingen op te slaan.
Wat staat er allemaal in zo’n Settings (‘options’) bestand? Hier kun je een voorbeeld bestand downloaden van een QGIS installatie die net is geinstalleerd, waarin twee plugins zijn geladen, en gebruik is gemaakt van een WMTS laag uit het Nationaal Georegister. Het is in het standaard ini format: in de PythonPlugins sectie, kun je aflezen welke plugins zijn geactiveerd. Verder kun je de ingestelde locale zien, maar ok de plaats, grootte en geometrie an de verschillende QGIS windows worden hier bewaard. Verder kun je hier opgeslagen database verbindingen aantreffen (inclusief de gebruikersnaam en wachtwoord etc etc. Bekijk het maar eens, best interessant.
Hierbij nog wel de opmerking dat onder Windows, het standaard gedrag van QSettings dus just is om al die instellingen weg te schrijven in het Windows Regsiter. Als je die eens wilt bekijken, zoek dan in de buurt van deze key:
HKEY_USERS\*******\Software\QGIS\QGIS2

Linux daarentegen gebruikt ‘gewoon’ een ini bestand:
~/.config/QGIS/QGIS2.conf
Maar als je dan weer gebruik maak van de configpath optie in Windows, dan wordt ook hier het ini formaat gebruikt.
Welke ander configuratie instellingen (config) gebruikt QGIS nog meer? Kijk maar eens in de User/Home directory in de .qgis2 map. Je zult er een aantal directories aantreffen:
– python/plugins: met alle gedownloade python plugins (QGIS download eigenlijk gewoon een zip en pakt het dan uit in die directory)
– cache: de standaard directory voor caching van WMS/WMTS plaatjes
– gdal_pam
– processing: standaard lokatie voor tijdelijke bestanden van ‘processing’
Dan nog wat bestanden waaronder:
– qgis.db: een sqlite database bestand met alle Projectie / Spatial Reference Systems informatie die gebruikt wordt door QGIS.
Dus voor de aardigheid: start QGIS eens op met de configpath parameter en bekijk de bestanden en mappen eens om een beter inzicht te krijgen over de werking van QGIS.

Join the Conversation

5 Comments

  1. I just wonder that does QGIS dev-team has a plan to upgrade from Qt4 to Qt5?

  2. Leuk verhaal. Goed gedaan Richard, GIS al bij de jeugd bekend maken met behulp van Open Source Software!

  3. Bij ons op het werk gaan we met QGIS starten. Misschien willen die kids ons wel lesgeven 😉

Leave a comment

Your email address will not be published. Required fields are marked *