17.21. Specifiek modelleergereedschap gebruiken om een model te maken

Notitie

Deze les laat zien hoe enkele algoritmes te gebruiken die alleen beschikbaar zijn in Grafische modellen bouwen, om aanvullende functionaliteiten te verschaffen aan modellen.

Het doel van deze les is om Grafische modellen bouwen te gebruiken om een algoritme voor interpolatie te maken dat rekening houdt met de huidige selectie, niet slechts om alleen de geselecteerde objecten te gebruiken, maar om het bereik van die selectie te gebruiken om de geïnterpoleerde rasterlaag te maken.

Het proces voor interpolatie omvat twee stappen, zoals al eerder is uitgelegd in eerdere lessen: rasteriseren van de puntenlaag en de waarden geen gegevens vullen die in die gerasteriseerde laag verschijnen. In het geval dat de puntenlaag een selectie heeft, zullen alleen de geselecteerde punten worden gebruikt, maar als het uitvoerbereik is ingesteld op automatisch aanpassen, zal het volledige bereik van de laag worden gebruikt. Dat is, het bereik van de laag wordt altijd beschouwd als het volledige bereik van alle objecten, niet die welke slechts zijn berekend uit de geselecteerde. We zullen dat proberen te repareren door enkele aanvullende gereedschappen te gebruiken in ons model.

Open Grafische modellen bouwen en start het model door de vereiste invoer toe te voegen. In dit geval hebben we een vectorlaag nodig (beperkt tot punten) en een attribuut ervan, met de waarden die we zullen gebruiken voor het rasteriseren.

../../../_images/inputs.png

De volgende stap is om het bereik van de geselecteerde objecten te berekenen. Dat is waar we het Specifiek modelleergereedschap, genaamd Vectorlaag-extent kunnen gebruiken. Eerst zullen we een laag moeten maken die het bereik van die geselecteerde objecten heeft. Daarna kunnen we dit gereedschap op die laag gebruiken.

Een gemakkelijke manier om een laag te maken met het bereik van de geselecteerde objecten is om een convex hull te berekenen van de puntenlaag voor de invoer. Dat zal alleen de geselecteerde punten gebruiken, dus zal de convex hull hetzelfde begrenzingsvak hebben als de selectie. Daarna kunnen we het algoritme Vectorlaag-extent toevoegen, en de laag van de convex hull gebruiken als invoer. Het zou er in het venster van Grafische modellen bouwen zo uit moeten zien:

../../../_images/convexhull_and_extent.png

Het resultaat van Vectorlaag-extent is een verzameling van vier numerieke waarden en een object Bereik. We zullen zowel de numerieke uitvoer als het bereik voor deze oefening gebruiken.

../../../_images/extent_outputs.png

We kunnen nu het algoritme toevoegen dat de vectorlaag rasteriseert, met behulp van het bereik van het algoritme Vectorlaag-extent als invoer.

Vul de parameters van het algoritme in zoals hieronder weergegeven:

../../../_images/rasterize3.png

Het venster zou er nu zo uit moeten zien.

../../../_images/canvas_rasterize.png

Vul tenslotte de waarden Geen gegevens van de rasterlaag met behulp van het algoritme Close gaps.

../../../_images/close_gaps1.png

Het algoritme is nu klaar om te worden opgeslagen en om te worden toegevoegd aan de Toolbox. U kunt het uitvoeren en het zal een rasterlaag genereren middels het interpoleren van de geselecteerde punten in de invoerlaag, en de laag zal hetzelfde bereik hebben als de selectie.

Hier is een verbetering voor het algoritme. We hebben een hard gecodeerde waarde gebruikt voor de grootte van de cel bij het rasteriseren. Deze waarde is prima voor onze test-invoerlaag, maar dat zou niet zo hoeven zijn in andere gevallen. We zouden een nieuwe parameter kunnen toevoegen, zodat de gebruiker de gewenste waarde kan invullen, maar een betere benadering zou zijn om die waarde automatisch te laten berekenen.

We kunnen het Specifiek modelleergereedschap Calculator gebruiken, en die waarde laten berekenen uit de coördinaten van het bereik. We kunnen, om bijvoorbeeld een laag te maken met een vaste breedte van 100 pixels, de volgende formule in de Calculator gebruiken.

../../../_images/calculator1.png

Nu moeten we het algoritme voor het rasteriseren bewerken, zodat het de uitvoer van de Calculator gebruikt in plaats van de hard gecodeerde waarde.

Het uiteindelijke algoritme zou er als volgt uit moeten zien:

../../../_images/final.png