23.5. Grafische modellen bouwen

Grafische modellen bouwen stelt u in staat complexe modellen te maken met behulp van een eenvoudige en gemakkelijk te gebruiken interface. Bij het werken met een GIS staan de meeste bewerkingen voor analyses niet op zichzelf, maar maken deel uit van een reeks bewerkingen. Met Grafische modellen bouwen kan die keten van bewerkingen worden verpakt in één enkel proces, wat het handiger maakt het later als één enkel proces uit te voeren op een andere verzameling invoer. Het maakt niet uit hoeveel stappen en verschillende algoritmen er bij betrokken zijn, een model wordt uitgevoerd als één enkel algoritme, en bespaart tijd en inspanning.

Grafische modellen bouwen kan worden geopend vanuit het menu Processing (Processing ► Grafische modellen bouwen).

Grafische modellen bouwen heeft een werkruimte waar de structuur van het model, en de werkstroom die het vertegenwoordigt, worden weergegeven. De linkerkant van het venster is een gedeelte met vijf tabs dat kan worden gebruikt om nieuwe elementen aan het model toe te voegen.

  1. Modeleigenschappen: u kunt de naam van het model specificeren en de groep die het zal bevatten

  2. Invoer: alle invoer die uw model zullen vormen

  3. Algoritmen: de beschikbare algoritmen van Processing

  4. Variabelen: u kunt ook variabelen definiëren die alleen beschikbaar zijn in Grafische modellen bouwen van Processing

  5. Geschiedenis Ongedaan maken: dit paneel zal alles registreren dat in Grafische modellen bouwen gebeurd, wat het gemakkelijker maakt fouten ongedaan te maken.

../../../_images/modeler_canvas.png

Fig. 23.16 Grafische modellen bouwen

Het maken van een model omvat twee basisstappen:

  1. Definitie van noodzakelijke invoer. Deze invoer zal worden toegevoegd aan het venster Parameters, zodat de gebruiker zijn waarden kan instellen bij het uitvoeren van het model. Het model zelf is een algoritme, dus het venster Parameters wordt automatisch gegenereerd zoals met alle beschikbare algoritmes in het framework Processing.

  2. Definitie van de werkstroom. Met behulp van de invoergegevens van het model wordt de werkstroom gedefinieerd door het toevoegen van algoritmen en selecteren hoe zij de gedefinieerde invoer gebruiken of hoe zij de uitvoer, gegenereerd door andere algoritmen in het model, gebruiken.

23.5.1. Definitie van invoer

De eerste stap is het definiëren van de invoer voor het model. De volgende elementen zijn te vinden in het paneel Invoer aan de linkerkant van het venster Grafische modellen bouwen:

  • Configuratie voor authenticatie

  • Booleaanse waarde

  • Kleur

  • Naam verbinding

  • Coördinaat bewerken

  • CRS

  • Schema van de database

  • Tabel van de database

  • Datetime

  • Afstand

  • Enum

  • Expressie

  • Bereik

  • Velden samengevoegd

  • Veldoverzicht

  • Bestand/Map

  • Geometrie

  • Laag

  • Kaartthema

  • Matrix

  • Laag met mazen

  • Meervoudige invoer

  • Getal

  • Punt

  • Afdruklay-out

  • Item voor afdruklay-out

  • Bereik

  • Rasterband

  • Rasterlaag

  • Schaal

  • Tekenreeks

  • TIN gemaakte lagen

  • Vectorobjecten

  • Vectorveld

  • Vectorlaag

  • Vectortegels schrijven-lagen

Notitie

Met de muis over de invoer gaan zal een helptip weergeven met aanvullende informatie.

Bij dubbelklikken op een element wordt een dialoogvenster weergegeven dat u de karakteristieken laat definiëren. Afhankelijk van de parameter, zal het dialoogvenster tenminste één element bevatten (de beschrijving, wat datgene is dat de gebruiker zal zien bij het uitvoeren van het model). Bijvoorbeeld bij het toevoegen van een numerieke waarde, zoals is te zien in de volgende afbeelding, moet u, in aanvulling op de beschrijving van de parameter, een standaardwaarde en het bereik van geldige waarden instellen.

../../../_images/models_parameters.png

Fig. 23.17 Definiëren parameters model

U kunt uw invoer opgeven als verplicht voor uw model door de optie checkbox Verplicht te selecteren en door het keuzevak unchecked Geavanceerd te selecteren kunt u er voor zorgen dat de invoer binnen het gedeelte Geavanceerd staat. Dit is in het bijzonder nuttig als het model veel parameters heeft en enkele daarvan belangrijk zijn, maar u ze toch wilt kiezen.

De tab Opmerkingen stelt u in staat de invoer te taggen met meer informatie, om de parameter beter te omschrijven. Opmerkingen zijn alleen zichtbaar in het kaartvenster van Grafische modellen bouwen en niet in het uiteindelijke dialoogvenster van het algoritme.

Voor elke toegevoegde invoer wordt een nieuw element toegevoegd aan de werkruimte van Grafische modellen bouwen.

../../../_images/models_parameters2.png

Fig. 23.18 Parameters Grafische modellen bouwen

U kunt ook invoer toevoegen door het type invoer te slepen vanuit de lijst en neer te zetten op de positie waar u het wilt plaatsen in het venster van Grafische modellen bouwen. Als u een parameter van een bestaande invoer wilt wijzigen, dubbelklik er dan eenvoudigweg op en hetzelfde dialoogvenster zal verschijnen.

23.5.2. Definitie van de werkstroom

In het volgende voorbeeld zullen we twee invoeren en twee algoritmen toevoegen. Het doel van het model is om de hoogtewaarden uit een DEM rasterlaag te kopiëren naar een lijnlaag met het algoritme Drape, en dan de totale stijging van de lijnlaag te berekenen met het algoritme Klimmen langs lijn.

Kies, op de tab Invoer, de twee invoeren als Vectorlaag voor de lijn en Rasterlaag voor de DEM. We zijn nu klaar om de algoritmen toe te voegen aan de werkstroom.

Algoritmen kunnen worden gevonden op de tab Algoritmen, nagenoeg op dezelfde wijze gegroepeerd als in de Toolbox van Processing.

../../../_images/models_parameters3.png

Fig. 23.19 Invoer modellen

Dubbelklik op de naam van een algoritme en sleep en zet het neer, net zoals bij invoer, om een algoritme aan een model toe te voegen. Net als voor de invoeren kunt u de beschrijving van het algoritme wijzigen en een opmerking toevoegen. Bij het toevoegen van een algoritme, zal een dialoogvenster voor de uitvoering verschijnen met een soortgelijke inhoud als die in het paneel voor uitvoering dat wordt weergegeven bij het uitvoeren van het algoritme vanuit de Toolbox. De volgende afbeelding geeft de dialoogvensters weer voor ‘Drape (Z-waarde instellen vanuit raster)’ en ‘Klimmen langs lijn’.

../../../_images/models_parameters4.png

Fig. 23.20 Parameters algoritme model

Zoals u kunt zien zijn er enkele verschillen.

U heeft vijf keuzes om de invoeren van de algoritmen te definiëren:

  • integer Waarde: stelt u in staat de parameter in te stellen vanuit een geladen laag in het project van QGIS of naar een laag in een map te bladeren

  • expression Vooraf berekende waarde: met deze optie kunt u de Expressiebouwer openen en uw eigen expressie definiëren om de parameter te vullen. Modelinvoeren als ook enkele andere laagstatistieken zijn beschikbaar als variabelen en worden vermeld boven in het dialoogvenster Zoeken van de Expressiebouwer

  • processingModel Invoer model: kies deze optie als de parameter komt uit een invoer van het model dat u hebt gedefinieerd. Eenmaal aangeklikt zal deze optie alle geschikte invoeren vermelden voor de parameter

  • processing Uitvoer algoritme: is nuttig als de parameter voor de invoer van een algoritme een uitvoer van een ander algoritme is

Uitvoeren van algoritmen hebben de aanvullende optie processingOutput Uitvoer model die de uitvoer van het algoritme beschikbaar maakt in het model.

Als een laag die door het algoritme wordt gemaakt alleen moet worden gebruikt als invoer voor een ander algoritme, bewerk dat tekstvak dan niet.

In de volgende afbeelding ziet u de twee parameters voor de invoer gedefinieerd als Invoer model en de tijdelijke uitvoerlaag:

../../../_images/models_parameters5.png

Fig. 23.21 Invoer- en uitvoerparameters algoritme

In alle gevallen zult u een aanvullende parameter Afhankelijkheden aantreffen die niet beschikbaar is bij het aanroepen van het algoritme in de Toolbox. Deze parameter stelt u in staat de volgorde te definiëren waarin de algoritmen worden uitgevoerd door uitdrukkelijk één algoritme als een ouder van het huidige te definiëren Dit forceert dat het ouder-algoritme wordt uitgevoerd vóór het huidige.

Wanneer u de uitvoer van een eerder algoritme gebruikt als de invoer voor uw algoritme, stelt dat impliciet het eerdere algoritme in als ouder van het huidige (en plaatst de overeenkomende pijl in de werkruimte van Grafische modellen bouwen). In sommige gevallen kan een algoritme echter afhankelijk zijn van een ander, zelfs als het er geen uitgevoerd object van gebruikt (bijvoorbeeld een algoritme dat een zin in SQL uitvoert op een database van PostGIS en een ander dat een laag importeert in dezelfde database). Selecteer in dat geval slechts het eerdere algoritme in de parameter Afhankelijkheden en zij zullen in de juiste volgorde worden uitgevoerd.

Klik, als eenmaal aan alle parameters geldige waarden zijn toegewezen, op OK en het algoritme zal worden toegevoegd aan de werkruimte. Het zal worden gekoppeld aan elementen in de werkruimte (algoritme of invoer) dat objecten verschaft die worden gebruikt als invoer voor het algoritme.

Elementen kunnen naar een andere positie in de werkruimte worden gesleept. Dit is nuttig om de structuur van het model duidelijker en meer intuïtief te maken. U kunt ook de grootte van elementen wijzigen. Dat is in het bijzonder nuttig als de beschrijving van de invoer of het algoritme lang is.

Koppelingen tussen elementen worden automatisch bijgewerkt en u ziet een knop Plus aan de onderzijde van elk algoritme. Klikken op die knop zal alle in- en uitvoer van het algoritme vermelden, zodat u snel een overzicht hebt.

U kunt in- en uitzoomen met behulp van het muiswiel.

../../../_images/models_model.png

Fig. 23.22 Een volledig model

U kunt uw algoritme op elk moment uitvoeren door te drukken op de knop Model uitvoeren. Om het algoritme te kunnen gebruiken vanuit de Toolbox, moet het worden opgeslagen en het dialoogvenster Grafische modellen bouwen worden gesloten, om de Toolbox in staat te stellen zijn inhoud te verversen.

23.5.3. Interactie met de werkruimte en elementen

U kunt de knoppen zoomIn, zoomOut, zoomActual en zoomFullExtent gebruiken om in de werkruimte van Grafische modellen bouwen te zoomen. Het gedrag van de knoppen is in de basis hetzelfde als op de hoofdwerkbalk van QGIS.

Het paneel Geschiedenis Ongedaan maken, samen met de knoppen undo en redo zijn bijzonder nuttig om snel terug te keren naar een eerdere situatie. Het paneel Geschiedenis Ongedaan maken vermeldt alles wat u heeft gedaan bij het maken van de werkstroom.

U kunt veel elementen tegelijkertijd verplaatsen of wijzigen in grootte door ze eerst te selecteren, slepend met de muis.

Als u de elementen wilt snappen tijdens het verplaatsen in de werkruimte kunt u Beeld ► Snappen inschakelen kiezen.

Het menu Bewerken bevat enkele bijzonder nuttige opties voor interactie met de elementen van uw model:

  • selectAllAlles selecteren: selecteert alle elementen van het model

  • Geselecteerde componenten aan raster snappen: snap en lijn de elementen uit op een raster

  • undoOngedaan maken: maak de laatste actie ongedaan

  • redoOpnieuw: voer de laatste actie opnieuw uit

  • editCutKnippen: knip de geselecteerde elementen

  • editCopyKopiëren: kopieer de geselecteerde elementen

  • editPastePlakken: plak de elementen

  • deleteSelectedGeselecteerde componenten verwijderen: verwijder alle geselecteerde elementen uit het model

  • Groepsvak toevoegen: voegt een te slepen vak toe aan de werkruimte. Deze mogelijkheid is bijzonder nuttig in grote modellen om elementen in de werkruimte te groeperen en de werkstroom schoon te houden. We zouden bijvoorbeeld alle invoeren van het voorbeeld kunnen groeperen:

    ../../../_images/model_group_box.png

    Fig. 23.23 Model groepsvak

U kunt de naam en kleur van de vakken wijzigen. Groepsvakken zijn zeer nuttig als zij samen worden gebruikt met Beeld ► Zoom naar. Dit stelt u in staat te zoomen naar een specifiek gedeelte van het model.

U wilt misschien de volgorde van de invoeren veranderen en hoe zij zijn vermeld in het hoofddialoogvenster van het model. Aan de onderzijde van het paneel Invoer vindt u de knop Invoer model opnieuw sorteren… en door daarop te klikken verschijnt ene nieuw dialoogvenster dat u in staat stelt de volgorde van de invoeren te veranderen:

../../../_images/model_reorder_inputs.png

Fig. 23.24 Invoer model opnieuw sorteren

23.5.4. Opslaan en laden van modellen

Gebruik de knop fileSaveModel opslaan om het huidige model op te slaan en de knop fileOpenModel openen om een eerder opgeslagen model te openen. Modellen worden opgeslagen met de extensie .model3. Als het model al werd opgeslagen vanuit het venster Grafische modellen bouwen, zult u niet naar een bestandsnaam worden gevraagd. Het bestand zal worden gebruikt voor volgende opslag, omdat er al een bestand is geassocieerd met het model.

Vóór het opslaan van een model moet u een naam en een groep er voor invoeren in de tekstvakken in het bovenste gedeelte van het venster.

Modellen die zijn opgeslagen in de map models (de standaardmap als u wordt gevraagd naar een bestandsnaam om het model op te slaan) zullen in de corresponderende tak in de Toolbox verschijnen. Wanneer de Toolbox wordt gestart, zoekt het in de map models naar bestanden met de extensie .model3 en laadt de modellen die zij bevatten. Omdat een model in zichzelf een algoritme is, kan het aan de Toolbox worden toegevoegd, net als elk ander algoritme.

Modellen kunnen ook in het projectbestand worden opgeslagen met behulp van de knop addToProjectModel in project opslaan. Modellen die worden opgeslagen met deze methode zullen niet als bestanden .model3 naar de schijf worden weggeschreven, maar zullen worden ingebed in het projectbestand .qgz.

Projectmodellen zijn beschikbaar in het menu qgsProjectFileProjectmodellen van de Toolbox.

De map Modellen kan worden ingesteld in het dialoogvenster Opties van Processing onder de groep Modellen.

Modellen die zijn geladen uit de map models verschijnen niet alleen in de Toolbox, maar ook in de boom met algoritmen op de tab Algoritmes van het venster Grafische modellen bouwen. Dat betekent dat u een model kunt invoegen als deel van een groter model, net zoals andere algoritmen.

Modellen zullen worden weergegeven in het paneel Browser en kunnen van daaruit worden uitgevoerd.

23.5.4.1. Een model als afbeelding, PDF of SVG exporteren

Een model kan ook worden geëxporteerd als een afbeelding, SVG of PDF (ter illustratie) door te klikken op saveMapAsImageAls afbeelding exporteren, saveAsPDFAls PDF exporteren of saveAsSVGAls SVG exporteren.

23.5.5. Bewerken van een model

U kunt het model, dat u momenteel maakt, bewerken, de werkstroom opnieuw definiëren en de relaties tussen de algoritmen en invoer die het model definiëren.

Als u met rechts klikt op een algoritme in de werkruimte, zult u een contextmenu zien zoals dat wat hieronder wordt weergegeven:

../../../_images/modeler_right_click.png

Fig. 23.25 Grafische modellen bouwen, klik met rechts

Selecteren van de optie Verwijderen zal het geselecteerde algoritme verwijderen. Een algoritme kan alleen worden verwijderd als er geen andere algoritmes van afhankelijk zijn. Dat is, als er geen uitvoer van het algoritme wordt gebruikt in een ander als invoer. Als u probeert een algoritme te verwijderen waarvan andere afhankelijk zijn, zal een waarschuwingsbericht, zoals dat wat hieronder wordt weergegeven, worden getoond:

../../../_images/cannot_delete_alg.png

Fig. 23.26 Kan algoritme niet verwijderen

Selecteren van de optie Bewerken… zal het dialoogvenster Parameter van het algoritme weergeven, zodat u de invoer- en parameterwaarden kunt wijzigen. Niet alle beschikbare elementen voor invoer in het model zullen verschijnen als beschikbare invoer. Lagen of waarden die worden gemaakt in een meer gevorderde stap in de werkstroom die is gedefinieerd door het model, zal niet beschikbaar zijn als zij cirkelverwijzingen veroorzaken.

Selecteer de nieuwe waarden en klik op de knop OK zoals gewoonlijk. De verbindingen tussen de elementen van het model zullen overeenkomstig wijzigen in de werkruimte van Grafische modellen bouwen.

Opmerking toevoegen… stelt u in staat een opmerking toe te voegen aan het algoritme om het gedrag beter te beschrijven.

Een model kan gedeeltelijk worden uitgevoerd door enkele van zijn algoritmen uit te schakelen. Selecteer de optie Deactiveren in het contextmenu dat verschijnt door met rechts te klikken op een element van een algoritme om dit te doen. Het geselecteerde algoritme, en alle in het model die daarvan afhankelijk zijn, zullen grijs worden weergegeven en zullen niet worden uitgevoerd als deel van het model.

../../../_images/deactivated.png

Fig. 23.27 Model met uitgeschakelde algoritmen

Door met rechts te klikken op een algoritme dat niet actief is, zult u een menuoptie Activate zien die u kunt gebruiken om het opnieuw te activeren.

23.5.6. Bewerken van Help-bestanden Grafische modellen bouwen en meta-informatie

U kunt vanuit Grafische modellen bouwen zelf uw modellen documenteren. Klik op de knop processingHelpHelp model bewerken en een dialoogvenster, zoals dat wat hieronder wordt weergegeven, zal verschijnen.

../../../_images/help_edition.png

Fig. 23.28 Help bewerken

Aan de rechterkant ziet u een eenvoudige HTML-pagina, die is gemaakt met behulp van de beschrijving van de parameters voor de invoer en de uitvoer van het algoritme, tezamen met enkele aanvullende items zoals een algemene beschrijving van het model of de auteur ervan. De eerste keer dat u de bewerker voor de Help opent, zijn al deze beschrijvingen leeg, maar u kunt ze bewerken met behulp van de elementen aan de linkerkant van het dialoogvenster. Selecteer een element in het bovenste gedeelte en schrijf dan de beschrijving ervan in het tekstvak onderin.

Help voor een model wordt opgeslagen als deel van het model zelf.

23.5.7. Een model als script voor Python exporteren

Zoals we in een later hoofdstuk zullen zien kunnen algoritmen van Processing worden aangeroepen vanuit de console voor Python van QGIS en nieuwe algoritmen van Processing kunnen worden gemaakt met Python. Een snelle manier om zo’n script voor Python te maken is om een model te maken en dat te exporteren als bestand voor Python.

Klik, om dat te doen, op saveAsPythonAls scriptalgoritme exporteren… in de werkruimte of klik met rechts op de naam van het model in de Toolbox van Processing en kies Model als algoritme voor Python exporteren….

23.5.8. Over beschikbare algoritmen

Het kan u zijn opgevallen dat sommige algoritmen, die kunnen worden uitgevoerd vanuit de Toolbox, niet verschijnen in de lijst met beschikbare algoritmen als u een model ontwerpt. Een algoritme moet de juiste semantiek hebben om te kunnen worden opgenomen in een model. Als een algoritme niet een dergelijke goed gedefinieerde semantiek heeft (bijvoorbeeld als het aantal uit te voeren lagen van tevoren niet bekend is), dan is het niet mogelijk om het binnen een model te gebruiken, en zal het niet verschijnen in de lijst met algoritmen die u vindt in het dialoogvenster van Grafische modellen bouwen.