Como melhorar o desempenho de renderização de um arquivo shapefile muito grande?

20

Eu tenho um shapefile de polígono que possui um componente de arquivo 100 MB .dbf e 500 MB .shp. A razão de ser tão grande é que é classificada como uma base de terra para todo um distrito.

Sempre que visualizo o arquivo no ArcCatalog ou ArcMap e movo a janela de exibição levemente, o arquivo inteiro precisa ser redesenhado do zero. Eu tentei indexar e importar espacialmente em um geodatabase - nenhuma das abordagens fornece melhorias visíveis no desempenho em relação à renderização.

A página de ajuda da Esri sugere que, para melhorar o desempenho do shapefile, o usuário possa generalizar o arquivo . Embora isso obviamente funcione, não quero perder nenhuma informação. Dividir o arquivo não é o ideal, pois estou fazendo muitas consultas / geoprocessamento com toda a sua área. Acho que poderia evitar a visualização de toda a área de uma só vez - mas às vezes, por exemplo, é bom ver quais partes do arquivo uma consulta selecionou.

Existe alguma outra abordagem que eu possa adotar para melhorar o desempenho da renderização?

(Em teoria, a criação de "pirâmides" de shapefile seria o ideal - não sei por que o ArcGIS nunca apoiou essa abordagem - pelo menos que eu saiba ...)

youzer
fonte
2
Ter um arquivo de forma tão grande é apenas pedir problemas. Na minha experiência, arquivos de forma grandes tendem a corromper com muita facilidade. Obtê-lo em um banco de dados geográfico de arquivos, para evitar corrupção. Melhor desempenho no desenho seria um bônus a mais.
Devdatta Tengshe 24/10/12
Conforme observo acima, descobri que importar um grande arquivo de forma para um gdb não cria melhorias - do ponto de vista puramente renderizado. Você está certo, porém, de que, de uma perspectiva geral, faz pouco sentido não ter um arquivo shp grande em um gdb (por todos os tipos de razões).
youzer
2
Você já pensou em usar um raster em vez de um shapefile?
22612 Kirk Kuykendall
Estou confuso em uma coisa e se o tamanho do arquivo é de 2GB e memória do computador também é 2gb então como arcgis irá lidar com esses dados arquivo como ele vai conume de memória cheia
user2174920
se você tem milhões de pequenos polígonos, deveria ter raster utilizado é o ditado famoso (a menos que você está fazendo uma camada de solos ...)
Se você não know apenas GIS

Respostas:

22

Meus pensamentos são:

  1. Exporte seu shapefile para uma classe de recurso de geodatabase de arquivo - acho que o desempenho do desenho será melhor, mas não tenho certeza de quanto
  2. Se você estiver usando o ArcGIS Desktop 10.0 ou posterior, mova-o para uma camada de mapa base - isso melhorará drasticamente o desempenho do desenho
  3. Se você gosta do som das pirâmides para dados vetoriais, não deixe de votar nesta idéia do ArcGIS .
PolyGeo
fonte
3
Exceto que você não pode fazer análises ou seleções nas camadas do mapa base IIRC.
blah238
4
Suspeita-se que isso possa ser contornado com a segunda camada no sumário apontando para a mesma origem e não uma camada do mapa base, que geralmente está desativada, mas pode ser exibida quando necessário para análise ou seleção.
PolyGeo
PolyGeo - obrigado pela resposta. Eu tentei o baselayer e, de fato, uma grande melhoria de desempenho é quando clica em "zoom to layer", o arquivo não é renderizado do zero. A solução alternativa que você sugere, dado o comentário de blah238, talvez funcione em alguns projetos, mas eu achei uma coisa adicional que limita o uso do baselayer é que você não pode visualizar o dbf usando qualquer simbologia. Com essa limitação, é melhor gerar o arquivo para referência (não uma camada de base) e, em seguida, reexibir a camada "real" quando necessário. Não é realmente uma ótima solução. Votarei a idéia das "pirâmides", como você sugere!
youzer
6

Existem muitas dicas para melhorar o desempenho do ArcMap que podem ajudar, mas aqui estão três sugestões que eu usei.

  1. Eu garantiria que o sistema de coordenadas do Data Frame corresponda ao meu shapefile e a qualquer outra camada que eu possua no sumário; mas quanto menos camadas forem exibidas, melhor.
  2. Eu usaria apenas minha simbologia com base em linhas e preenchimentos simples, sem transparência ou outras complexidades.
  3. Se você precisar de uma visão geral e da capacidade de se movimentar de perto, considere usar a lente de aumento ou o visualizador.
John
fonte
conselho geralmente muito bom. Na verdade, eu implementei tudo isso nos meus testes iniciais - parece que são necessários mais / diferentes truques para lidar com classes / shapefiles de recursos muito grandes.
youzer
4

Você pode melhorar a renderização definindo os parâmetros de exibição da camada para que a camada não seja exibida em grandes escalas (por exemplo,> 1: 10.000). Você pode encontrar esta opção nas propriedades da camada: Propriedades da camada> Guia Geral> "Não mostrar camada quando o zoom estiver além do ..."

Além disso, o local de armazenamento é importante - por exemplo, se ele estiver armazenado em um servidor antigo com pouca largura de banda, você garante um desempenho ruim. Eu manuseio rotineiramente dados vetoriais de 1 GB ou mais em um servidor, o que me faz questionar se as especificações do sistema precisam ser atualizadas (para referência, estou executando 12 GB de RAM, 2nd gen i7, placa gráfica média).

insira a descrição da imagem aqui

Aaron
fonte
3

Você precisa renderizar o mapa para fazer suas consultas? E se você executasse scripts python e acessasse os dados sem desenhar o mapa? Não tenho certeza do seu processo exato, necessidades, etc., mas um pensamento.

gm70560
fonte
3

Como um acompanhamento da resposta de Aaron , você também pode usar uma consulta de definição para limitar o número de resultados retornados para visualização (e inclui análise - acredito que funciona muito como uma seleção). Se nem todos os recursos forem necessários para visualização em um determinado momento e você não estiver trocando regiões por tonelada, uma consulta de definição pode ser uma solução viável, embora não seja uma resposta exata para suas perguntas ou necessidades.

nicksan
fonte
3

Eu ouço sua frustração. Rotineiramente, trabalho com arquivos de forma grandes como esse e, em geral, não tenho problemas de exibição. Concordo com todos os comentários acima, especialmente certificando-me de que tudo esteja na mesma projeção, incluindo o quadro de dados. Presumo que você copiou o arquivo localmente e não está tentando acessá-lo pela rede? Uma coisa que causará problemas de exibição em shapefiles desse tamanho é se houver uma quantidade extrema de vértices, como em uma rede de fluxo. A única solução que encontrei para isso é criar um script python para fazer definições de camada em tempo real, então estou desenhando apenas algumas de cada vez. Outra coisa seria atualizar a memória gráfica e a placa gráfica do seu computador.

Ruth
fonte