Pular para o conteúdo principal

Questão de TI - Ciência de Dados e Inteligência Artificial — NumPy — CESPE / CEBRASPE 2025

TI - Ciência de Dados e Inteligência ArtificialNumPy
Código
ce417538
Banca
CESPE / CEBRASPE
Órgão
EMBRAPA
Ano
2025
Cargo
Pesq ( )
O NDVI (ou índice de vegetação por diferença normalizada) permite identificar a presença de vegetação verde e caracterizar sua distribuição espacial, como também sua evolução no decorrer do tempo. Para calcular o NDVI, a linguagem Python é amplamente utilizada, devido à sua flexibilidade e às bibliotecas de processamento de dados geoespaciais disponíveis. A seguir, é apresentado um código em Python relativo ao cálculo do NDVI.   import numpy as np import rasterio def calcular_ndvi(arquivo_nir, arquivo_red, saida_ndvi):        with rasterio.open(arquivo_nir) as nir_src:               nir = nir_src.read(1).astype('float32')               perfil = nir_src.profile        with rasterio.open(arquivo_red) as red_src:               red = red_src.read(1).astype('float32')        ndvi = (nir - red) / (nir + red + 1e-10)        perfil.update(dtype=rasterio.float32, count=1)        with rasterio.open(saida_ndvi, 'w', **perfil) as dst:            dst.write(ndvi, 1)        print(f"NDVI calculado e salvo em: {saida_ndvi}")   Com base no código precedente, julgue o item a seguir.   A função calcular_ndvi recebe, como parâmetros obrigatórios, três arquivos; se um deles não for encontrado, o código gerará um erro, o que impedirá a continuidade da execução.
  1. CCerto
  2. EErrado
Revelar gabarito e comentário

GabaritoC — Certo

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

NDVI e tratamento de exceções em Python

Gabarito: CERTO. A função calcular_ndvi declara três parâmetros obrigatórios (arquivo_nir, arquivo_red, saida_ndvi) e, se qualquer um dos arquivos de entrada não for encontrado, a chamada rasterio.open() lança uma exceção que interrompe a execução — não há tratamento de erro no código. A afirmação está correta.

O NDVI (Normalized Difference Vegetation Index) é um índice espectral amplamente usado em sensoriamento remoto para quantificar a presença e a vitalidade da vegetação verde. A fórmula é:

NDVI=NIRREDNIR+REDNDVI = \frac{NIR - RED}{NIR + RED}

em que NIR é a reflectância na banda do infravermelho próximo e RED é a reflectância na banda do vermelho. O resultado varia de -1 a +1: valores próximos de 1 indicam vegetação densa e saudável, valores próximos de 0 indicam solo exposto ou rocha, e valores negativos indicam água ou superfícies não vegetadas. No código, o denominador recebe um pequeno incremento (1e-10) para evitar divisão por zero quando NIR + RED for exatamente zero — uma prática comum de estabilização numérica.

A questão, porém, não cobra a fórmula do NDVI, e sim o comportamento da função em Python diante de arquivos inexistentes. Em Python, quando uma função é definida com parâmetros sem valor padrão, eles são obrigatórios — a chamada deve fornecer todos eles, sob pena de TypeError. Além disso, a biblioteca rasterio.open() levanta uma exceção (FileNotFoundError, que é uma subclasse de OSError) se o caminho do arquivo não existir. Como o código não possui nenhum bloco try/except para capturar essa exceção, ela se propaga e encerra a execução do programa imediatamente.

A distinção importante aqui é entre parâmetros obrigatórios e parâmetros opcionais. Um parâmetro se torna opcional quando recebe um valor padrão na definição (ex.: def f(a, b=10)). No código apresentado, os três parâmetros não têm valor padrão, portanto são todos obrigatórios. A banca explora exatamente essa confusão: o candidato pode achar que, por serem arquivos, algum deles seria opcional ou que o erro seria tratado internamente — mas não é o caso.

Na prática, se você executar calcular_ndvi('nir.tif', 'red.tif', 'saida.tif') e o arquivo nir.tif não existir, o Python exibirá uma mensagem de erro como FileNotFoundError: [Errno 2] No such file or directory: 'nir.tif' e o programa será interrompido. O mesmo ocorre se red.tif não existir. O arquivo de saída (saida_ndvi) só é criado depois que os dois arquivos de entrada são lidos com sucesso, então um erro nele também interromperia a execução, mas por um motivo diferente (falha ao criar/escrever o arquivo).

NÃO CAIA NESSA!

A banca testa se você sabe que parâmetros sem valor padrão são obrigatórios e que rasterio.open() lança exceção para arquivo inexistente. O candidato pode cair ao achar que a função "tenta" abrir e segue sem erro, ou que algum parâmetro seria opcional. Mas não há try/except no código — qualquer falha de abertura interrompe a execução. Fique atento: em Python, exceção não tratada = execução encerrada.

  1. 1Chamada com 3 parâmetros obrigatórios
  2. 2rasterio.open() tenta abrir o arquivo
  3. 3Arquivo não encontrado → lança exceção
  4. 4Sem try/except → execução interrompida
LEVEL · soulevel.com.br

Item — ✅ CERTO

A função calcular_ndvi recebe exatamente três parâmetros: arquivo_nir, arquivo_red e saida_ndvi. Nenhum deles possui valor padrão, então todos são obrigatórios. Se qualquer um dos arquivos de entrada não for encontrado, rasterio.open() lança uma exceção (FileNotFoundError), que não é capturada por nenhum try/except no código — portanto, a execução é interrompida. A afirmação está correta em todos os seus termos: três parâmetros obrigatórios, erro ao não encontrar arquivo, e interrupção da execução.

Gabarito: CERTO

Link permanente: /questoes/ce417538