Análise de distância espacial no QGIS

8

Eu sou muito novo no QGIS e estou tentando descobrir como analisar o seguinte problema.

Eu tenho três camadas:

  1. assentamentos apontam camada com 253 entradas
  2. instalações de tratamento de resíduos apontam camada com 24 entradas
  3. camada de polilinha de estradas

Meu problema é encontrar a distância entre cada assentamento da camada (1) a cada estação de tratamento na camada (2), no entanto, ela deve estar sujeita a estradas (camada 3), ou seja, em vez de obter a matriz de distância aérea que estou procurando a matriz que descreve a distância real de condução.

Estou gentilmente pedindo sua ajuda com sugestões de como realizar essa análise com o QGIS 1.7 (observe que não sei como usar as camadas PostGIS, se relevante)

  • qual plugin posso ou devo usar?
  • As polilinhas devem ser conectadas aos pontos nas duas camadas?
dof1985
fonte
3
Eu acho que você precisa PostGIS e extensão pgRouting para ele.
Simplexio 15/01
Obrigado @simplexio pela sua resposta. Mais alguém tem alguma ideia? Ao mesmo tempo, tentarei mergulhar no postGIS.
dof1985

Respostas:

7

Uma breve descrição do processo de trabalho (GRASS-GIS), como @gmacfalane perguntou.

  1. Eu realizei a análise conforme descrito no GRASS-GIS 7.0 svn. Usando o Linux-Mint 14 como SO. Isso porque tive dificuldades para executar as funções solicitadas no sistema operacional Windows.

  2. Importei arquivos .shp que foram criados no Q-GIS para o GRASS. Era mais fácil para mim criar dados sobre o Q-GIS, mas a grama possui todas as funcionalidades necessárias para esse fim.

  3. Eu usei v.build e v.clean para criar topologia para minha rede (arquivo road shp)

  4. Uni todos os nós (assentamentos e locais de tratamento de resíduos) no arquivo shp. Foi adicionada uma coluna que distingue cada tipo de nó dos outros - e alimentou dados usando a calculadora. por exemplo, new_col = 10000 + id para todos os assentamentos, 20000 + id para todos os locais de reciclagem, etc. Em seguida, designei essa coluna para o novo id (coluna de categoria) - a v.reclass pode ser usada aqui.

  5. Use v.net (operation = connect) para conectar todos os nós à sua rede. Eu usei o limiar de aprox. 4.500 metros.

  6. Use v.net.allpairs para calcular a distância entre cada dois pares de pontos na sua rede.

  7. Exportei os dados para um arquivo csv usando v.db.select e os carreguei no Excel. Formulários de dados em uma célula para cada linha, separados por |. Se não me engano, filtrei todos os pontos de origem (coluna from_cat) para serem os assentamentos, tendo um from_cat entre 10000 e 19999.

  8. Então recebi uma tabela que contém o seguinte: from_cat, to_cat, distance / cost

  9. Separei o conjunto de dados por fonte (to_cat) e construí uma matriz para cada tipo de tratamento. Em seguida, formei análises adicionais para transformá-lo em matriz de custos e encontrar a rota mais barata de cada assentamento para cada tipo de local de tratamento.

Você pode encontrar explicações sobre as funções (itálico) no manual de grama . Também é recomendável pesquisar e se inscrever na lista de discussão de grama. Foi muito útil.

Espero poder dar uma direção geral.

dof1985
fonte
2

Já faz um tempo e, embora haja respostas sobre isso em algum lugar da história das perguntas e respostas em gis, decidi usar minha pergunta para compartilhar algumas das minhas descobertas sobre a análise de rede QGIS.

Como o @simplexio sugeriu, o postGIS com PgRouting é uma opção, embora muito complicado para mim . Eu descobri que com o QGIS 1.8 o plugin GRASS 6.4.2 é suficiente para ajudar na análise de rede. É fácil de operar (como o plug-in usa QGIS GUI e alguns comandos), o manual é fácil de navegar e importar arquivos QGIS ou outros é bastante fácil.

Espero terminar meu trabalho em breve (superando algumas dificuldades técnicas relacionadas ao computador) e fazer o upload do meu processo de trabalho, pois, como iniciante, foi mais difícil para mim encontrar um documento ou manual suficiente para me guiar pelo processo.

dof1985
fonte
Você pode descrever como esse método está funcionando para você? Estou interessado em um problema semelhante ...
gregmacfarlane
1
@gmacfarlane - Eu adicionei uma resposta para delinear o processo de trabalho que eu fiz
dof1985