Viktigt
Översättning är en gemenskapsinsats du kan gå med i. Den här sidan är för närvarande översatt till 72.22%.
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.
The next step is to compute the extent of the selected features. That’s where we can use the model-only tool called Vector layer bounds. First, we will have to create a layer that has the extent of those selected features. Then, we can use this tool on that layer.
An easy way of creating a layer with the extent of the selected features is to compute a convex hull of the input points layer. It will use only the selected point, so the convex hull will have the same bounding box as the selection. Then we can add the Vector layer bounds algorithm, and use the convex hull layer as input. It should look this in the modeler canvas:
The result from the Vector layer bounds is a set of four numeric values and a extent object. We will use both the numeric outputs and the extent for this exercise.
We can now add the algorithm that rasterizes the vector layer, using the extent from the Vector layer bounds algorithm as input.
Fyll i parametrarna för algoritmen enligt nästa bild:
Canvas bör nu se ut som följer.
Finally, fill the no-data values of the raster layer using the Close gaps algorithm.
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.
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: