Spaces:
Runtime error
Runtime error
Download app.py from Esmaeilkiani/DashboardLLM: direct link, hf CLI and curl.
- Browser
- Download file 2.67 kB
-
https://huggingface.co/spaces/Esmaeilkiani/DashboardLLM/resolve/908fb0331cee6d2acf902ad0110948d6aa25d955/app.py
- Command line
-
hf download hf://spaces/Esmaeilkiani/DashboardLLM@908fb0331cee6d2acf902ad0110948d6aa25d955/app.py
-
curl -L -o app.py https://huggingface.co/spaces/Esmaeilkiani/DashboardLLM/resolve/908fb0331cee6d2acf902ad0110948d6aa25d955/app.py
2.67 kB
| import streamlit as st | |
| import pandas as pd | |
| import ee | |
| import geemap | |
| # Earth Engine authentication | |
| service_account = 'earth-engine-service-account@ee-esmaeilkiani1387.iam.gserviceaccount.com' | |
| credentials = ee.ServiceAccountCredentials(service_account, 'ee-esmaeilkiani1387-1b2c5e812a1d.json') | |
| ee.Initialize(credentials) | |
| # Load the CSV file | |
| def load_data(): | |
| return pd.read_csv('/home/user/Farm_Details_Export.csv') | |
| df = load_data() | |
| st.title('Farm Finder and Sentinel-2 Imagery Viewer') | |
| # Farm search functionality | |
| farm_name = st.text_input('Enter farm name:') | |
| if farm_name: | |
| farm = df[df['farm_name'].str.contains(farm_name, case=False)] | |
| if not farm.empty: | |
| st.write(farm) | |
| else: | |
| st.write('Farm not found') | |
| # Sentinel-2 index selection | |
| indices = {'NDVI': 'NDVI', 'EVI': 'EVI', 'NDWI': '(B3 - B8) / (B3 + B8)'} | |
| selected_index = st.selectbox('Select Sentinel-2 index:', list(indices.keys())) | |
| # Date range selection | |
| start_date = st.date_input('Start date') | |
| end_date = st.date_input('End date') | |
| if st.button('Show Map'): | |
| # Create a map centered on the mean coordinates of all farms | |
| center_lat = df['latitude'].mean() | |
| center_lon = df['longitude'].mean() | |
| m = geemap.Map(center=[center_lat, center_lon], zoom=10) | |
| # Add Sentinel-2 imagery with selected index | |
| s2_collection = (ee.ImageCollection('COPERNICUS/S2_SR') | |
| .filterDate(start_date, end_date) | |
| .filter(ee.Filter.lt('CLOUDY_PIXEL_PERCENTAGE', 20))) | |
| if selected_index == 'NDVI': | |
| vis_params = {'min': 0, 'max': 1, 'palette': ['red', 'yellow', 'green']} | |
| elif selected_index == 'EVI': | |
| vis_params = {'min': -1, 'max': 1, 'palette': ['blue', 'white', 'green']} | |
| else: # NDWI | |
| vis_params = {'min': -1, 'max': 1, 'palette': ['red', 'white', 'blue']} | |
| def add_index(image): | |
| index = image.expression(indices[selected_index], { | |
| 'B3': image.select('B3'), | |
| 'B4': image.select('B4'), | |
| 'B8': image.select('B8'), | |
| }).rename(selected_index) | |
| return image.addBands(index) | |
| s2_with_index = s2_collection.map(add_index) | |
| median_index = s2_with_index.select(selected_index).median() | |
| m.addLayer(median_index, vis_params, selected_index) | |
| # Add farm locations to the map | |
| for idx, row in df.iterrows(): | |
| info = f"Farm: {row['farm_name']}<br>Age: {row['age']}<br>Variety: {row['variety']}" | |
| m.add_marker(location=[row['latitude'], row['longitude']], popup=info) | |
| # Display the map | |
| m.to_streamlit(height=600) | |
| if __name__ == '__main__': | |
| st.write('App is running') | |