Qual é a melhor maneira de exibir uma imagem aérea enorme usando o GeoServer

8

Tenho uma imagem aérea - quase 1,5 GB, GeoTIFF - e tenho tentado adicioná-la como uma camada no GeoServer ...

A adição da camada foi bem-sucedida, mas o desempenho foi muito ruim.

Tentei armazenar em cache a camada usando o GeoWebCache, e o desempenho ainda é ruim.

Alguma dica?

Mathboy
fonte

Respostas:

13

Você precisa agrupar a imagem e adicionar visões gerais para que a imagem inteira nunca seja lida na memória ao mesmo tempo. O GeoServer fornece um armazenamento de dados em pirâmide de imagens para esse fim.

Eu escrevi essas notas descrevendo como eu configuro isso na minha máquina. A etapa principal é usar o GDAL para construir a pirâmide usando o seguinte comando:

mkdir bmpyramid
gdal_retile.py -v -r bilinear -levels 8 -ps 2048 2048 -co \
"TILED=YES" -targetDir bmpyramid \
bluemarble.tif

Onde-

  • -v: saída detalhada, permite ao usuário ver cada rolagem de criação de arquivo, sabendo assim que está sendo feito progresso (uma grande construção de pirâmide pode levar horas)
  • -r bilinear: use interpolação bilinear ao criar os níveis mais baixos de resolução. Esta é a chave para obter boa qualidade de imagem sem pedir ao GeoServer para executar interpolações caras na memória
  • -níveis 8: o número de níveis na pirâmide
  • -ps 2048 2048: cada bloco na pirâmide será um GeoTIFF de 2048x2048
  • -co “TILED = SIM”: cada peça GeoTIFF na pirâmide será lado a lado
  • (Não usado aqui) -co “COMPRESS = JPEG”: cada bloco GeoTIFF na pirâmide será compactado em JPEG (negocia tamanho pequeno para obter melhor desempenho, experimente-o sem esse parâmetro também)
  • -targetDir bmpyramid: construa a pirâmide no diretório bmpyramid. O diretório de destino deve existir e estar vazio
  • bmreduced.tiff: o arquivo de origem

Notas sobre o utilitário para gdal_retile.py .

Ian Turton
fonte
Como posso obter o gdal_retile.py (estou executando o geoserver no Windows XP)?
Mathboy
trac.osgeo.org/osgeo4w e siga as instruções de instalação rápida
Ian Turton
Agora eu tenho um problema, criei os blocos usando a ferramenta gdal_retile.py, mas estou recebendo o seguinte erro do Geoserver ao vincular a camada à pasta de blocos: Could not list layers for this store, an error occurred retrieving them: This plugin accepts only File, URL and String pointing to a filealguma sugestão?
Mathboy
@iant, a barra nesta parte está -co \ "TILED=YES"permitindo que a instrução abranja uma quebra de linha na janela de comando?
26612 elrobis
3
Além disso, ao usar o gdal_retile no Windows para processar uma varredura de alta resolução e grande área, recomendo adicionar -useDirForEachRow. Por padrão, o retile coloca todos os blocos que ele cria na mesma pasta e, para rasters grandes, isso cria uma tremenda desaceleração, pois possui cerca de 350.000 blocos na pasta raiz. Por outro lado, -useDirForEachRowcoloca os blocos de cada linha em sua própria pasta abaixo da raiz do bloco. Isso significa uma enorme velocidade no Windows. Antes de -useDirForEachRowum mosaico de imagens de todo o país (6 polegadas) precisar de 2 meses para ser executado! Após -useDir, o processo completo seria concluído da noite para o dia.
26612 elrobis