#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Fri Oct 27 08:46:57 2023

@author: tiagomandu
"""

import netCDF4 as nc
import numpy as np
import matplotlib.pyplot as plt
import cartopy.crs as ccrs
import geopandas as gpd
import os

dir_glm = '/oper/share/goes/goes16/goes16_web/glm_acumulado_nc/2021/03/'

# Especifique a pasta onde estão os arquivos NetCDF a serem processados
pasta = '/oper/share/goes/goes16/goes16_web/glm_acumulado_nc/2021/03/'

# Liste todos os arquivos na pasta
arquivos = os.listdir(pasta)

#/home/tiago.mandu/estados_2010/estados_2010.shp# Loop para processar cada arquivo na pasta
for arq in arquivos:
    if arq.endswith(".nc"):  # Certifique-se de processar apenas arquivos com a extensão .nc
        # Abra o arquivo NetCDF
        arquivo_nc = nc.Dataset(os.path.join(pasta, arq), 'r')

        # Acesse as variáveis de latitude e longitude
        lat = arquivo_nc.variables['lat'][:]
        lon = arquivo_nc.variables['lon'][:]

        # Acesse a variável 'event'
        event = arquivo_nc.variables['flash'][0, :, :]  # Substitua 0 pelo índice de tempo desejado, se houver mais de um intervalo de tempo

        # Defina a extensão da América do Sul (ajuste os valores conforme necessário)
        extensao_americadosul = [-55.1672,-50.0300,-29.2855,-24.7816]

        # Carregue o contorno da costa da América do Sul a partir de um shapefile (ou GeoJSON)
        shapefile_path = '/home/tiago.mandu/estados_2010/estados_2010.shp'
        gdf = gpd.read_file(shapefile_path)

        # Crie a figura e os eixos usando cartopy com a extensão da América do Sul
        fig = plt.figure(figsize=(12, 8))
        ax = fig.add_subplot(1, 1, 1, projection=ccrs.PlateCarree(), extent=extensao_americadosul)

        # Adicione o contorno da costa da América do Sul como fundo
        ax.add_geometries(gdf['geometry'], crs=ccrs.PlateCarree(), facecolor='none', edgecolor='black')

        # Adicione os dados da variável 'event' como um mapa de calor
        pcm = ax.pcolormesh(lon, lat, event, cmap='plasma', transform=ccrs.PlateCarree())

        # Adicione uma barra de cores com rótulo
        plt.colorbar(pcm, label='Event Count')

        # Adicione linhas de grade e rótulos de latitude/longitude
        ax.gridlines(draw_labels=True, dms=True, x_inline=False, y_inline=False)

        # Adicione rótulos de eixos e um título
        plt.xlabel('Longitude')
        plt.ylabel('Latitude')

        # Gere o nome do arquivo de saída com base no nome do arquivo de entrada
        filename_without_extension, _ = os.path.splitext(arq)
        output_filename = filename_without_extension + '.png'

        # Salve a figura com o nome do arquivo gerado
        output_path = os.path.join('/share/apgmet/dist/Tiago/fig/glm/', output_filename)
        plt.savefig(output_path, dpi=300, bbox_inches='tight')

        plt.close(fig)
        # Feche o arquivo NetCDF
        arquivo_nc.close()

# Certifique-se de ter os arquivos de imagem salvos na pasta de saída

