ethio_hydro / stlib /precipitation.py
poooja2012's picture
Modified modules fine
5872239
import pandas as pd
import numpy as np
import streamlit as st
import folium
import folium.plugins
from streamlit_folium import st_folium
from branca.element import Figure
from precipitation_function import date_split,lat_long_process_precp
from precipitation_function import concat_func, drop_dup_funct,lat_long_type
from precipitation_function import daily_precp_plot,start_end_date_ui,lat_long_ui,year_selection_ui
from precipitation_function import monthly_mean_plot, annual_max_precip_plot,daily_precp_data,cumulative_plot
from precipitation_function import annual_max_precip_plot,annual_min_precip_plot,annual_avg_plot,max_precip,min_precip,avg_precip,cumulative
from temperature_functions import convert_df, map_creation, search_func
def run():
fig = Figure(width = 550,height = 350)
nearest_lat_long = 0
nn = 0
start = pd.to_datetime('2001/01/01')
end = pd.to_datetime('2019/12/31')
#precipitation data
# bucket_name = "timeseries_data_storage"
# file_path_1 = "precip_data/precip1.zip"
# file_path_2 = "precip_data/precip2.zip"
# file_path_3 = "precip_data/precip3.zip"
# file_path_4 = "precip_data/precip4.zip"
# file_path_5 = "precip_data/precip5.zip"
# file_path_6 = "precip_data/precip6.zip"
# file_path_7 = "precip_data/precip7.zip"
# file_path_8 = "precip_data/precip8.zip"
# file_path_9 = "precip_data/precip9.zip"
# file_path_10 = "precip_data/precip10.zip"
# file_path_11 = "precip_data/precip11.zip"
# file_path_12 = "precip_data/precip12.zip"
# file_path_13 = "precip_data/precip13.zip"
# file_path_14 = "precip_data/precip14.zip"
# file_path_15 = "precip_data/precip15.zip"
# file_path_16 = "precip_data/precip16.zip"
precipitation_1_og = pd.read_csv('historicalData/precip1.zip',compression = 'zip')
precipitation_2_og = pd.read_csv('historicalData/precip2.zip',compression = 'zip')
precipitation_3_og = pd.read_csv('historicalData/precip3.zip',compression = 'zip')
precipitation_4_og = pd.read_csv('historicalData/precip4.zip',compression = 'zip')
precipitation_5_og = pd.read_csv('historicalData/precip5.zip',compression = 'zip')
precipitation_6_og = pd.read_csv('historicalData/precip6.zip',compression = 'zip')
precipitation_7_og = pd.read_csv('historicalData/precip7.zip',compression = 'zip')
precipitation_8_og = pd.read_csv('historicalData/precip8.zip',compression = 'zip')
precipitation_9_og = pd.read_csv('historicalData/precip9.zip',compression = 'zip')
precipitation_10_og = pd.read_csv('historicalData/precip10.zip',compression = 'zip')
precipitation_11_og = pd.read_csv('historicalData/precip11.zip',compression = 'zip')
precipitation_12_og = pd.read_csv('historicalData/precip12.zip',compression = 'zip')
precipitation_13_og = pd.read_csv('historicalData/precip13.zip',compression = 'zip')
precipitation_14_og = pd.read_csv('historicalData/precip14.zip',compression = 'zip')
precipitation_15_og = pd.read_csv('historicalData/precip15.zip',compression = 'zip')
precipitation_16_og = pd.read_csv('historicalData/precip16.zip',compression = 'zip')
lat_long_precipitation_1 = precipitation_1_og['lat_long']
lat_long_precipitation_2 = precipitation_2_og['lat_long']
lat_long_precipitation_3 = precipitation_3_og['lat_long']
lat_long_precipitation_4 = precipitation_4_og['lat_long']
lat_long_precipitation_5 = precipitation_5_og['lat_long']
lat_long_precipitation_6 = precipitation_6_og['lat_long']
lat_long_precipitation_7 = precipitation_7_og['lat_long']
lat_long_precipitation_8 = precipitation_8_og['lat_long']
lat_long_precipitation_9 = precipitation_9_og['lat_long']
lat_long_precipitation_10 = precipitation_10_og['lat_long']
lat_long_precipitation_11 = precipitation_11_og['lat_long']
lat_long_precipitation_12 = precipitation_12_og['lat_long']
lat_long_precipitation_13 = precipitation_13_og['lat_long']
lat_long_precipitation_14 = precipitation_14_og['lat_long']
lat_long_precipitation_15 = precipitation_15_og['lat_long']
lat_long_precipitation_16 = precipitation_16_og['lat_long']
lat_long_precipitation_list_1 = concat_func(lat_long_precipitation_1,lat_long_precipitation_2,lat_long_precipitation_3,lat_long_precipitation_4)
lat_long_precipitation_list_2 = concat_func(lat_long_precipitation_5,lat_long_precipitation_6,lat_long_precipitation_7,lat_long_precipitation_8)
lat_long_precipitation_list_3 = concat_func(lat_long_precipitation_9,lat_long_precipitation_10,lat_long_precipitation_11,lat_long_precipitation_12)
lat_long_precipitation_list_4 = concat_func(lat_long_precipitation_13,lat_long_precipitation_14,lat_long_precipitation_15,lat_long_precipitation_16)
lat_long_precipitation_list = concat_func(lat_long_precipitation_list_1,lat_long_precipitation_list_2,lat_long_precipitation_list_3,lat_long_precipitation_list_4)
precipitation_conc_1 = concat_func(precipitation_1_og,precipitation_2_og,precipitation_3_og,precipitation_4_og)
precipitation_conc_2 = concat_func(precipitation_5_og,precipitation_6_og,precipitation_7_og,precipitation_8_og)
precipitation_conc_3 = concat_func(precipitation_9_og,precipitation_10_og,precipitation_11_og,precipitation_12_og)
precipitation_conc_4 = concat_func(precipitation_13_og,precipitation_14_og,precipitation_15_og,precipitation_16_og)
precipitation = concat_func(precipitation_conc_1,precipitation_conc_2,precipitation_conc_3,precipitation_conc_4)
# precipitation = precipitation.drop([Unnamed:0.2,Unnamed:0.1,Unnamed:0],axis =1)
precipitation.drop(precipitation.filter(regex="Unnamed"),axis=1, inplace=True)
# st.write(precipitation.head())
precipitation_temp = precipitation.copy()
precipitation_temp = precipitation_temp.groupby('lat_long')
with st.sidebar:
data_type = st.radio("Select Data Type to View",
('Daily Precipitation','Cumulative Monthly Precipitation','Monthly Average Precipitation',
'Annual Maximum Precipitation','Annual Minimum Precipitation',
'Annual Average Precipitation','Annual Max, Min, & Average Precipitation'))
if data_type == "Cumulative Monthly Precipitation":
col1,col2 = st.columns(2)
with col1:
start_year,end_year = year_selection_ui(99,100)
with col2:
#calling the ui method to create a lat long input UI
latitude_input,longitude_input = lat_long_ui(300,400)
latitude_input,longitude_input= float(latitude_input),float(longitude_input)
nearest_lat_long = search_func(latitude_input,longitude_input,lat_long_precipitation_list,precipitation)
option = lat_long_type(nearest_lat_long)
with col1:
st.write("**Nearest latitude and longitude from the entered latitude longitude is :**",option)
df_cumulative = precipitation_temp.get_group(option)
df_cumulative = date_split(df_cumulative)
lat = float(option.split(',')[0])
long = float(option.split(',')[1])
m = map_creation(lat,long,0,0)
last_click = m['last_clicked']
with col2:
if last_click is not None:
clicked_lat = last_click['lat']
clicked_long = last_click['lng']
st.markdown("**Last Clicked Latitude Longitude point is:**")
st.write("{:0.2f},{:0.2f}".format(clicked_lat,clicked_long))
nn = search_func(clicked_lat,clicked_long,lat_long_precipitation_list,precipitation)
nn = lat_long_type(nn)
st.write("**Nearest Latitude and Longitude is:**",nn)
st.markdown(" ")
else:
st.markdown("**Click on the map to fetch the Latitude and Longitude**")
if last_click is not None:
clicked_lat = last_click['lat']
clicked_long = last_click['lng']
map_creation(lat,long,clicked_lat,clicked_long)
df_c = cumulative(df_cumulative,start_year,end_year)
fig_cumulative = cumulative_plot(df_c)
st.plotly_chart(fig_cumulative,use_container_width=True)
c1,c2,c3,c4,c5 = st.columns(5)
with c3:
st.download_button("Download Data",data = convert_df(df_c),
file_name='cumulative_precipitation.csv',
mime='text/csv',)
elif data_type == "Daily Precipitation":
col1,col2 = st.columns(2)
with col1:
#calling the ui method to create a start end date input UI
start,end = start_end_date_ui(start,end,11,22)
with col2:
latitude_input,longitude_input = lat_long_ui(1,2)
latitude_input,longitude_input= float(latitude_input),float(longitude_input)
nearest_lat_long = search_func(latitude_input,longitude_input,lat_long_precipitation_list,precipitation)
option = lat_long_type(nearest_lat_long)
with col1:
st.write("**Nearest latitude and longitude from the entered latitude longitude is :**",option)
lat = float(option.split(',')[0])
long = float(option.split(',')[1])
m = map_creation(lat,long,0,0)
last_click = m['last_clicked']
with col2:
if last_click is not None:
clicked_lat = last_click['lat']
clicked_long = last_click['lng']
st.markdown("**Last Clicked Latitude Longitude point is:**")
st.write("{:0.2f},{:0.2f}".format(clicked_lat,clicked_long))
nn = search_func(clicked_lat,clicked_long,lat_long_precipitation_list,precipitation)
nn = lat_long_type(nn)
st.write("**Nearest Latitude and Longitude is:**",nn)
st.markdown(" ")
else:
st.markdown("**Click on the map to fetch the Latitude and Longitude**")
if last_click is not None:
clicked_lat = last_click['lat']
clicked_long = last_click['lng']
map_creation(lat,long,clicked_lat,clicked_long)
daily_precp_df = daily_precp_data(precipitation_temp,start,end,option)
# st.write(daily_precp_df.head())
daily_precp_df.drop_duplicates(inplace = True)
daily_df = daily_precp_df.loc[str(start):str(end)]
# st.write(daily_df)
fig_daily_precp = daily_precp_plot(daily_df)
st.plotly_chart(fig_daily_precp,use_container_width = True)
c1,c2,c3,c4,c5 = st.columns(5)
with c3:
st.download_button("Download Data",data = convert_df(daily_precp_df),
file_name='daily_precipitation.csv',
mime='text/csv',)
elif data_type == 'Monthly Average Precipitation':
col1,col2 = st.columns(2)
with col1:
start_year,end_year = year_selection_ui(9,10)
with col2:
#calling the ui method to create a lat long input UI
latitude_input,longitude_input = lat_long_ui(3,4)
latitude_input,longitude_input= float(latitude_input),float(longitude_input)
nearest_lat_long = search_func(latitude_input,longitude_input,lat_long_precipitation_list,precipitation)
option = lat_long_type(nearest_lat_long)
lat = float(option.split(',')[0])
long = float(option.split(',')[1])
m = map_creation(lat,long,0,0)
last_click = m['last_clicked']
with col1:
st.write("**Nearest latitude and longitude from the entered latitude longitude is :**",option)
with col2:
if last_click is not None:
clicked_lat = last_click['lat']
clicked_long = last_click['lng']
st.markdown("**Last Clicked Latitude Longitude point is:**")
st.write("{:0.2f},{:0.2f}".format(clicked_lat,clicked_long))
nn = search_func(clicked_lat,clicked_long,lat_long_precipitation_list,precipitation)
nn = lat_long_type(nn)
st.write("**Nearest Latitude and Longitude is:**",nn)
st.markdown(" ")
else:
st.markdown("**Click on the map to fetch the Latitude and Longitude**")
if last_click is not None:
clicked_lat = last_click['lat']
clicked_long = last_click['lng']
map_creation(lat,long,clicked_lat,clicked_long)
precipitation_monthly_avg = precipitation_temp.get_group(option)
precipitation_monthly_avg = date_split(precipitation_monthly_avg)
precipt_monthly_avg_df = precipitation_monthly_avg.groupby(['Year','Month'],as_index=False)['precip'].mean()
precipt_monthly_avg_df = precipt_monthly_avg_df.set_index('Year')
precipitation_monthly_avg_df = precipt_monthly_avg_df.loc[str(start_year):str(end_year)]
precipitation_monthly_avg_df.reset_index(inplace = True)
mean_chart_plot = monthly_mean_plot(precipitation_monthly_avg_df)
st.altair_chart(mean_chart_plot)
c1,c2,c3,c4,c5 = st.columns(5)
with c3:
st.download_button("Download Data",data = convert_df(precipitation_monthly_avg_df),
file_name='Monthly_avg_precipitation.csv',
mime='text/csv',)
elif data_type == 'Annual Maximum Precipitation':
col1,col2 = st.columns(2)
with col1:
start_year,end_year = year_selection_ui(11,12)
with col2:
#calling the ui method to create a lat long input UI
latitude_input,longitude_input = lat_long_ui(5,6)
latitude_input,longitude_input= float(latitude_input),float(longitude_input)
nearest_lat_long = search_func(latitude_input,longitude_input,lat_long_precipitation_list,precipitation)
option = lat_long_type(nearest_lat_long)
lat = float(option.split(',')[0])
long = float(option.split(',')[1])
m = map_creation(lat,long,0,0)
last_click = m['last_clicked']
with col1:
st.write("**Nearest latitude and longitude from the entered latitude longitude is :**",option)
with col2:
if last_click is not None:
clicked_lat = last_click['lat']
clicked_long = last_click['lng']
st.markdown("**Last Clicked Latitude Longitude point is:**")
st.write("{:0.2f},{:0.2f}".format(clicked_lat,clicked_long))
nn = search_func(clicked_lat,clicked_long,lat_long_precipitation_list,precipitation)
nn = lat_long_type(nn)
st.write("**Nearest Latitude and Longitude is:**",nn)
st.markdown(" ")
else:
st.markdown("**Click on the map to fetch the Latitude and Longitude**")
if last_click is not None:
clicked_lat = last_click['lat']
clicked_long = last_click['lng']
map_creation(lat,long,clicked_lat,clicked_long)
Annual_max_precip = max_precip(precipitation_temp,option,start_year,end_year)
fig_max = annual_max_precip_plot(Annual_max_precip)
st.plotly_chart(fig_max,use_container_width=True)
c1,c2,c3,c4,c5 = st.columns(5)
with c3:
st.download_button("Download Data",data = convert_df(Annual_max_precip),
file_name='Annual_max_precipitation.csv',
mime='text/csv',)
elif data_type == 'Annual Minimum Precipitation':
col1,col2 = st.columns(2)
with col1:
start_year,end_year = year_selection_ui(13,14)
with col2:
#calling the ui method to create a lat long input UI
latitude_input,longitude_input = lat_long_ui(7,8)
latitude_input,longitude_input= float(latitude_input),float(longitude_input)
nearest_lat_long = search_func(latitude_input,longitude_input,lat_long_precipitation_list,precipitation)
option = lat_long_type(nearest_lat_long)
lat = float(option.split(',')[0])
long = float(option.split(',')[1])
m = map_creation(lat,long,0,0)
last_click = m['last_clicked']
with col1:
st.write("**Nearest latitude and longitude from the entered latitude longitude is :**",option)
with col2:
if last_click is not None:
clicked_lat = last_click['lat']
clicked_long = last_click['lng']
st.markdown("**Last Clicked Latitude Longitude point is:**")
st.write("{:0.2f},{:0.2f}".format(clicked_lat,clicked_long))
nn = search_func(clicked_lat,clicked_long,lat_long_precipitation_list,precipitation)
nn = lat_long_type(nn)
st.write("**Nearest Latitude and Longitude is:**",nn)
st.markdown(" ")
else:
st.markdown("**Click on the map to fetch the Latitude and Longitude**")
if last_click is not None:
clicked_lat = last_click['lat']
clicked_long = last_click['lng']
map_creation(lat,long,clicked_lat,clicked_long)
minimum_precip_df = min_precip(precipitation_temp,option,start_year,end_year)
fig_min = annual_min_precip_plot(minimum_precip_df)
st.plotly_chart(fig_min,use_container_width = True)
c1,c2,c3,c4,c5 = st.columns(5)
with c3:
st.download_button("Download Data",data = convert_df(minimum_precip_df),
file_name='Annual_minimum_precipitation.csv',
mime='text/csv',)
elif data_type == 'Annual Average Precipitation':
col1,col2 = st.columns(2)
with col1:
start_year,end_year = year_selection_ui(15,16)
with col2:
#calling the ui method to create a lat long input UI
latitude_input,longitude_input = lat_long_ui(9,10)
latitude_input,longitude_input= float(latitude_input),float(longitude_input)
nearest_lat_long = search_func(latitude_input,longitude_input,lat_long_precipitation_list,precipitation)
option = lat_long_type(nearest_lat_long)
lat = float(option.split(',')[0])
long = float(option.split(',')[1])
m = map_creation(lat,long,0,0)
last_click = m['last_clicked']
with col1:
st.write("**Nearest latitude and longitude from the entered latitude longitude is :**",option)
with col2:
if last_click is not None:
clicked_lat = last_click['lat']
clicked_long = last_click['lng']
st.markdown("**Last Clicked Latitude Longitude point is:**")
st.write("{:0.2f},{:0.2f}".format(clicked_lat,clicked_long))
nn = search_func(clicked_lat,clicked_long,lat_long_precipitation_list,precipitation)
nn = lat_long_type(nn)
st.write("**Nearest Latitude and Longitude is:**",nn)
st.markdown(" ")
else:
st.markdown("**Click on the map to fetch the Latitude and Longitude**")
if last_click is not None:
clicked_lat = last_click['lat']
clicked_long = last_click['lng']
map_creation(lat,long,clicked_lat,clicked_long)
avg_precip_df_se = avg_precip(precipitation_temp,option,start_year,end_year)
fig_avg = annual_avg_plot(avg_precip_df_se)
st.plotly_chart(fig_avg,use_container_width = True)
c1,c2,c3,c4,c5 = st.columns(5)
with c3:
st.download_button("Download Data",data = convert_df(avg_precip_df_se),
file_name='Annual_avg_precipitation.csv',
mime='text/csv',)
elif data_type == 'Annual Max, Min, & Average Precipitation':
col1,col2 = st.columns(2)
with col1:
start_year,end_year = year_selection_ui(17,18)
with col2:
latitude_input,longitude_input = lat_long_ui(11,12)
latitude_input,longitude_input= float(latitude_input),float(longitude_input)
nearest_lat_long = search_func(latitude_input,longitude_input,lat_long_precipitation_list,precipitation)
option = lat_long_type(nearest_lat_long)
lat = float(option.split(',')[0])
long = float(option.split(',')[1])
m = map_creation(lat,long,0,0)
last_click = m['last_clicked']
with col1:
st.write("**Nearest latitude and longitude from the entered latitude longitude is :**",option)
with col2:
if last_click is not None:
clicked_lat = last_click['lat']
clicked_long = last_click['lng']
st.markdown("**Last Clicked Latitude Longitude point is:**")
st.write("{:0.2f},{:0.2f}".format(clicked_lat,clicked_long))
nn = search_func(clicked_lat,clicked_long,lat_long_precipitation_list,precipitation)
nn = lat_long_type(nn)
st.write("**Nearest Latitude and Longitude is:**",nn)
st.markdown(" ")
else:
st.markdown("**Click on the map to fetch the Latitude and Longitude**")
if last_click is not None:
clicked_lat = last_click['lat']
clicked_long = last_click['lng']
map_creation(lat,long,clicked_lat,clicked_long)
col11,col22,col33 = st.columns(3)
with col11:
annual_max_data = max_precip(precipitation_temp,option,start_year,end_year)
fig_max_2 = annual_max_precip_plot(annual_max_data)
st.plotly_chart(fig_max_2,use_container_width=True)
st.download_button("Download Data",data = convert_df(annual_max_data),
file_name='Annual_max_precipitation_data.csv',
mime='text/csv',)
with col22:
annual_min_data = min_precip(precipitation_temp,option,start_year,end_year)
fig_min_2 = annual_min_precip_plot(annual_min_data)
st.plotly_chart(fig_min_2,use_container_width = True)
st.download_button("Download Data",data = convert_df(annual_min_data),
file_name='Annual_min_precipitation_data.csv',
mime='text/csv',)
with col33:
annual_avg_data = avg_precip(precipitation_temp,option,start_year,end_year)
fig_avg_2 = annual_avg_plot(annual_avg_data)
st.plotly_chart(fig_avg_2, use_container_width = True)
st.download_button("Download Data",data = convert_df(annual_avg_data),
file_name='Annual_avg_precipitation_data.csv',
mime='text/csv',)
if __name__ == 'main':
run()