17.8. Een extern algoritme uitvoeren

Notitie

In deze les zullen we zien hoe we algoritmes gebruiken die afhankelijk zijn van een toepassing van een derde partij, in het bijzonder SAGA, die één van de belangrijkste providers van algoritmes is.

Alle algoritmes die we tot dusverre hebben uitgevoerd maken deel uit van het framework Processing. Dat is, zij zijn eigen algoritmes die zijn geïmplementeerd in de plug-in en worden uitgevoerd door QGIS net zoals de plug-in zelf wordt uitgevoerd. Echter, één van de grootste mogelijkheden van het framework Processing is dat het algoritmes kan gebruiken van externe toepassingen en de mogelijkheden van die toepassingen kan uitbreiden. Dergelijke algoritmes zijn verpakt en opgenomen in de Toolbox, zodat u ze eenvoudig vanuit QGIS kunt gebruiken, en gegevens van QGIS kunt gebruiken om ze uit te voeren.

Sommig algoritmes die u ziet in de vereenvoudigde weergave vereisen dat toepassingen van derde partijen zijn geïnstalleerd op uw systeem. Een provider van algoritmes die speciale aandacht behoeft is SAGA (System for Automated Geospatial Analysis). Eerst moeten we alles configureren zodat QGIS SAGA op de juiste wijze kan aanroepen. Dit is niet moeilijk, maar het is belangrijk te weten hoe dit werkt. Elke externe toepassing heeft zijn eigen configuratie, en later in deze zelfde handleiding zullen we enkele van de andere bespreken, maar SAGA zal ons belangrijkste backend zijn, dus zullen we dat hier bespreken.

Als u op Windows werkt, is de beste manier om met externe algoritmes te werken om QGIS te installeren met behulp van het zelfstandige installatieprogramma. Dat zal zorg dragen voor het installeren van alle benodigde afhankelijkheden, inclusief SAGA, dus als u het heeft gebruikt, is er niets anders te doen. U kunt het dialoogvenster Instellingen openen en naar de groep Providers/SAGA gaan.

../../../_images/saga_config.png

Het pad SAGA zou reeds moeten zijn geconfigureerd en moeten wijzen naar de map waar SAGA is geïnstalleerd.

Als u QGIS heeft geïnstalleerd zonder het zelfstandige installatieprogramma, dan moet u daar het pad naar uw installatie van SAGA invoeren (wat u afzonderlijk zou moeten hebben geïnstalleerd). De vereiste versie is SAGA 2.1 [dit wijzigt overeenkomstig de uitgaven van SAGA].

Voor het geval u Linux gebruikt hoeft u het pad naar uw installatie van SAGA niet in te stellen in de configuratie van processing. In plaats daarvan moet u SAGA installeren en er voor zorgen dat de map van SAGA in PATH staat, zodat het kan worden aangeroepen vanaf de console (open eenvoudigweg een console en typ saga_cmd om het te controleren). Onder Linux is de doelversie van SAGA ook 2.1, maar in sommige installaties (zoals de OSGeo Live DVD) heeft u misschien alleen 2.0.8 beschikbaar. er zijn enkele pakketten voor 2.1 beschikbaar, maar zij worden niet algemeen geïnstalleerd en zouden enkele problemen kunnen hebben, dus als u liever de meer algemene en stabielere 2.0.8 zou willen gebruiken, dan kunt u dat doen door compatibiliteit voor 2.0.8 in te schakelen in het dialoogvenster voor configuratie, onder de groep SAGA.

../../../_images/enable208.png

Als SAGA eenmaal is geïnstalleerd, kunt u een algoritme van SAGA starten door dubbel te klikken op de naam ervan, net als met elk ander algoritme. Omdat we de vereenvoudigde interface gebruiken, weet u niet welke algoritmes zijn gebaseerd op SAGA of een andere externe toepassing, maar als dubbelklikt op een er van en de overeenkomende toepassing is niet geïnstalleerd, zult u iets soortgelijks als dit zien.

../../../_images/missing_saga.png

In ons geval, en er van uit gaande dat SAGA juist is geïnstalleerd en geconfigureerd, zou u dit venster niet zien, en u zou in plaats daarvan naar het dialoogvenster voor de parameters gaan.

Laten we het eens proberen met een algoritme dat is gebaseerd op SAGA, dat welke is genaamd Split shapes layer randomly.

../../../_images/split.png

Gebruik de puntenlaag in het project dat bedoeld is voor deze les als invoer, en de standaard waarden voor de parameters, en u zult iets zoals dit krijgen (de splitsing is willekeurig, dus uw resultaat zou anders kunnen zijn).

../../../_images/split_layer.png

De invoerlaag is gesplitst in twee lagen, elk met hetzelfde aantal punten. Dit resultaat is berekend door SAGA, en later overgenomen door QGIS en toegevoegd aan het project van QGIS.

Als alles goed gaat zult u geen verschil merken tussen dit op SAGA gebaseerde algoritme en een van de andere die we eerder uitgevoerd hebben. Echter, SAGA zou, om enige reden, niet in staat kunnen zijn een resultaat te produceren en niet het bestand genereren dat QGIS verwacht. In dat geval zullen er problemen zijn om het resultaat toe te voegen aan het project van QGIS, en een foutbericht zoals dit zal worden weergegeven.

../../../_images/missing_result.png

Dit soort problemen zouden kunnen voorkomen, zelfs als SAGA (of enige andere toepassing die we aanroepen vanuit het framework Processing) correct is geïnstalleerd, en het is belangrijk te weten hoe dit af te handelen. Laten we eens een van deze foutberichten produceren.

Open het algoritme Create graticule en gebruik de volgende waarden.

../../../_images/create_graticule.png

We gebruiken waarden voor breedte en hoogte die groter zijn dan het gespecificeerde bereik, dus kan SAGA geen uitvoer produceren. Met andere woorden, de waarden van de parameters zijn verkeerd, maar zij worden niet gecontroleerd totdat SAGA ze krijgt en probeert het raster te maken. Omdat het het niet kan maken, zal het niet de verwachte laag produceren, en u zult het foutbericht dat hierboven wordt weergegeven zien.

Notitie

In SAGA >= 2.2.3 zal de opdracht automatisch verkeerde gegevens voor invoer aanpassen, zodat u geen fout krijgt. Gebruik negatieve waarden voor delen om een fout uit te lokken.

Het begrijpen van dit soort problemen zal u helpen ze op te lossen en een verklaring te vinden voor wat er gebeurt. Zoals u in het foutbericht kunt zien wordt een test uitgevoerd om te controleren of de verbinding met SAGA correct werkt, wat voor u een indicatie zou kunnen zijn dat er een probleem zou kunnen zijn in hoe het algoritme werd uitgevoerd. Dit is niet alleen van toepassing op SAGA, maar ook op andere externe toepassingen.

In de volgende les zullen we het log van de verwerking introduceren, waar informatie over opdrachten, uitgevoerd door geo-algoritmes, wordt bijgehouden, en u zult zien hoe u meer details verkrijgt als problemen zoals deze optreden.