17.21. Utilização de ferramentas apenas de modelagem para a criação de um modelo

Nota

Esta lição mostra como usar alguns algoritmos que estão disponíveis apenas no modelador, para fornecer funcionalidade adicional aos modelos.

O objetivo desta lição é usar o modelador para criar um algoritmo de interpolação que leve em consideração a seleção atual, não apenas para usar apenas recursos selecionados, mas para usar a extensão dessa seleção para criar a camada raster interpolada.

O processo de interpolação envolve duas etapas, como já foi explicado em lições anteriores: rasterizar a camada de pontos e preencher os valores sem dados que aparecem na camada rasterizada. Caso a camada de pontos tenha uma seleção, apenas os pontos selecionados serão usados, mas se a extensão de saída estiver configurada para ser ajustada automaticamente, a extensão total da camada será usada. Ou seja, a extensão da camada é sempre considerada a extensão total de todas as feições, não aquela computada apenas a partir das selecionadas. Tentaremos corrigir isso usando algumas ferramentas adicionais em nosso modelo.

Abra o modelador e inicie o modelo adicionando as entradas necessárias. Neste caso, precisamos de uma camada vetorial (restrita a pontos) e um atributo dela, com os valores que utilizaremos para a rasterização.

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

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:

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

O resultado dos Limites da camada vetorial é um conjunto de quatro valores numéricos e um objeto de extensão. Usaremos as saídas numéricas e a extensão para este exercício.

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

Nós podemos agora adicionar o algoritmo que rasteriza a camada vetorial, usando a extensão do algoritmo Limites da camada vetorial como entrada.

Preencher os parâmetros do algoritmo como mostrado a seguir:

../../../_images/rasterize2.png

The canvas should now look like.

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

Por fim, preencher os valores sem dados da camada matricial usando o algoritmo Fechar lacunas.

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

O algoritmo agora está pronto para ser salvo e adicionado à caixa de ferramentas. Você pode executá-lo e ele gerará uma camada matricial a partir da interpolação dos pontos selecionados na camada de entrada, e a camada terá a mesma extensão que a seleção.

Aqui está uma melhoria para o algoritmo. Usamos um valor codificado para o tamanho da célula ao rasterizar. Esse valor é bom para nossa camada de entrada de teste, mas pode não ser para outros casos. Poderíamos adicionar um novo parâmetro, para que o usuário insira o valor desejado, mas uma abordagem muito melhor seria ter esse valor calculado automaticamente.

Podemos usar a calculadora somente de modelador e calcular esse valor a partir das coordenadas de extensão. Por exemplo, para criar uma camada com uma largura fixa de 100 pixels, podemos usar a seguinte fórmula na calculadora.

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

Agora temos que editar o algoritmo de rasterização, para que ele utilize a saída da calculadora em vez do valor rígido codificado.

O algoritmo final deve parecer com isso:

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