Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -209,6 +209,10 @@ if uploaded_file is not None:
|
|
209 |
start_year = 2019
|
210 |
end_year = 2023
|
211 |
|
|
|
|
|
|
|
|
|
212 |
max_ndvi_geoms = []
|
213 |
max_ndvi_buffered_geoms = []
|
214 |
for year in range(start_year, end_year+1):
|
@@ -220,9 +224,28 @@ if uploaded_file is not None:
|
|
220 |
# Filter data based on the date, bounds, cloud coverage and select NIR and Red Band
|
221 |
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'])
|
222 |
|
223 |
-
# Get Zonal NDVI based on collection and geometries (Original KML and Buffered KML)
|
224 |
max_ndvi_geoms.append(get_zonal_ndviYoY(collection.filterBounds(geom_ee_object), geom_ee_object))
|
225 |
max_ndvi_buffered_geoms.append(get_zonal_ndviYoY(collection.filterBounds(buffered_ee_object), buffered_ee_object))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
226 |
|
227 |
# Create a DataFrame for YoY profile
|
228 |
yoy_df = pd.DataFrame({'Year': [str(i) for i in range(start_year, end_year+1)], 'NDVI_Inside': max_ndvi_geoms, 'NDVI_Buffer': max_ndvi_buffered_geoms})
|
|
|
209 |
start_year = 2019
|
210 |
end_year = 2023
|
211 |
|
212 |
+
# Create an empty resultant dataframe
|
213 |
+
columns = ['Date', 'Imagery', 'AvgNDVI_Inside', 'Avg_NDVI_Buffer', 'Ratio']
|
214 |
+
combined_df = pd.DataFrame(columns=columns)
|
215 |
+
|
216 |
max_ndvi_geoms = []
|
217 |
max_ndvi_buffered_geoms = []
|
218 |
for year in range(start_year, end_year+1):
|
|
|
224 |
# Filter data based on the date, bounds, cloud coverage and select NIR and Red Band
|
225 |
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'])
|
226 |
|
227 |
+
# Get Zonal Max composite NDVI based on collection and geometries (Original KML and Buffered KML)
|
228 |
max_ndvi_geoms.append(get_zonal_ndviYoY(collection.filterBounds(geom_ee_object), geom_ee_object))
|
229 |
max_ndvi_buffered_geoms.append(get_zonal_ndviYoY(collection.filterBounds(buffered_ee_object), buffered_ee_object))
|
230 |
+
|
231 |
+
# Get Zonal NDVI
|
232 |
+
df_geom = get_zonal_ndvi(collection.filterBounds(geom_ee_object), geom_ee_object)
|
233 |
+
df_buffered_geom = get_zonal_ndvi(collection.filterBounds(buffered_ee_object), buffered_ee_object)
|
234 |
+
|
235 |
+
# Merge both Zonalstats and create resultant dataframe
|
236 |
+
resultant_df = pd.merge(df_geom, df_buffered_geom, on='Date', how='inner')
|
237 |
+
resultant_df = resultant_df.rename(columns={'NDVI_x': 'AvgNDVI_Inside', 'NDVI_y': 'Avg_NDVI_Buffer', 'Imagery_x': 'Imagery'})
|
238 |
+
resultant_df['Ratio'] = resultant_df['AvgNDVI_Inside'] / resultant_df['Avg_NDVI_Buffer']
|
239 |
+
resultant_df.drop(columns=['Imagery_y'], inplace=True)
|
240 |
+
|
241 |
+
# Re-order the columns of the resultant dataframe
|
242 |
+
resultant_df = resultant_df[['Date', 'Imagery', 'AvgNDVI_Inside', 'Avg_NDVI_Buffer', 'Ratio']]
|
243 |
+
|
244 |
+
# Append to empty dataframe
|
245 |
+
combined_df = pd.concat([combined_df, resultant_df], ignore_index=True)
|
246 |
+
|
247 |
+
# Write the final table
|
248 |
+
st.write(combined_df)
|
249 |
|
250 |
# Create a DataFrame for YoY profile
|
251 |
yoy_df = pd.DataFrame({'Year': [str(i) for i in range(start_year, end_year+1)], 'NDVI_Inside': max_ndvi_geoms, 'NDVI_Buffer': max_ndvi_buffered_geoms})
|