
#necessario so para a barra de cor,
#se quiser usar outra barra de cor pode remover #
#esse modulo e trocar o cmap no contour la no fim desse script
#####
import matplotlib.pyplot as plt
import numpy as np
import cartopy.crs as ccrs #deu erro
import cartopy
import glob

#info de tamanho da matriz e CENTRO do radar
nx = 500
ny = 500
#lat lon radar chapeco
lat_r = -27.04879
lon_r = -52.60374

path = '/home/tiago.mandu/'
out_path = '/share/apgmet/dist/Tiago/'

rad = 'R12132246_'
file = '201901101932'
#Abrir o arquivo
arq = rad+file+'.raw'
file = 'R12132246_202103050007.raw'
f = open(path+file, 'rb')
data = np.fromfile(f, count=nx*ny, dtype=np.float32)
f.close()

cappi = np.reshape(data, [nx, ny], order='C')
#inverte o eixo y
#cappi = np.flip(cappi, 0)

#o que for valor invalido some do mapa
cappi[cappi == -99] = np.nan

radar = 'Chapeco'
ano = arq[10:14]
mes = arq[14:16]
dia = arq[16:18]
hora = arq[18:22]
date = arq[10:22]
titulo = radar + ' - CAPPI 3 km- ' + ano + '-' + mes + '-' + dia +' ' + hora + 'Z' 

x = np.arange(nx)*1000 - 250000
y = x
xx,yy = np.meshgrid(x,y)

fig = plt.figure(figsize=[8,6])
crs = ccrs.Orthographic(central_latitude=lat_r, central_longitude=lon_r)
ax=fig.add_subplot(1,1,1, projection=crs)

#plota o mapa, rios, litoral, etc
#ax.add_feature(cartopy.feature.LAND)
#ax.add_feature(cartopy.feature.OCEAN)
ax.add_feature(cartopy.feature.COASTLINE,linewidth=1.0, color='black')
ax.add_feature(cartopy.feature.BORDERS,linewidth=1.0, color='black')
#ax.add_feature(cartopy.feature.LAKES, alpha=0.5)
#ax.add_feature(cartopy.feature.RIVERS)

ax.set_extent((-250000, 250000, -250000, 250000), crs=crs)
#ax.set_extent((-120000, 120000, -120000, 120000), crs=crs)


#plota os círculos de distancia (60 km cada)
circ1=plt.Circle((0, 0), radius=50000, color='black', fill=False, lw=0.5)
circ2=plt.Circle((0, 0), radius=100000, color='black', fill=False, lw=0.5)
circ3=plt.Circle((0, 0), radius=180000, color='black', fill=False, lw=0.5)
circ4=plt.Circle((0, 0), radius=240000, color='black', fill=False, lw=0.5)
ax.add_patch(circ1)
ax.add_patch(circ2)
ax.add_patch(circ3)
ax.add_patch(circ4)

#plota o grid
gl = ax.gridlines(draw_labels=True, linestyle='--')
gl.top_labels = False
gl.right_labels = False


#plota a barra de cor
vmin=0
vmax=70
levels=np.arange(vmin,vmax, 5)
dbz = ax.contourf(xx, yy, cappi,
                  levels=levels,cmap='rainbow',
                  transform=crs)
plt.colorbar(dbz, label='[dBZ]')
plt.title(titulo, fontsize='x-large')

# Define o nome do arquivo
filename = out_path + 'jj.png'

# Salva a figura como um arquivo PNG
# Ajusta a resolução (DPI) para melhor qualidade
plt.savefig(filename, dpi=300)  # 300 DPI é um valor de exemplo

# Exibe a figura na tela
plt.show()

# Fecha a figura
plt.close()


