Spaces:
Runtime error
Runtime error
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() | |