Gostaria de saber qual método de armazenamento resultará na leitura mais rápida dos vetores de mapa para renderização. SHP? PostGres? SQLite? (Eles não mudam frequentemente e eu não preciso de funções espaciais para esses vetores).
8
Respostas:
Testes de velocidade
Existem alguns testes rápidos de shapefiles versus banco de dados (PostGIS) para o MapServer nesta apresentação (de 2007).
Em suma:
E os tempos em detalhes, que também podem ajudar a decidir se o formato de armazenamento é um fator importante.
Sempre use o FastCGI no MapServer se estiver usando um banco de dados, pois as conexões com o banco de dados podem ser reutilizadas; caso contrário, uma nova conexão deve ser criada em cada solicitação.
Implementações para leitores de shapefile
A velocidade de leitura de um shapefile (e dados de um banco de dados) depende da implementação de codificação específica.
O código fonte do MapServer que abre um shapefile pode ser visto aqui . Após os comentários, você pode ver como é importante ter um índice. Normalmente, você só pode ler um arquivo em uma direção para obter um registro, mas com um índice, você pode ler em duas direções.
Outro exemplo de abertura de um shapefile pode ser visto na fonte Python para PyShp . Novamente, você pode ver como um índice é usado para encontrar formas específicas diretamente.
Outros fatores a serem conduzidos
As limitações do formato DBF (limites no tamanho do campo, sem suporte nulo, limites no armazenamento de texto) também devem ser levadas em consideração ao decidir sobre o uso ou não de um banco de dados.
Um banco de dados também oferece meios de proteção de dados, junção e criação de visualizações mais fáceis, registro e muitos outros recursos que você não obterá com um arquivo independente.
fonte
Ao contrário do que diz dariapra, minha experiência no desenvolvimento do Maperitive me diz que o maior gargalo está no carregamento real dos dados antes da renderização. Tudo depende muito do tamanho do conjunto de dados geral armazenado e do tamanho do conjunto de dados que você está tentando processar de uma só vez. Se você pode carregar tudo na memória, os shapefiles provavelmente são melhores do que usar um mecanismo de banco de dados.
fonte
Qual programa você usará para renderizar? Isso pode influenciar os resultados. De qualquer forma, ter um shapefile com um índice espacial (por exemplo, http://mapserver.org/utilities/shptree.html ) usado frequentemente é a técnica mais rápida. Além disso: depende da sua aplicação, mas o cache dos resultados renderizados geralmente é muito mais útil para melhorar o desempenho.
fonte
O Shapefile será o mais rápido e provavelmente a sua melhor aposta. Existe sobrecarga para qualquer banco de dados SQL e, em seguida, é gerenciado o retorno de grandes conjuntos de resultados (a conversão de tipos de dados do banco de dados para tipos de dados nativos também reduzirá a velocidade).
Tente usar um pacote de código aberto do maptools.org para fazer suas leituras. As ferramentas do ArcGIS, apesar de construídas especificamente, têm um pouco de sobrecarga para começar e são caras.
Espero que isto ajude
fonte