Skip to content

Commit 13c5865

Browse files
authored
incluedes user interface to choose years and co-ordinate files
1 parent 34980c5 commit 13c5865

File tree

1 file changed

+70
-0
lines changed

1 file changed

+70
-0
lines changed

IMD-GUI.pyw

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
import PySimpleGUI as sg
2+
import sys
3+
import imdlib as imd
4+
import csv
5+
import pandas as pd
6+
import os, glob
7+
import os.path
8+
from os import path
9+
os.makedirs("temp", exist_ok=True)
10+
if len(sys.argv) == 1:
11+
sg.ChangeLookAndFeel('GreenTan')
12+
form = sg.FlexForm('IMD-GRD-EXTRACT', default_element_size=(40, 1))
13+
choices = list(reversed(range(1901,2021)))
14+
layout = [
15+
[sg.Text('Downloading IMD gridded Data as CSV Files', size=(40, 1), font=("Helvetica", 20))],
16+
[sg.Text('Start year',size=(15,1)),sg.Text('end year',size=(15,1))],
17+
[sg.InputCombo((choices),size=(10, 4)),sg.InputCombo((choices),size=(10, 4))],
18+
[sg.Text('Document to open')],
19+
[sg.In(), sg.FileBrowse()],
20+
[sg.Submit(), sg.Cancel()]
21+
]
22+
button, values = form.Layout(layout).Read()
23+
start_yr=values[0]
24+
end_yr=values[1]
25+
csv_file = values[2]
26+
lats=[]
27+
lons=[]
28+
with open(csv_file, 'r') as f:
29+
reader = csv.DictReader(f)
30+
for row in reader:
31+
lats.append(float(row.get('lat')))
32+
lons.append(float(row.get('lon')))
33+
pars = ["rain","tmax","tmin"]
34+
for i in range(len(lats)):
35+
for variable in pars:
36+
os.makedirs(variable, exist_ok=True)
37+
lat=lats[i]
38+
lon=lons[i]
39+
#variable = 'rain' # other options are ('tmin'/ 'tmax')
40+
for y in range(start_yr,end_yr+1,1):
41+
if not path.exists(variable + "\\" + str(y) + ".GRD"):
42+
print("file: " + variable + "\\" + str(y) + ".GRD" + " doesn't exist, downloading")
43+
data = imd.get_data(variable, y, y, fn_format='yearwise')
44+
data = imd.open_data(variable, y, y,'yearwise')
45+
data.to_csv("temp\\" + variable + '-' + str(y) + '.csv', lat, lon,)
46+
continue
47+
print("imd-get- " + str(y))
48+
data = imd.open_data(variable, y, y,'yearwise') #data = imd.open_data(variable, start_yr, end_yr,'yearwise') #ds = data.get_xarray()
49+
data.to_csv("temp\\" + variable + '-' + str(y) + '.csv', lat, lon,)
50+
fl = glob.glob(os.path.join("temp\\" + variable + "-*"+ str(f'{lats[i]:.2f}') + '_' + str(f'{lons[i]:.2f}') + '.csv'))
51+
cb_var=pd.concat([pd.read_csv(f) for f in fl])
52+
cb_var.to_csv("temp\\" + variable + '_' + str(f'{lats[i]:.2f}') + '_' + str(f'{lons[i]:.2f}') + '.csv', index=False)
53+
for f in fl:
54+
os.remove(f)
55+
f1=pd.read_csv("temp\\" + 'tmax_' + str(f'{lats[i]:.2f}') + '_' + str(f'{lons[i]:.2f}') + '.csv')
56+
f2=pd.read_csv("temp\\" + 'tmin_' + str(f'{lats[i]:.2f}') + '_' + str(f'{lons[i]:.2f}') + '.csv')
57+
f3=pd.read_csv("temp\\" + 'rain_' + str(f'{lats[i]:.2f}') + '_' + str(f'{lons[i]:.2f}') + '.csv')
58+
mer1=f1.merge(f2,on='DateTime')
59+
mer2=mer1.merge(f3,on='DateTime')
60+
mer2.to_csv(str(f'{lats[i]:.2f}') + '_' + str(f'{lons[i]:.2f}') + '.csv',header=['Date','Tmax','Tmin','Rain'],index=False)
61+
62+
63+
filelist = glob.glob(os.path.join("*_"+ str(f'{lats[i]:.2f}') + '_' + str(f'{lons[i]:.2f}') + '.csv'))
64+
for f in filelist:
65+
os.remove(f)
66+
print("created the file: " + str(f'{lats[i]:.2f}') + '_' + str(f'{lons[i]:.2f}') + '.csv and deleted the temp files')
67+
for f in os.listdir("temp"):
68+
os.remove(os.path.join("temp", f))
69+
sg.Popup('done')
70+
sg.close

0 commit comments

Comments
 (0)