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.

O próximo passo é calcular a extensão das características selecionadas. É aí que podemos usar a ferramenta somente modelo chamada Limites da camada vetorial. Primeiro, teremos que criar uma camada que tenha a extensão dessas características selecionadas. Depois, podemos usar esta ferramenta nessa camada.
Uma maneira fácil de criar uma camada com a extensão das características selecionadas é calcular um casco convexo da camada de pontos de entrada. Ele usará apenas o ponto selecionado, de modo que o casco convexo terá a mesma caixa de delimitação que a seleção. Então podemos adicionar o algoritmo Limites da camada vetorial, e usar a camada convexa do casco como entrada. Ele deve ser visto na tela do modelador:

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.

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:

The canvas should now look like.

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

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.

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:
