Viktigt

Översättning är en gemenskapsinsats du kan gå med i. Den här sidan är för närvarande översatt till 100.00%.

17.21. Använda verktyg som endast är avsedda för modellerare för att skapa en modell

Observera

Den här lektionen visar hur man använder vissa algoritmer som endast är tillgängliga i modelleringsprogrammet för att ge modellerna ytterligare funktionalitet.

Målet med den här lektionen är att använda modelleraren för att skapa en interpoleringsalgoritm som tar hänsyn till det aktuella urvalet, inte bara för att använda endast valda funktioner, utan för att använda omfattningen av det urvalet för att skapa det interpolerade rasterlagret.

Interpoleringsprocessen omfattar två steg, som redan har förklarats i tidigare lektioner: rastrering av punktlagret och fyllning av de värden utan data som visas i det rastrerade lagret. Om punktlagret har ett urval kommer endast valda punkter att användas, men om utmatningens omfattning är inställd på att justeras automatiskt kommer hela lagrets omfattning att användas. Det innebär att lagrets utsträckning alltid anses vara den fullständiga omfattningen av alla funktioner, inte den som beräknas från bara de valda. Vi kommer att försöka åtgärda detta genom att använda några ytterligare verktyg i vår modell.

Öppna modelleraren och starta modellen genom att lägga till de nödvändiga ingångarna. I det här fallet behöver vi ett vektorlager (begränsat till punkter) och ett attribut från det, med de värden som vi kommer att använda för rasterisering.

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

Nästa steg är att beräkna omfattningen av de valda funktionerna. Det är här vi kan använda det modellverktyg som kallas Vector layer bounds. Först måste vi skapa ett lager som har omfattningen av de valda funktionerna. Sedan kan vi använda det här verktyget på det lagret.

Ett enkelt sätt att skapa ett lager med omfattningen av de valda funktionerna är att beräkna ett konvext skrov för lagret med inmatningspunkter. Det kommer bara att använda den valda punkten, så det konvexa skrovet kommer att ha samma avgränsningsbox som urvalet. Sedan kan vi lägga till algoritmen Vector layer bounds och använda det konvexa skrovlagret som indata. Det bör se ut så här i modelleringsduken:

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

Resultatet från Vector layer bounds är en uppsättning med fyra numeriska värden och ett extent-objekt. Vi kommer att använda både de numeriska värdena och extent-objektet i den här övningen.

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

Vi kan nu lägga till algoritmen som rastrerar vektorlagret, med hjälp av omfattningen från algoritmen Vector layer bounds som indata.

Fyll i parametrarna för algoritmen enligt nästa bild:

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

Canvas bör nu se ut som följer.

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

Slutligen fyller du i rasterlagrets värden utan data med hjälp av algoritmen Close gaps.

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

Algoritmen är nu redo att sparas och läggas till i verktygslådan. Du kan köra den och den kommer att generera ett rasterlager genom att interpolera de valda punkterna i inmatningslagret, och lagret kommer att ha samma utsträckning som urvalet.

Här är en förbättring av algoritmen. Vi har använt ett harkodat värde för cellstorleken vid rastrering. Detta värde är bra för vårt testinmatningslager, men kanske inte för andra fall. Vi skulle kunna lägga till en ny parameter, så att användaren anger önskat värde, men ett mycket bättre tillvägagångssätt skulle vara att få det värdet automatiskt beräknat.

Vi kan använda kalkylatorn för enbart modellering och beräkna det värdet från omfattningskoordinaterna. Om du t.ex. vill skapa ett lager med en fast bredd på 100 pixlar kan du använda följande formel i kalkylatorn.

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

Nu måste vi redigera rasteriseringsalgoritmen så att den använder kalkylatorns utdata i stället för det hårdkodade värdet.

Den slutliga algoritmen bör se ut så här:

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