Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -68,18 +68,18 @@ def load_farm_data():
|
|
68 |
return None
|
69 |
|
70 |
@st.cache_data
|
71 |
-
def get_safe_index_value(
|
72 |
"""محاسبه ایمن شاخصهای گیاهی"""
|
73 |
-
if
|
74 |
return None
|
75 |
try:
|
76 |
if index_type == "MSAVI":
|
77 |
-
index_image =
|
78 |
"(2 * NIR + 1 - sqrt((2 * NIR + 1) ** 2 - 8 * (NIR - RED))) / 2",
|
79 |
-
{"NIR":
|
80 |
).rename("MSAVI")
|
81 |
else:
|
82 |
-
index_image =
|
83 |
|
84 |
mean_value = index_image.reduceRegion(
|
85 |
reducer=ee.Reducer.mean(),
|
@@ -89,7 +89,7 @@ def get_safe_index_value(image, index_type, band_selection, farm_geometry):
|
|
89 |
|
90 |
return mean_value if mean_value is not None else 0
|
91 |
except Exception as e:
|
92 |
-
st.error(f"خطا در محاسبه شاخص {index_type}: {str(e)}")
|
93 |
return 0
|
94 |
|
95 |
def calculate_lai(ndvi):
|
@@ -284,7 +284,7 @@ def main():
|
|
284 |
if s2_collection.size().getInfo() > 0:
|
285 |
s2 = s2_collection.first()
|
286 |
for index in band_selection.keys():
|
287 |
-
value = get_safe_index_value(s2, index, band_selection, farm_geometry)
|
288 |
index_values[index].append(value)
|
289 |
else:
|
290 |
for index in band_selection.keys():
|
|
|
68 |
return None
|
69 |
|
70 |
@st.cache_data
|
71 |
+
def get_safe_index_value(_image, index_type, band_selection, farm_geometry, image_date):
|
72 |
"""محاسبه ایمن شاخصهای گیاهی"""
|
73 |
+
if _image is None:
|
74 |
return None
|
75 |
try:
|
76 |
if index_type == "MSAVI":
|
77 |
+
index_image = _image.expression(
|
78 |
"(2 * NIR + 1 - sqrt((2 * NIR + 1) ** 2 - 8 * (NIR - RED))) / 2",
|
79 |
+
{"NIR": _image.select("B8"), "RED": _image.select("B4")}
|
80 |
).rename("MSAVI")
|
81 |
else:
|
82 |
+
index_image = _image.normalizedDifference(band_selection[index_type]).rename(index_type)
|
83 |
|
84 |
mean_value = index_image.reduceRegion(
|
85 |
reducer=ee.Reducer.mean(),
|
|
|
89 |
|
90 |
return mean_value if mean_value is not None else 0
|
91 |
except Exception as e:
|
92 |
+
st.error(f"خطا در محاسبه شاخص {index_type} برای تاریخ {image_date}: {str(e)}")
|
93 |
return 0
|
94 |
|
95 |
def calculate_lai(ndvi):
|
|
|
284 |
if s2_collection.size().getInfo() > 0:
|
285 |
s2 = s2_collection.first()
|
286 |
for index in band_selection.keys():
|
287 |
+
value = get_safe_index_value(s2, index, band_selection, farm_geometry, date_str)
|
288 |
index_values[index].append(value)
|
289 |
else:
|
290 |
for index in band_selection.keys():
|