Spaces:
Runtime error
Runtime error
File size: 3,606 Bytes
a269448 1ec7272 2bfae12 81fc5b0 a269448 2bfae12 a269448 1ec7272 a269448 2bfae12 8451644 2bfae12 8451644 83cb3e7 2bfae12 8451644 a588cf3 2bfae12 1ec7272 2bfae12 1158716 857cf4a 2bfae12 1ec7272 8451644 2bfae12 1ec7272 2bfae12 8451644 81fc5b0 2bfae12 8451644 81fc5b0 2bfae12 81fc5b0 8451644 81fc5b0 2bfae12 1ec7272 8451644 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 |
import streamlit as st
import ee
import geemap.foliumap as geemap
import pandas as pd
import datetime
# اعتبار سنجی و اتصال به Google Earth Engine
service_account = 'earth-engine-service-account@ee-esmaeilkiani1387.iam.gserviceaccount.com'
credentials = ee.ServiceAccountCredentials(service_account, 'ee-esmaeilkiani1387-1b2c5e812a1d.json')
ee.Initialize(credentials)
# خواندن فایل CSV مزارع
farms_data = pd.read_csv('Farm_Details_Export.csv')
# تعریف ناحیه مورد مطالعه
region = ee.Geometry.Polygon([[[48.681879, 31.417603], [48.721447, 31.413209], [48.724279, 31.420826],
[48.726768, 31.427418], [48.728228, 31.435694], [48.736382, 31.42837],
[48.739557, 31.435657], [48.742261, 31.441772], [48.752303, 31.452243],
[48.75226, 31.459784], [48.759127, 31.473657], [48.766809, 31.472413],
[48.773203, 31.491188], [48.77758, 31.534579], [48.785563, 31.540797],
[48.792601, 31.59696], [48.694668, 31.60756], [48.691921, 31.603466],
[48.697586, 31.534067], [48.69381, 31.507727], [48.685226, 31.468496],
[48.681879, 31.417603]]])
# تابع برای دریافت تصویر NDVI
def get_ndvi_image(start_date, end_date):
s2 = ee.ImageCollection('COPERNICUS/S2').filterBounds(region).filterDate(start_date, end_date)
ndvi = s2.map(lambda image: image.normalizedDifference(['B8', 'B4']).rename('NDVI')).median()
ndvi_params = {'min': -0.2, 'max': 0.8, 'palette': ['#0000FF', '#8A2BE2', '#FFFF00', '#00FF00', '#008000', '#006400']}
return ndvi, ndvi_params
# ساخت برنامه Streamlit
st.title("نقشه NDVI و NDMI برای مزارع شرکت دهخدا")
# انتخاب بازه زمانی
start_date = st.date_input("تاریخ شروع", datetime.date(2023, 1, 1))
end_date = st.date_input("تاریخ پایان", datetime.date(2023, 12, 31))
# انتخاب شاخص
index_option = st.selectbox("شاخص مورد نظر را انتخاب کنید:", ["NDVI", "NDMI"])
# انتخاب مزرعه از فایل CSV
farm_name = st.sidebar.selectbox("نام مزرعه را انتخاب کنید:", farms_data['farm_name'].unique())
# پیدا کردن مختصات مزرعه انتخاب شده
selected_farm = farms_data[farms_data['farm_name'] == farm_name]
latitude = selected_farm['latitude'].values[0]
longitude = selected_farm['longitude'].values[0]
# دکمه برای نمایش نقشه
if st.button("نمایش نقشه"):
# بسته به شاخص انتخاب شده، نقشه را بارگذاری کنید
if index_option == "NDVI":
index_image, vis_params = get_ndvi_image(start_date.isoformat(), end_date.isoformat())
else:
st.error("شاخص انتخابشده پشتیبانی نمیشود")
st.stop()
# ایجاد نقشه با Geemap
map_ = geemap.Map(center=[latitude, longitude], zoom=12)
map_.addLayer(index_image, vis_params, index_option)
# افزودن نوار رنگ به نقشه
map_.add_colorbar(vis_params, label=index_option)
# افزودن مزرعه به نقشه
map_.add_marker([latitude, longitude], popup=f"نام: {farm_name}")
# نمایش نقشه در Streamlit
map_.to_streamlit()
# ایجاد لینک دانلود تصویر
image_url = index_image.getThumbURL(vis_params)
st.markdown(f"[دانلود نقشه با کیفیت بالا]({image_url})")
|