To upload files, please first save the app
import streamlit as st
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import datetime
import plotly.express as px
pip install plotly
# Ustawienia strony
st.set_page_config(page_title="Monitoring Hydrologiczny Mazury", layout="wide")
# Nagłówek
st.title("📊 Monitoring zmian hydrologicznych na Mazurach")
st.subheader("Analiza danych satelitarnych i hydrologicznych przy użyciu AI")
st.markdown("---")
# Panel boczny z filtrami
st.sidebar.header("🔎 Filtry danych")
start_date = st.sidebar.date_input("Data początkowa", datetime.date(2015, 1, 1))
end_date = st.sidebar.date_input("Data końcowa", datetime.date(2025, 1, 1))
lake = st.sidebar.selectbox("Wybierz jezioro", ["Śniardwy", "Mamry", "Niegocin", "Tałty", "Bełdany"])
weather_filter = st.sidebar.selectbox("Wybierz warunki pogodowe", ["Wszystkie", "Bezchmurne dni", "Susza", "Opady"])
analysis_type = st.sidebar.radio("Typ analizy", ["Zmiana powierzchni", "Prognoza zmian", "Symulacja scenariusza"])
st.sidebar.markdown("---")
st.sidebar.caption("Projekt edukacyjny – Mazury Hydrology AI")
# Symulowane dane
np.random.seed(42)
dates = pd.date_range(start=start_date, end=end_date, freq='M')
water_levels = np.random.normal(loc=125, scale=2, size=len(dates)) # symulowany poziom wody
# Główna sekcja
st.header(f"🌊 Analiza jeziora {lake}")
# Wykres poziomu wody
fig1 = px.line(
x=dates,
y=water_levels,
labels={'x': 'Data', 'y': 'Poziom wody (m)'},
title=f"Trend poziomu wody w jeziorze {lake}"
)
st.plotly_chart(fig1, use_container_width=True)
# Podsumowanie liczbowe
col1, col2, col3 = st.columns(3)
col1.metric("📈 Średni poziom wody", f"{np.mean(water_levels):.2f} m")
col2.metric("🌧️ Średnie opady", f"{np.random.randint(600, 800)} mm/rok")
col3.metric("🔥 Ryzyko suszy", np.random.choice(["Niskie", "Średnie", "Wysokie"]))
st.markdown("---")
# Sekcja symulacji
if analysis_type == "Symulacja scenariusza":
st.subheader("🔮 Symulacja wpływu zmian klimatycznych")
temp_increase = st.slider("Wzrost temperatury (°C)", 0.0, 5.0, 2.0, 0.5)
rain_decrease = st.slider("Spadek opadów (%)", 0, 50, 20, 5)
# Prosta symulacja wpływu na poziom wody
adjusted_levels = water_levels - (temp_increase * 0.5) - (rain_decrease * 0.05)
fig2 = px.line(
x=dates,
y=adjusted_levels,
labels={'x': 'Data', 'y': 'Przewidywany poziom wody (m)'},
title=f"Prognozowany wpływ klimatu na jezioro {lake}"
)
st.plotly_chart(fig2, use_container_width=True)
# Stopka
st.markdown("---")
st.caption("Wersja demonstracyjna – dane losowe. W prawdziwym projekcie załadujemy dane z Google Earth Engine i IMGW.")
Hi! I can help you with any questions about Streamlit and Python. What would you like to know?