Erro no Console PyQgis

11 views
Skip to first unread message

Paulo Martins

unread,
Aug 26, 2025, 6:44:11 PM (11 days ago) Aug 26
to qgisbrasil
Montei este código com ajuda do ChatGpt, mas está dando erro, alguém pode me ajudar? Minha versão Qgis é 3.44.1
Obrigado

>>> import os
from qgis.core import QgsMessageLog, Qgis
from osgeo import gdal

# ============= CONFIGURAÇÕES =============
# Altere os caminhos conforme necessário
pasta_indices = "D:/pasta_indices"      # Rasters de índices (NDVI, NDRE, etc.)
pasta_lavouras = "D:/pasta_lavouras"    # Shapes das lavouras
pasta_saida = "C:/pasta_recortes"       # Saída para os rasters recortados
# ========================================

# Criar pasta de saída se não existir
os.makedirs(pasta_saida, exist_ok=True)

# 1. Listar arquivos de índices (.tif)
arquivos_indices = [
    f for f in os.listdir(pasta_indices)
    if f.upper().endswith('.TIF') and any(index in f.upper() for index in ['NDVI', 'NDRE'])
]

QgsMessageLog.logMessage(
    f"Encontrados {len(arquivos_indices)} arquivos de índices",
    'MeuPlugin', Qgis.Info
)

# 2. Listar shapes das lavouras (.shp)
arquivos_lavouras = [
    f for f in os.listdir(pasta_lavouras)
    if f.upper().endswith('.SHP') and not f.startswith('~')
]

QgsMessageLog.logMessage(
    f"Encontrados {len(arquivos_lavouras)} shapes de lavouras",
    'MeuPlugin', Qgis.Info
)

# 3. Processar cada combinação índice x lavoura
total_processados = 0

if not arquivos_indices:
    QgsMessageLog.logMessage("Nenhum índice encontrado!", 'MeuPlugin', Qgis.Warning)

if not arquivos_lavouras:
    QgsMessageLog.logMessage("Nenhum shapefile de lavoura encontrado!", 'MeuPlugin', Qgis.Warning)

for idx in arquivos_indices:
    for lav in arquivos_lavouras:
        caminho_indice = os.path.join(pasta_indices, idx)
        caminho_lavouras = os.path.join(pasta_lavouras, lav)
       
        # Nome de saída
        nome_base = f"{os.path.splitext(idx)[0]}_{os.path.splitext(lav)[0]}"
        caminho_saida = os.path.join(pasta_saida, f"{nome_base}.tif")
       
        # Configurar opções de recorte
        opts = gdal.WarpOptions(
            cutlineDSName=caminho_lavouras,
            cropToCutline=True,
            dstNodata=-9999,
            creationOptions=['COMPRESS=DEFLATE']
        )
       
        try:
            # Executar recorte
            ds = gdal.Warp(caminho_saida, [caminho_indice], options=opts)
            if ds is None:
                raise RuntimeError("Falha no GDAL Warp")
            ds.FlushCache()
            del ds
           
            QgsMessageLog.logMessage(f"Sucesso: {nome_base}", 'MeuPlugin', Qgis.Info)
            total_processados += 1
           
        except Exception as e:
            QgsMessageLog.logMessage(
                f"Erro ao processar {idx} com {lav}: {str(e)}",
                'MeuPlugin', Qgis.Warning
            )

# Resultado final
QgsMessageLog.logMessage(
    f"Processamento concluído! {total_processados} arquivos gerados em {pasta_saida}",
    'MeuPlugin', Qgis.Success
)
print(f"Processamento concluído! {total_processados} arquivos gerados em {pasta_saida}")
  File "<input>", line 1
    import os
             ^
SyntaxError: multiple statements found while compiling a single statement
Reply all
Reply to author
Forward
0 new messages