O conceito de colina composta é combinar várias colinas com diferentes orientações da luz solar para evitar pontos cegos. É necessário mesclar imagens de 3 colinas com 315⁰ (luz solar NW, camada padrão), + 355⁰ camada, + 275⁰ luz solar, respectivamente. Isso aumenta os detalhes e a elegância, conforme mostrado abaixo. Uma descrição completa que não é de GIS está aqui .
Usando qualquer arquivo srtm, as três colinas iniciais podem ser feitas via:
gdaldem hillshade input.tif hillshades_A.tmp.tif -s 111120 -z 5 -az 315 -alt 60 -compute_edges
gdaldem hillshade input.tif hillshades_B.tmp.tif -s 111120 -z 5 -az 355 -alt 60 -compute_edges
gdaldem hillshade input.tif hillshades_C.tmp.tif -s 111120 -z 5 -az 275 -alt 60 -compute_edges
Respostas:
A fonte vinculada menciona "altere seu modo de fusão para <Multiply>" , para que a operação a ser executada não seja uma média simples de colinas de entrada (para isso, consulte também Como calcular a média de gdal_hillshades? ). É outra coisa. No entanto, vamos criar as três colinas com diferentes direções da luz solar:
Mantenha o menor valor de A, B, C
O primeiro algoritmo que pensei é filtrar e manter os pixels mais escuros, também conhecidos como pixels com valores mais baixos, entre as entradas A, B e CA booleanas:
A área dominada pelas sombras agora compõe mais do que o lado oposto de uma linha central, aumentando em 40 by de cada lado. Não como o link fornecido, esse algoritmo atual parece ter perdido muito a área iluminada.
Ângulo de
315±30⁰
(menor variação de ângulo) em vez da corrente315±40⁰
seria melhor.O diagrama abaixo é a base da equação. Ele mostra as fontes de luz A, B, C e as comparações booleanas dos valores de pixels A, B, C em cada parte. As linhas de igualdade precisam de uma atenção especial para serem incluídas no booleano. As linhas medianas têm valor
221
para a fonte de luz perpendicular. Pense nas áreas de influência , a fonte de luz mais próxima é a principal e a mais distante, a mais fraca.Mantenha valores extremos para A, B, C
Um outro algoritmo booleano poderia ser manter os valores mais extremos, os pixels mais escuros e os mais brancos. O diagrama a seguir ajuda a entender a fórmula booleana. Para cada sexto do círculo, ele identifica o valor a ser mantido de A, B, C e um Booleano para selecionar a área triangular mais a linha de igualdade no sentido horário, e somente isso . Dá (de cima e no sentido horário):
Se a variação dos ângulos não for muito importante, poderá dar bons resultados.
Outros booleanos
Você pode criar booleanos mais complexos para cobrir os círculos inteiros usando qualquer combinação dos segmentos de borda. Permanece importante que apenas um valor de A, B, C seja mantido para um segmento.
Multiplicar
Fiz várias tentativas frustradas de obter
multiply
valores de pixels sem uma fórmula comprovada nem sucesso final. @Rououxju apontou que(a*b*c)^(1/3)
(média GEOMÉTRICA), em vez da média aritmética,(a*b*c)/(255*255)
pode funcionar. A média geométrica é menor ou igual à média aritmética, que acentua a escuridão das áreas sombreadas. Ainda não testei.fonte
(A*B*C)/(255*255)
?Uma ferramenta que pode fazer isso (entre outras) é a Visualização Baseada em Fator Sky-View ( http://iaps.zrc-sazu.si/en/svf#v ). Calcular vários parâmetros de um terreno. É malditamente bom.
fonte
O numpy de Gdal_calc parece ter mais operadores :
Não encontrei exemplos claros e adequados de como os operadores exóticos devem ser usados. Se você tiver algo, sinta-se à vontade para compartilhar.
fonte