Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -93,6 +93,10 @@ def reduce_zonal_ndvi(image, ee_object):
|
|
93 |
)
|
94 |
return image.set(reduced)
|
95 |
|
|
|
|
|
|
|
|
|
96 |
# Get Zonal NDVI
|
97 |
def get_zonal_ndvi(collection, geom_ee_object):
|
98 |
reduced_collection = collection.map(lambda image: reduce_zonal_ndvi(image, ee_object=geom_ee_object))
|
@@ -102,6 +106,17 @@ def get_zonal_ndvi(collection, geom_ee_object):
|
|
102 |
df = pd.DataFrame({'NDVI': stats_list, 'Date': dates, 'Imagery': filenames})
|
103 |
return df
|
104 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
105 |
# put title in center
|
106 |
st.markdown("""
|
107 |
<style>
|
@@ -187,6 +202,26 @@ if uploaded_file is not None:
|
|
187 |
st.write("Time Series Plot")
|
188 |
st.line_chart(resultant_df[['AvgNDVI_Inside', 'Avg_NDVI_Buffer', 'Date']].set_index('Date'))
|
189 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
190 |
# Visualize map on ESRI basemap
|
191 |
st.write("Map Visualization")
|
192 |
|
|
|
93 |
)
|
94 |
return image.set(reduced)
|
95 |
|
96 |
+
def calculate_NDVI(image):
|
97 |
+
ndvi = image.normalizedDifference(['B8', 'B4']).rename('NDVI')
|
98 |
+
return image.addBands(ndvi)
|
99 |
+
|
100 |
# Get Zonal NDVI
|
101 |
def get_zonal_ndvi(collection, geom_ee_object):
|
102 |
reduced_collection = collection.map(lambda image: reduce_zonal_ndvi(image, ee_object=geom_ee_object))
|
|
|
106 |
df = pd.DataFrame({'NDVI': stats_list, 'Date': dates, 'Imagery': filenames})
|
107 |
return df
|
108 |
|
109 |
+
def get_zonal_ndviYoY(collection, geom_ee_object):
|
110 |
+
collection = collection.map(lambda image: calculate_NDVI)
|
111 |
+
max_ndvi = collection.select('NDVI').max()
|
112 |
+
reduced_max_ndvi = image.reduceRegion(
|
113 |
+
reducer=ee.Reducer.mean(),
|
114 |
+
geometry=ee_object.geometry(),
|
115 |
+
scale=10,
|
116 |
+
maxPixels=1e12)
|
117 |
+
return reduced_max_ndvi
|
118 |
+
|
119 |
+
|
120 |
# put title in center
|
121 |
st.markdown("""
|
122 |
<style>
|
|
|
202 |
st.write("Time Series Plot")
|
203 |
st.line_chart(resultant_df[['AvgNDVI_Inside', 'Avg_NDVI_Buffer', 'Date']].set_index('Date'))
|
204 |
|
205 |
+
####### YoY Profile ########
|
206 |
+
start_year = 2017
|
207 |
+
end_year = 2023
|
208 |
+
|
209 |
+
max_ndvi_geoms = []
|
210 |
+
max_ndvi_buffered_geoms = []
|
211 |
+
for year in range(start_year, end_year+1):
|
212 |
+
start_ddmm = start_date.strftime("%d%m") + str(year)
|
213 |
+
end_ddmm = end_date.strftime("%d%m") + str(year)
|
214 |
+
|
215 |
+
# Filter data based on the date, bounds, cloud coverage and select NIR and Red Band
|
216 |
+
collection = ee.ImageCollection("COPERNICUS/S2_SR_HARMONIZED").filter(ee.Filter.lt('CLOUDY_PIXEL_PERCENTAGE', max_cloud_cover)).filter(ee.Filter.date(start_ddmm, end_ddmm)).select(['B4', 'B8'])
|
217 |
+
|
218 |
+
# Get Zonal NDVI based on collection and geometries (Original KML and Buffered KML)
|
219 |
+
max_ndvi_geoms.append(get_zonal_ndviYoY(collection.filterBounds(geom_ee_object), geom_ee_object))
|
220 |
+
max_ndvi_buffered_geoms.append(get_zonal_ndviYoY(collection.filterBounds(buffered_ee_object), buffered_ee_object))
|
221 |
+
|
222 |
+
st.write(max_ndvi_geoms)
|
223 |
+
st.write(max_ndvi_buffered_geoms)
|
224 |
+
|
225 |
# Visualize map on ESRI basemap
|
226 |
st.write("Map Visualization")
|
227 |
|