Mais

Como usar “contexto” em rasterio?

Como usar “contexto” em rasterio?


Outrorasteriopergunta de acompanhamento, após perguntas sobre leitura e escrita de rasters. Eu fiz e reprojetei com sucesso uma camada de saída, mas ao tentar usar o Visão geral módulo para construir pirâmides, descobri que não entendo algo fundamental: octxparâmetro da função.

visão geral do def (ctx, input, build, ls, rebuild, resampling):

Por uma pesquisa no Google, descobri que ctx significa "contexto" e que existe um módulo chamadocontextoemcliquebiblioteca usada porrasterio. Fiquei preso aqui: pesquisas adicionais mostram "contexto" apenas em outros contextos. As únicas dicas úteis que encontrei aqui: info.py e test_rio_info.py arquivos norasteriorepositório. Eu não sou bom o suficiente para ser capaz de fazer engenharia reversa noctxformato esperado peloVisão geralfunção dessas bibliotecas (não tenho certeza se é possível).

Portanto, preciso de um bom manual explicando os contextos usados ​​emrasterio, seja como uma resposta ou como um link com algum resumo. Como produzi-los / obtê-los, o que exatamente eles significam (eles têm alguma utilidade além de passar dados para funções?), Quais são seus componentes (se houver) etc.

EDIT: eu encontrei oContextoclasse nocliquebiblioteca nocore.pyarquivo no meu disco (/usr/local/lib/python2.7/dist-packages/click/core.pyna minha máquina Ubuntu). Não consegui inicializar explicitamente este objeto de classe (não entendi os parâmetros), mas depois de ler a resposta de Kersten, acho que não é necessário ao usar Rasterio através da API Python. A documentação da aula parece concordar:

O contexto é um objeto interno especial que mantém o estado relevante para a execução do script em todos os níveis. Normalmente é invisível para comandos, a menos que eles optem por obter acesso a ele.

O contexto é útil porque pode passar objetos internos e controlar recursos de execução especiais, como a leitura de dados de variáveis ​​de ambiente.


A funçãoVisão geralé da interface de linha de comando rasterios rio.

O que você está procurando é a função build_overviews dentro da classe I / O padrão de rasterio.

Como usar isso? Eu não tenho absolutamente nenhuma ideia, já que nunca precisei disso até agora.

Felizmente rasterio inclui um amplo conjunto de testes que também inclui um chamado test_overviews.py. Se você observar o código dentro do teste, o uso é realmente bastante direto. Quando você grava um conjunto de dados ou abre um conjunto de dados no modo de leitura / gravação, pode definir os níveis de visão geral que deseja como uma lista.

com rasterio.open ('rasterio-test.tif', 'r +') como dst: # dst.write () se seu conjunto de dados ainda não foi gravado no disco dst.build_overviews ([2,4])

No meu conjunto de dados de teste de 4800x4800 pixels, isso cria visões gerais com pirâmides de tamanho 2400x2400 e 1200x1200.

>> gdalinfo rasterio-test.tif… Visão geral: 2400x2400, 1200x1200