Quando trabalhamos com ortomosaicos ou rasters muito grandes, um dos principais desafios é como armazenar e publicar esses dados com boa performance, sem sobrecarregar o servidor GIS.

Uma arquitetura moderna que vem sendo cada vez mais utilizada é baseada em:

  • Cloud Optimized GeoTIFF (COG)
  • MinIO ou Google Cloud Storage ou Amazon S3 (Object Storage)
  • GeoServer

Essa combinação permite que o GeoServer leia diretamente rasters armazenados em object storage, sem precisar copiá-los para o servidor.

Neste post vou mostrar um passo a passo simples e prático para implementar essa arquitetura:

O ponto principal aqui é que o GeoServer não precisa armazenar o raster localmente. Ele apenas acessa o arquivo COG diretamente no storage.

1. Converter o raster para COG

O primeiro passo é converter o raster tradicional para Cloud Optimized GeoTIFF (COG). Isso pode ser feito utilizando o GDAL.

gdal_translate ortomosaico.tif ortomosaico_cog.tif \
-of COG \
-co COMPRESS=LZW \
-co BLOCKSIZE=512 \
-co BIGTIFF=YES \
-co OVERVIEWS=IGNORE_EXISTING

Parâmetros importantes

Parâmetro Função
-of COG gera um Cloud Optimized GeoTIFF
COMPRESS=LZW compressão sem perdas
BLOCKSIZE=512 otimização para leitura em blocos
BIGTIFF=YES necessário para arquivos grandes

2. Verificar se o COG foi criado corretamente

Depois da conversão, é importante verificar se o arquivo foi gerado corretamente.

gdalinfo ortomosaico_cog.tif

No resultado deve aparecer algo como:

LAYOUT=COG

E também a presença de overviews:

Overviews: 28676x21832, 14338x10916, ...

Isso confirma que o arquivo está otimizado para leitura em nuvem.

3. Subir o arquivo para o storage (S3 ou MinIO)

Agora precisamos enviar o arquivo para um Object Storage.

Você pode utilizar:

  • MinIO (self-hosted)
  • Amazon S3
  • Google Cloud Storage

No caso do MinIO, é comum utilizar o cliente mc.

Configurar o acesso ao servidor

mc alias set minio http://SEU_SERVIDOR:9000 ACCESS_KEY SECRET_KEY

Enviar o raster para um bucket

mc cp ortomosaico_cog.tif minio/rasters/

Após o upload, o arquivo ficará acessível em algo como:

http://servidor:9000/rasters/ortomosaico_cog.tif

4. Configurar o raster no GeoServer

Agora vamos configurar o raster no GeoServer.

Acesse a interface administrativa:

http://seu-servidor:8080/geoserver

Criar um novo Store

Vá em:

Stores → Add new Store

Escolha:

GeoTIFF / Cloud Optimized GeoTIFF

Informar a URL do COG

No campo de URL informe o caminho do arquivo:

http://servidor:9000/rasters/ortomosaico_cog.tif

Salve o store.

5. Publicar a Layer

Após salvar o store, o GeoServer detectará automaticamente o raster.

Basta clicar em:

Publish

Configure:

  • Bounding Box
  • CRS
  • Nome da layer

Depois salve.

6. Testar o serviço

Agora o raster já pode ser acessado via:

  • WMS
  • WCS
  • WMTS

Exemplo de endpoint WMS:

http://servidor:8080/geoserver/wms

Ou diretamente pelo Layer Preview do GeoServer.

7. Por que essa arquitetura é interessante?

Escalabilidade

O storage pode crescer independentemente do GeoServer.

Performance

O COG permite leitura parcial do raster utilizando HTTP Range Requests.
Ou seja, o cliente solicita apenas a parte da imagem que precisa.

Integração com cloud

A mesma arquitetura funciona com diversos serviços de object storage.

  • Amazon S3
  • MinIO
  • Google Cloud Storage

8. Conclusão

A combinação de COG + Object Storage + GeoServer é hoje uma das formas mais eficientes
de publicar rasters grandes em ambientes WebGIS.

Essa abordagem permite:

  • separar armazenamento e serviço
  • escalar facilmente
  • melhorar a performance de acesso aos dados

E o melhor: tudo pode ser implementado utilizando software open source.