17.23. Herhalend uitvoeren van algoritmen

Notitie

Deze les toont u een andere manier voor het uitvoeren van algoritmen die vectorlagen gebruiken, door ze herhalend uit te voeren, doorlopend over de objecten in een vectorlaag als invoer

We kennen al Grafische modellen bouwen, wat één manier is van het automatiseren van taken voor Processing. In sommige situaties zou echter Grafische modellen bouwen niet kunnen zijn wat we nodig hebben om een bepaalde taak te automatiseren. Laten we eens naar zo’n situatie kijken en hoe eenvoudig die op te lossen is met een andere functionaliteit: het herhalend uitvoeren van algoritmen.

Open de gegevens die overeenkomen voor dit hoofdstuk. Het zou er zo uit moeten zien.

../../../_images/project1.png

U zult onze welbekende DEM herkennen uit eerdere hoofdstukken en een daaruit uitgenomen verzameling waterbergingen. Veronderstel dat u de DEM dient op te delen in verscheidene kleinere lagen, die elk slechts de hoogtegegevens bevatten van slechts één waterberging. Dat zou handig kunnen zijn als u later enkele parameters wilt berekenen die gerelateerd zijn aan elke waterberging, zoals de gemiddelde hoogte of de hypsografische curve ervan.

Dit kan een lange en saaie taak zijn, speciaal als het aantal waterbergingen groot is. Het is echter, zoals we zullen zien, een taak die eenvoudig geautomatiseerd kan worden.

Het algoritme om te gebruiken voor het clippen van een rasterlaag met een polygoonlaag is genaamd Clip grid with polygons, en heeft het volgende dialoogvenster voor de parameters.

../../../_images/clip3.png

U kunt het uitvoeren met de lagen van waterbergingen en de DEM als invoer, en u zult het volgende resultaat verkrijgen.

../../../_images/full_clip.png

Zoals u kunt zien wordt het gebied, dat bedekt is door alle polygonen van de waterbergingen, gebruikt.

U kunt de DEM clippen met slechts één enkele waterberging door de gewenste waterberging te selecteren en dan het algoritme uit te voeren zoals we eerder deden.

../../../_images/selection.png

Omdat alleen geselecteerde objecten worden gebruikt, zal alleen de geselecteerde polygoon worden gebruikt om de rasterlaag bij te snijden.

../../../_images/selection_clip.png

Door dit voor alle waterbergingen te doen zal dat het resultaat produceren waar we naar op zoek zijn, maar het lijkt niet een praktische manier om het te doen. Laten we, in plaats daarvan, eens zien hoe we die selecteer en snij bij-routine kunnen automatiseren.

Verwijder als eerste de eerdere selectie, zodat opnieuw alle polygonen zullen worden gebruikt. Open nu het algoritme Clip grid with polygon en selecteer dezelfde invoer als hiervoor, maar klik deze keer op de knop aan de rechterkant van de invoer voor de vectorlaag waar u de laag watersheds heeft geselecteerd.

../../../_images/iterate_button.png

Deze knop zal er voor zorgen dat de geselecteerde invoerlaag zal worden gesplitst in net zoveel lagen als er objecten in gevonden worden, waarvan elk één enkele polygoon bevat. Daarmee zal het algoritme herhaaldelijk worden aangeroepen, één keer voor elk van die lagen met één polygoon. Het resultaat, in plaats van slechts één rasterlaag in het geval van dit algoritme, zal een verzameling rasterlagen zijn, elk corresponderend met één van de uitvoeringen van het algoritme.

Hier is het resultaat dat u zult krijgen als u het algoritme voor het clippen uitvoert zoals is uitgelegd.

../../../_images/result_iterative.png

Voor elke laag wordt het kleurenpalet zwart en wit, (of welk palet u dan ook gebruikt), anders aangepast, van zijn minimale tot zijn maximale waarden. Dat is de reden waarom u kunt zien dat de onderscheidenlijke stukken en de kleuren niet lijken overeen te komen met de grenzen tussen de lagen. De waarden komen echter overeen.

Als u een bestandsnaam voor de uitvoer invoert, zullen de resulterende bestanden worden benoemd met behulp van die bestandsnaam en een getal dat correspondeert met elke iteratie als achtervoegsel.