Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1of 3

# Reads GSMAP netcdf file by H.

Kardhana -Library
from scipy.io import netcdf as net
import numpy as np
import matplotlib.pyplot as plt

# Script 1 Script for selecting annual maxima rainfall


def getannualmaxima(f):
time=f.variables['time']
rain = f.variables['precip']
lat=f.variables['lat']
lon=f.variables['lon']
# Making Time Series-Areal Rainfall Array
# Only for inland cell lon between 2-5
Pbar=[]
for i in range(len(time.data)):
pwil=0
count=0
for j in range(len(lat.data)):
for k in range(2,5,1):
pwil+=rain.data[i,j,k]
count+=1
Pbar.append(pwil/count)
# Selecting Annual Maxima Daily Areal Rainfall
count=0
Pdaily=[]
P=0
Pmax=0
for i in range(len(Pbar)):
count+=1
P+=Pbar[i]
if count==24:
Pdaily.append(P)
if(P>Pmax):
Pmax=P
timeplace=i-23
P=0; count=0
Phour=[]
for i in range(timeplace,timeplace+24,1):
Phour.append(Pbar[i])
return(Phour)

# Script 3 Contoh mengambil data Annual Maxima jam jaman 14 tahun


tahunawal=2008
tahunakhir=2021
annualmaxima=[]
for i in range(tahunawal,tahunakhir+1,1):
f = net.netcdf_file('gsmap_rnl_v6_sel_'+str(i)+'.nc',mode='r',mmap=False)
phour=getannualmaxima(f)
annualmaxima.append(phour)

#Contoh Mengeplot Data Annual Maxima jam jaman 14 tahun


plt.figure(figsize=[6,4])
for i in range(len(annualmaxima)):
plt.plot(annualmaxima[i],label=str(i+tahunawal)+' '+str(i))
plt.legend()
plt.xlim(0,24)
plt.ylim(0,40)

plt.figure(figsize=[6,4])
#Contoh Mengeplot Data Annual Maxima 14 tahun
dailyannualmax=[]
for i in range(len(annualmaxima)):
dailyannualmax.append(np.sum(annualmaxima[i]))
plt.plot(list(range(tahunawal,tahunakhir+1,1)),dailyannualmax,'bo');
plt.figure(figsize=[6,4])
#Contoh Mengeplot Data Annual Maxima 14 tahun
dailyannualmax=[]
for i in range(len(annualmaxima)):
dailyannualmax.append(np.sum(annualmaxima[i]))
plt.plot(list(range(tahunawal,tahunakhir+1,1)),dailyannualmax,'bo');

# Script 4 #Contoh Mengeplot Data Annual Maxima Extreme

plt.figure(figsize=[6,4])
plt.plot(annualmaxima[2],label=2+tahunawal)
plt.plot(annualmaxima[5],label=5+tahunawal)
plt.legend()
plt.xlim(0,24)
plt.ylim(0,40);

plt.figure(figsize=[6,4])
thresholdhujan=0.2 #Mengeset hujan di bawah 0.2 mm as no rain

# Script 5 #Membandingkan antara Huff dan PSA 007 dengan Data Annual Maxima
Extreme

a=0
anum=[]
count=0
index=5
for j in range(len(annualmaxima[index])):
if(annualmaxima[index][j]>thresholdhujan):
a+=annualmaxima[index][j]
anum.append(a)
anum=np.array(anum)/np.max(anum)*100
plt.plot(anum,'bo',label=index+tahunawal)
plt.fill_between(list(range(0,len(anum))),anum,color='b',alpha=0.1)

a=0
anum=[]
count=0
index=2
for j in range(len(annualmaxima[index])):
if(annualmaxima[index][j]>thresholdhujan):
a+=annualmaxima[index][j]
anum.append(a)
anum=np.array(anum)/np.max(anum)*100
plt.plot(anum,'bo',label=index+tahunawal)
plt.fill_between(list(range(0,len(anum))),anum,color='w')

#Huff
dt=0.05
tpertd=np.arange(0.05,1+dt,dt)
huff=[0.063,0.178,0.333,0.5,0.62,0.705,0.760,0.798,0.830,0.855,0.880,0.898,0.915,0.
930,0.944,0.958,0.971,0.983,0.994,1]
plt.plot(tpertd*6,np.array(huff)*100,label="huff6")
plt.plot(tpertd*12,np.array(huff)*100,label="huff12")
plt.plot(tpertd*24,np.array(huff)*100,label="huff24")
#PSA007
PSA6=[0.05,0.15,0.75,0.91,0.97,1]
PSA12=[0.02,0.04,0.07,0.12,0.21,0.66,0.81,0.88,0.93,0.96,0.99,1]
PSA24=[0.0075,0.015,0.0275,0.04,0.055,0.07,0.095,0.12,0.155,0.205,0.295,0.625,0.745
,0.805,0.845,0.88,0.905,0.93,0.945,0.96,0.9725,0.9850,0.9925,1]
plt.plot(np.array(PSA6)*100,label="PSA6")
plt.plot(np.array(PSA12)*100,label="PSA12")
plt.plot(np.array(PSA24)*100,label="PSA24")

plt.legend()
plt.xlim(0,24)
plt.ylim(0,100)

You might also like