Gostaria de descobrir o que é necessário para criar uma implementação personalizada de uma função ArcGIS. Em particular, gostaria de implementar o GeoAnalyst.ISurfaceOp2.Visibility () para que ele funcione mais rapidamente. No momento, leva cerca de 3 segundos por chamada para Visibility (). Do meu entendimento limitado, o gargalo é a gravação de rasters temporários no sistema de arquivos. Se isso puder ser feito na memória, suspeito que o tempo de processamento diminuirá significativamente. Estou fazendo isso em um projeto .NET, mas soluções em qualquer idioma são bem-vindas.
arcgis-10.0
arcobjects
.net
algorithm
Ross Fuhrman
fonte
fonte
Respostas:
Esta resposta memoriza e expande parte da discussão nos comentários. Um disco RAM emula uma unidade de disco externa usando parte da RAM em um sistema de computação. Ele pode ler e gravar em velocidades comparáveis ao cache na memória, menos um pouco de sobrecarga para os protocolos de conversão converterem comandos orientados a disco em comandos orientados a memória. Um disco RAM é criado executando um software especial no nível do sistema operacional, um "driver de dispositivo". Os discos de código aberto e RAM gratuitos estão disponíveis para muitos sistemas operacionais, incluindo o Windows.
Portanto, uma maneira de acelerar um gargalo devido à E / S do disco intermediário é configurar um disco RAM (comprando a RAM adicional, se necessário) e colocar a pasta de trabalho lá. (Geralmente, essa é uma configuração de software.)
Outra opção é instalar um dispositivo de estado sólido (SSD) DRAM de ponta , que é essencialmente um bloco de RAM em um pacote separado com uma interface eletrônica para agir como uma unidade de disco. Ele é instalado em um sistema de computação no lugar de uma unidade de disco e se comporta exatamente como outra unidade de disco sem nenhum software adicional, mas lê e grava quase tão rápido quanto a memória acessa. Eles são relativamente caros, mas provavelmente apenas um pequeno é necessário, mesmo para armazenamento raster intermediário muito grande.
Antes de executar qualquer uma dessas etapas, é importante criar um perfilo processo para verificar onde realmente está o gargalo. (O Windows foi fornecido com aplicativos de perfil e monitoramento cada vez mais poderosos nos últimos anos, disponíveis no Win 7 como o par Gerenciador de tarefas / Monitor de recursos e, é claro, muitos aplicativos semelhantes também estão disponíveis para outros sistemas operacionais.) Muitos sistemas são configurados automaticamente ou pode ser configurado para armazenar em cache as leituras e gravações do disco na RAM por curtos períodos. O armazenamento em cache funciona quase da mesma forma que um disco RAM, mas provavelmente é ainda mais rápido: o software pensa que está gravando arquivos intermediários no disco, mas o sistema operacional os grava temporariamente na RAM primeiro, sem acessar o disco, na esperança de que em breve os mesmos dados será lida novamente e excluída; nesse caso, uma gravação física nunca será necessária.
Dada a quantidade de computação necessária para qualquer cálculo de visibilidade total (em um algoritmo ingênuo, todas as células precisam ser inspecionadas quanto à visibilidade uma vez para cada ponto de vista), deve-se pelo menos suspeitar que a velocidade da computação, não a E / S do disco, possa ser o problema aqui. Se for esse o caso, os discos RAM ou SSDs serão um desperdício de tempo e dinheiro. Em vez disso, o esforço deve ser direcionado para analisar e melhorar o algoritmo subjacente .
Alguma discussão sobre se o desempenho do disco RAM ajuda o ArcGIS apareceu em outro segmento .
fonte
Infelizmente, você não pode definir o IRasterAnalysisEnvironment para trabalhar com um espaço de trabalho na memória.
Este tópico aborda o problema.
fonte