Estou procurando uma maneira de implementar a visibilidade (também conhecida como viewhed). Encontrei uma pergunta anterior do GIS SE que sugeria alguns aplicativos GIS (não é o que eu preciso - estou tentando incorporar os cálculos) e também o SAGA. O SAGA se parece mais com o que estou procurando (classes C ++, Java, C #), mas não consigo entender o suficiente da documentação da API para descobrir quais classes eu preciso instanciar (ou subclasse).
Não estou ligado à ideia do SAGA - estou apenas procurando por biblioteca / mecanismo que possa fazer cálculos de intervisibilidade.
As restrições são que ele precisa ser:
- razoavelmente "leve" (como eu gostaria de poder cobrir incorporado / móvel)
- código-fonte aberto razoavelmente (já que meu aplicativo será código-fonte aberto, embora eu seja flexível em exatamente qual licença, desde que seja compatível com GPL).
Alguém pode recomendar tal biblioteca ou mecanismo e fornecer uma descrição ou link para qual parte da biblioteca ou mecanismo eu preciso usar para cálculos de exibição?
Como alternativa / além disso, também aprecio referências a documentos ou tutoriais que explicam como fazer esses cálculos de maneira eficiente (conforme aplicável a dispositivos embarcados / móveis, para que uma implementação baseada em GPU possa não ser tão útil quanto algo que é mais geral e lida com dispositivos de baixa potência)
Minha preferência é uma implementação existente, em vez de criar algo pessoalmente (que é uma opção de backup).
Edit: C ++ não é um requisito firme - qualquer coisa razoavelmente portátil (C #, C ++, Java) fará. Estou tentando criar uma biblioteca ou modelos em vez de incorporar um aplicativo grande.
Respostas:
Como você já viu na pergunta GIS SE mencionada , não parece haver muito na maneira de exibir pacotes independentes, pelo menos no mercado de código aberto, além do SAGA e GRASS GIS. Além de escrever um wrapper em torno do código para esses itens, você pode acabar implementando o viewhed infelizmente. (Embora eu gostaria de ser corrigido nisso.)
Se você ler a documentação para a função GRASS r.viewshed , ela fornece uma descrição ampla do algoritmo e uma referência ao documento a seguir, que discute minuciosamente um algoritmo de visualização:
Como alternativa, o artigo da Wikipedia no Viewshed fornece referências:
fonte
Existe um pacote de freeware chamado RadioMobile, projetado para estudos de comunicação por rádio que gera um ponto de vista. A saída é baseada em uma entrada DEM e pode ser um vetor (arquivo de ponto) ou Raster. Consegui usar o arquivo de pontos vetoriais para criar polígonos através de alguns scripts que terei prazer em compartilhar com você. Como você pode definir uma paleta na saída de varredura, também pode converter a varredura em vetor usando gdal.
O programa possui uma interface gráfica, mas também pode ser executado em modo de lote, para que você possa incorporá-lo facilmente a um programa. Embora existam muito mais opções do que as necessárias para um viewhed tradicional, você pode configurá-las como nulas para que efeitos como a potência do transmissor não sejam incluídos - consulte http://www.g3tvu.co.uk/RM_Batch_Files.htm
O programa está em http://www.cplus.org/rmw/rme.html O autor também é muito útil.
Espero que isto ajude,
fonte