Realizando extração de diques no DEM?


14

Eu tenho DEM de 1x1 metro e nuvem de pontos LiDAR original em .las, da qual o DEM é feito. Preciso extrair diques de rio (pontos mais altos dos diques) para o recurso de vetor (ponto, polilinha).

Alguma idéia para o algoritmo ou uma ferramenta existente?

Os diques estão em cinza claro na 1ª imagem e abaixo está a imagem da nuvem de pontos para a área de exemplo com os diques. Linha central do rio em azul.

Os diques estão em cinza claro

Nuvem de pontos com os diques

Alguma ferramenta para extração de recursos lineares do DEM?

Acredito que preciso de algo como o Módulo de extração de recursos espaciais da ENVI (página 7), mas sem a parte da ENVI, pois não posso pagar :)


1
Qual sistema gis você está usando?
Hornbydd

Comercial - ArcInfo 10 (SA, 3D, extensões geoestatísticas). Código aberto - qualquer.
Tomek

1
Eu estava pensando em alguma idéia, supondo que você tivesse uma linha central de vetores para o seu rio, que pudesse protegê-lo e usá-lo para mascarar o DEM e limitar os valores. Isso pressupõe que o dique corra paralelamente ao canal do rio. Portanto, qualquer que seja a lógica que você use, precisa ser inteligente o suficiente para capturar diques à medida que eles se "afastam" do rio.
Hornbydd

Infelizmente, os diques nem sempre correm paralelos ao canal do rio e muitas vezes estão longe do canal do rio. Eu estava pensando que haveria algum algoritmo como esqueletização? Para a extração dos recursos lineares do DEM, com esse recurso eu poderia obter os pontos mais altos na nuvem de pontos.
Tomek

2
Me deparei com este papel, pode ser de ajuda? asprs.org/a/publications/pers/2004journal/december/…
Hornbydd

Respostas:


8

Tudo depende de onde você desenha a linha. Independentemente disso, parece que esse problema pode ser facilmente resolvido usando as funções morfológicas disponíveis no Spatial Analyst, principalmente o limiar (realizado com operações locais "<" e ">")) e o "RegionGroup" para identificar e extrair componentes.

Embora eu não tenha acesso ao DEM para ilustrar, a primeira imagem é quase boa o suficiente para fazer o trabalho de qualquer maneira. Por exemplo, aqui está uma sequência de versões agrupadas por região da faixa vermelha (com valores dimensionados de 0,0 = preto a 1,0 = branco), iniciando no limiar de 0 e movendo-se da esquerda para a direita, de cima para baixo, em incrementos de 0,02:

Diques

(Essas imagens foram reduzidas para reprodução aqui: todas as análises foram feitas com a resolução da imagem original.)

Os diques emergem ao redor do limite da região negra no início da segunda linha (limite = 0,08). No início da terceira linha (limite = 0,16), os diques formam seus próprios componentes (em azul escuro) e nesse ponto podem ser facilmente extraídos como grades ou polígonos separados (e seus limites podem ser extraídos como polilinhas após uma etapa de detecção de arestas) ) Somente os diques mais largos permanecem na última linha (limite = 0,24 e superior). Você precisará selecionar um limite apropriado para obter exatamente o que deseja.

No DEM original, as elevações desempenham o papel de intensidade; portanto, esses procedimentos devem ser igualmente eficazes com o próprio DEM. Se o DEM tiver uma grande extensão (incluindo recursos distantes do rio ou diques), os recursos relevantes podem ser selecionados como aqueles adjacentes ao componente em que o recurso do rio se encontra.

As regiões finas e indesejadas encontradas pelo RegionGroup podem ser eliminadas aplicando uma pequena erosão (tampão negativo) seguida de uma dilatação equivalente (tampão positivo). Pequenas regiões indesejadas podem ser excluídas em um critério de tamanho (contagem total de células ou área). Os pontos mais altos de cada dique (se é realmente necessário) podem ser encontrados comparando o DEM com as grades máximas zonais (usando os diques como zonas).


Aliás, essa sequência de imagens foi produzida no Mathematica 8. Aqui estão os comandos para quem desejar seguir essa opção.

original = Import["http://i.stack.imgur.com/gV7Du.jpg"];
{r, g, b} = ColorSeparate[original];
frames = ParallelTable[Colorize[MorphologicalComponents[Binarize[r, t/100]], 
                       ColorFunction -> "ThermometerColors"], {t, 0, 30, 2}];
Rasterize @ TableForm[Partition[frames, 4]]

O tempo total do relógio (após a importação da imagem) foi de 0,94 segundos, dos quais metade foi necessária para reduzir e exportar todas as 16 imagens: as operações morfológicas tendem a ser rápidas (o que é bom, pois os DEIDs do LIDAR podem ser enormes).


Todo o conceito parece bom, mas eu não entendo a parte "... limiar (executada com" <"e"> "operações locais)". Como você consegue isso com o conjunto de ferramentas Generalização (SA)?
Tomek

@Tomek One não. Veja o conjunto de ferramentas lógicas .
whuber

9

Eu li sobre a variedade de algoritmos para o trabalho (ou seja, conforme o link @Hornbydds ).

Eu tentei algumas aplicações, e os melhores resultados no meu caso rendem a Análise de Terreno Padrão da SAGA. Aqui está o que eu fiz e por quê:

Os diques costumam ter a característica mais alta nas proximidades do canal do rio, então eu os transformei em canais ativando o DEM (MapAlgebra DEM * -1 ou para exagerar as inclinações -10). A partir deste ponto, eu poderia usar qualquer um dos conjuntos de ferramentas hidrológicas (ferramentas hidrelétricas ArcHydro, HEC-GeoRas ou SAGA). Escolhi o SAGA / Terrain Analysis - análise composta / Standard Terrain Analysis, pois produz River Network com apenas alguns cliques. A rede fluvial é o que eu queria alcançar, pois produz polilinhas, que indicam o melhor caminho para o fluxo de água, que no caso de diques invertidos - dá o ponto mais alto.

O arquivo de forma produzido é um pouco confuso (muitas polilinhas menores), mas depois de alguns ajustes é satisfatório. Outro aborrecimento é que 1 dique é feito de 300 polilinhas curtas, mas acho que vou encontrar uma maneira de lidar com isso.

Aqui está o exemplo de resultados:

insira a descrição da imagem aqui

Claro que essa é uma solução bastante difícil e provavelmente estarei investigando o problema mais a fundo, mas achei que vale a pena compartilhar.


5

Alguma combinação do seguinte com o DEM original deve ajudar a destacar as informações de varredura que você deseja e jogar fora o resto. Eles podem ser realizados em diferentes escalas e tamanhos de vizinhança para refinar o efeito.

  • Reamostrar e, em seguida, Bairro -> Filtro: passa alto
  • Superfície -> Curvatura
  • Bairro -> Estatísticas focais: desvio padrão
  • "Altura relativa" = (Pixel) - (Bairro -> Estatísticas focais: mediana)
  • Inverter, Reamostrar e Vizinhança -> Fluxo Focal

Depois disso, a reclassificação e os contornos devem fornecer um esboço razoavelmente bom do próprio dique. Se os diques tiverem inclinação plana e você desejar uma cobertura mais ampla, tente também algo como a soma da curvatura e da inclinação, escalada em alguma quantidade, ou até mesmo fazer contornos de inclinação separadamente e uni-los.

Aqui está um tutorial sobre como extrair ridgelines de vetor de um DEM rasterizado usando o Spatial Analyst, que deve ser altamente aplicável:


Vou dar uma olhada na combinação de ferramentas - pode dar bons resultados. Obrigado. A meu ver, o tutorial da ESRI descreve o processo +/- como eu fiz :) Legal. Obrigado.
Tomek

0

Eu acho que isso pode ser apenas parte da resposta, mas talvez você possa começar criando contornos / polígonos com suas imagens em intervalos determinados / com base em valores de elevação. Eu estava pensando que os diques deveriam ter valores de elevação mais altos e, portanto, se você o convertesse em DEM em polígonos, você descobriria que as áreas em que está interessado são representadas por polígonos de centainas. Você também pode começar simplesmente reclassificando o DEM e ver se isso produz os resultados que você deseja. Se você tiver outros dados de imagem que cubram a área em que está interessado, tente adicioná-los à sua classificação de imagens e veja se isso ajuda. Boa sorte!!

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.