Mais

Como criar um caminho de menor custo entre dois polígonos com GRASS?


Sou totalmente iniciante no GRASS, mas gostaria de usá-lo para ter o custo cumulativo de me mover entre dois polígonos. Mais exatamente, eu gostaria para obter o menor custo de qualquer ponto situado na borda de um polígono (polígono A) até qualquer ponto situado na borda de outro polígono (polígono B).

Até agora, usei a funçãoCostDistanceeCostPathdo ArcGIS assim:

CostDistance ("start_polygon", "costs.tif", "", "outCostLink.tif") CostPath ("end_polygon", "outCostDist.tif", "outCostLink.tif", "EACH_ZONE", "FID")

Eu gostaria de fazer a mesma coisa com o GRASS. Eu acho que a funçãor.costpermite fazer isso. Mas o problema é que não entendo como especificar em parâmetros os dois polígonos do GRASS?

Eu tenho :

  • um raster de custo onde cada célula tem um valor de custo.
  • um arquivo de forma para o primeiro polígono
  • um arquivo de forma para o segundo polígono

Você tem um exemplo de como usarr.costcom dois polígonos?

Muito obrigado pela sua ajuda.


Eu sei que esta é uma pergunta antiga, mas aqui está uma rachadura na resposta. Minha abordagem parece um pouco complicada para mim, mas é o melhor que pude pensar. Eu usei GRASS 6.4.

g.region s = 0 w = 0 e = 100 n = 100 res = 1 # configurar alguns polígonos eco "B 4 10 10 10 20 20 10 10 10" | v.in.ascii -n input = - output = polígono formato A = eco padrão "B 4 90 90 90 80 80 90 90 90" | v.in.ascii -n input = - output = polygonB format = standard r.mapcalc cost = 1.0 # gerar pontos nas bordas dos polígonos # dmax provavelmente deve ser definido para menos do que sua resolução raster v.to.points -i input = polygonA output = polygonA_pts dmax = 1 v.to.points -i input = polygonB output = polygonB_pts dmax = 1 # calcula o caminho de menor custo # isso inicia o lcp do centro do polígono B, mas imagino que o lcp vai # passar pelo limite do polígono no ponto que resultaria no lcp r.cost input = custo output = cummulative_cost start_points = polygonA_pts stop_points = polygonB_pts v.centroids input = polygonB output = polygonB_cent v.to.points input = polygonB_cent output = polygonB_cent_only type = centróide r.drain input = cummulative_cost output = lcp voutput = lcp vector_points = polygonB_cent_only # uma vez que o lcp começa no centro do polígono B, # divida o lcp na aresta do polígono para obter um novo ponto inicial na aresta do polígono B # então execute r.drain novamente para obter o resultado final da borda do polígono t o borda do polígono v.patch input = lcp, polygonB output = temp v.clean input = temp output = lcp_from_edge tool = break error = new_starting_point r.drain input = cummulative_cost output = lcp voutput = lcp vector_points = new_starting_point --o

Visão geral da análise do caminho do menor custo

A análise do caminho de menor custo é uma ferramenta de análise de distância dentro do GIS que usa o caminho de menor custo ou o caminho entre dois locais que custa menos para aqueles que viajam ao longo dele para determinar a rota mais econômica entre a origem e o destino. O custo pode ser função do tempo, distância ou outro critério definido pelo usuário. Ao usar a análise de caminho de menor custo em GIS, os oito vizinhos de uma célula raster são avaliados e o caminho gerado se move para as células com o menor valor acumulado ou de custo (“Análise de distância usando ArcGIS”). Este processo é repetido várias vezes até que a origem e o destino sejam conectados. O caminho concluído é a menor soma dos valores das células raster entre os dois pontos e tem o custo mais baixo.

A análise do caminho de menor custo é uma ferramenta GIS importante para entender porque tem muitas aplicações diferentes - todas as quais podem ajudar empresas, planejadores de cidades e outros usuários a economizar tempo e dinheiro.


1 resposta 1

Em relação a 1):

nw: relatórios de distância ponderada falsos se nenhum caminho existir.

Como pode não haver caminho, já que sua rede parece estar totalmente conectada? Bem, o problema é que você não está lidando apenas com as tartarugas em sua rede: você está pedindo a um lobo para pedir às tartarugas - aqui para encontrar algum caminho. Mas o próprio lobo está incluído em tartarugas-aqui, e o lobo não está conectado à rede!

Você talvez pudesse se safar perguntando a outras tartarugas - aqui, mas você teria que ter certeza de que não há outro lobo no mesmo canteiro.

A coisa mais sensata a fazer é provavelmente criar uma raça separada para os nós em sua rede. Se você tivesse uma raça chamada nodes, poderia dizer ask nodes-here e isso resolveria muito bem o seu problema.

Em relação a 2):

Seu código conforme você postou não compila porque você está tentando deixar meu-custo-do-caminho -1 no topo de seu relator do caminho de menor custo, mas meu-custo-do-caminho já é uma variável lobo. Seu código é confuso para mim, então não posso lhe dar uma solução completa.

O seu repórter de caminho de menor custo deve operar em uma variável local ou em uma variável de lobo? Se você precisar de uma variável local, ela deve ter um nome diferente. Por outro lado, se você deseja operar diretamente em sua variável lobo, provavelmente não faz muito sentido para o caminho de menor custo ser um repórter (e você certamente não pode relatar meu custo de caminho em o fim de tudo). Você provavelmente precisa reestruturar um pouco as coisas.


Para atribuir custo de caminho a polígonos em um buffer

Gostaria de construir caminhos de menor custo entre o polígono (por exemplo, polígono A) onde há um lobo e todos os polígonos que estão situados em um raio de 3 km ao redor do lobo e encontrar o polígono que tem o menor custo (ver também Como posso aumentar a velocidade de simulação do meu modelo de caminho de menor custo. Então, o lobo se move em direção a este polígono (por exemplo, polígono B). O processo é repetido a partir do polígono B e assim por diante.

1) A partir do polígono A, o código funciona porque apenas os polígonos no buffer têm um custo de caminho. Mas a partir do polígono B, há um problema. O código encontra o polígono que tem o menor custo entre os polígonos que estão situados no buffer do polígono A e no buffer do polígono B. O código deve encontrar apenas o polígono que tem o menor custo entre os polígonos no buffer do polígono B Como posso resolver este problema? Devo redefinir a variável de estado “custo do caminho” para cada patch do polígono antes de calcular o custo do caminho do polígono B?

2) Se um mesmo polígono for incluído no buffer de ambos os três lobos, como o custo do caminho será atribuído à variável de estado "custo do caminho" para cada polígono de remendo, ou seja, é possível ter 3 x valor de custo para um mesmo polígono?

3) Na figura abaixo, por que o caminho de menor custo não segue uma linha reta? O caminho de menor custo leva a diagonal do patch em vez do lado do patch que é mais curto.


EXEMPLOS

Converter r.watershed fluxo de saída do mapa para um mapa vetorial

Defina uma tabela de cores diferente para o mapa de acumulação:

Crie um mapa de fluxo mais detalhado usando o mapa de acumulação e converta-o em um mapa de saída vetorial. O corte de acumulação e, portanto, a dimensão fractal, é arbitrário neste exemplo, usamos o número médio do mapa de células de captação a montante (calculado no exemplo acima por r.univar) como valor limite. Isso só funciona com SFD, não com MFD.

Crie um mapa de bacias hidrográficas e converta em um mapa de polígono vetorial

Exibir a saída de uma maneira agradável


Genética

Nesta pesquisa, usamos o F pareadost matriz estimada em Fresia et al. 2011. (texto completo disponível mediante solicitação) como a distância genética entre as amostras de todos os pares de locais. Um total de 227 haplótipos mitocondriais foram identificados em 282 indivíduos coletados em 29 locais em toda a América do Sul e agrupados em dois "grupos geográficos". Da matriz, esses pares com Fst= 0 (amostras geneticamente idênticas) foram retidas para trabalhos posteriores. Este Fst= 0 valor foi escolhido com base na capacidade de dispersão do NWS e pode ser ajustado em qualquer caso particular.


Conclusões

Neste artigo, um algoritmo para busca do caminho mais curto em grafos reduzidos é desenvolvido. Os resultados experimentais mostram que o algoritmo proposto é mais eficiente do que o algoritmo de Dijkstra em gráficos grandes. Além disso, podemos concluir o seguinte:

A abordagem proposta é particularmente aplicável ao SIG, devido à forma como os usuários realizam uma busca do caminho mais curto neste tipo de sistema. Isso nos permite expandir os vértices evitando a influência do tempo utilizado nesta operação na busca do caminho mais curto.

O uso de gráficos reduzidos reduz significativamente o tempo de resposta na busca do caminho mais curto. Essa é uma das duas principais abordagens utilizadas na literatura para reduzir o custo computacional dessa operação.

A busca do caminho mais curto em um gráfico reduzido garante escalabilidade em relação ao tamanho do gráfico no qual a análise é realizada.

Provamos que o algoritmo proposto nos permite obter um caminho ótimo em um grafo reduzido. O custo do caminho obtido é igual ao custo do caminho encontrado usando o algoritmo de Dijkstra no gráfico original.

Desenvolvemos um método capaz de realizar a busca do caminho mais curto em um tempo de execução semelhante ao algoritmo A * (com h = 0 e h = distância euclidiana).


É possível criar polígonos Thiessen dentro de um software GIS, mas ponderados de acordo com um DEM?

Basicamente, o que procuro é um algoritmo ou uma extensão semelhante à análise de menor custo, mas em vez de usar pontos no topo de um DEM para criar um caminho (vetor de linha) entre os pontos, desejo criar um Thiessen (Voronoi) polígonos (centrados em pontos), cujos limites espaciais seriam definidos pelo DEM.

Assim, por exemplo, uma fronteira entre 2 polígonos seria determinada pela análise de menor custo entre os pontos centrais dos 2 polígonos. O objetivo seria então, ao invés de obter um conjunto de polígonos de Thiessen com bordas retas em forma de seta (como na foto), criar um conjunto de polígonos cujos limites seriam determinados pelo DEM (relevo). Uma espécie de bacia hidrográfica centrada em um único ponto.

A propósito, seria ótimo se houvesse uma solução aplicável no QGIS.


Barreira de caminho de menor custo (R) (gdistance)

Estou tentando criar uma barreira (rios) que não possa ser cruzada pelo caminho de menor custo.

Eu criei uma camada de transição usando "áreas" que contém os valores de transição na terra e nos rios. No entanto, a barreira tem um 'buffer' em torno dela, com valores crescentes, em vez de ser uma barreira discreta.

Raster de custo e camada de transição Como pode ser visto, há um 'buffer' ao redor da barreira na camada de transição.

Alguma ideia de como criar um limite discreto? de preferência com a barreira como um valor 1000, com em todos os outros lugares um valor de 1.

code: library (gdistance) ## Criar superfície de custo onde "terreno" existe no custo médio & lt- raster (nrow = 100, ncol = 100, xmn = 0, xmx = 100, ymn = 0, ymx = 100, crs = "+ proj = utm") cost [] & lt- 10 cost [cellFromRowColCombine (cost, 50: 55,20: 80)] & lt- 1000 costf & lt- asFactor (cost & lt 100) ## Produzir matrizes de transição e corrigir porque 8 direções trCost & lt- transição (costf, "areas", direções = 16) trCost1 & lt- geoCorrection (trCost [[2]], type = "c") plot (cost) plot (raster (trCost [[1]]))


Modelo estendido de relações topológicas entre objetos espaciais em sistemas de informação geográfica

Este artigo apresenta um modelo estendido para descrever relações topológicas entre dois conjuntos (objetos) em sistemas de informação geográfica (SIG). Primeiro, com base na definição das relações topológicas entre dois objetos, descobrimos uma sequência de relações topológicas entre dois conjuntos convexos.

Em segundo lugar, um modelo estendido para relações topológicas entre dois conjuntos é proposto com base na nova definição. As relações topológicas entre dois conjuntos convexos são expressas como uma sequência de matrizes 4 × 4, que são as propriedades topológicas de A o ∩ B o, A o B, B o A, ∂A ∩ ∂B. O modelo também é estendido para lidar com as propriedades das relações topológicas entre dois conjuntos não convexos, onde o fator do primeiro grupo fundamental é adicionado a A ∪ B para lidar com essas relações complexas.

Os resultados mostram que o número de relações topológicas entre os dois conjuntos não é tão simples quanto finito, mas infinito e pode ser aproximado por uma sequência de matrizes.


Uma abordagem vetorial para modelagem de corredores de paisagem e conectividade de habitat

A conectividade da paisagem é uma consideração importante na compreensão e raciocínio sobre os sistemas ecológicos. Dois recursos em uma paisagem podem ser vistos como conectados sempre que existe um caminho entre eles. Em muitas aplicações, a relevância de um caminho potencial é avaliada em relação ao custo ou resistência que ele apresenta à travessia. Normalmente, os caminhos de menor custo entre as características da paisagem são usados ​​para aproximar o potencial de conectividade. No entanto, a travessia de uma paisagem entre dois locais pode não estar necessariamente em conformidade com um caminho de menor custo. Além disso, pesquisas recentes começaram a lançar algumas dúvidas sobre como os diferentes tipos de características da paisagem podem influenciar o movimento. Portanto, é importante considerar os limites geográficos para o movimento de forma mais ampla. Representações contínuas (ou seja, raster) e discretas (ou seja, vetor) de conectividade são comumente usadas para modelar as relações espaciais entre as características da paisagem. Embora as abordagens existentes possam fornecer percepções significativas sobre a topologia e conectividade do sistema, elas ainda são limitadas em sua capacidade de representar certos tipos de movimento e são fortemente influenciadas pela escala das unidades de área e como o custo da travessia da paisagem é derivado. A fim de melhor abordar essas questões, este artigo propõe uma nova abordagem baseada em vetores para delinear a extensão geográfica dos corredores e avaliar a conectividade entre as características da paisagem. A abordagem desenvolvida é aplicada para avaliar a conectividade do habitat para salamandras para destacar os benefícios desta abordagem de modelagem.

Esta é uma prévia do conteúdo da assinatura, acesso através de sua instituição.