Update app.py
Browse files
app.py
CHANGED
|
@@ -191,21 +191,21 @@ def mask_to_polygons(mask, transform, target_class_id):
|
|
| 191 |
return gdf
|
| 192 |
|
| 193 |
|
| 194 |
-
def
|
| 195 |
# Ensure both are in same CRS
|
| 196 |
mining_gdf = mining_gdf.to_crs(wiup_gdf.crs)
|
| 197 |
|
| 198 |
-
#
|
| 199 |
-
|
| 200 |
|
| 201 |
# Convert to metric CRS (e.g., UTM) to calculate area in m²
|
| 202 |
-
metric_crs = 'EPSG:
|
| 203 |
-
|
| 204 |
|
| 205 |
-
|
| 206 |
-
|
| 207 |
|
| 208 |
-
return
|
| 209 |
|
| 210 |
# Streamlit App Title
|
| 211 |
st.title("Satellite Mining Segmentation: SAR + Optic Image Inference")
|
|
@@ -378,9 +378,9 @@ if st.button("Run Inference"):
|
|
| 378 |
st.success(f"WIUP CRS: {wiup_gdf.crs}")
|
| 379 |
|
| 380 |
# Find area
|
| 381 |
-
non_mining_area, non_mining_area_gdf =
|
| 382 |
-
mining_area, mining_area_gdf =
|
| 383 |
-
beach_area, beach_area_gdf =
|
| 384 |
|
| 385 |
# Display in Streamlit
|
| 386 |
st.success(f" Non Mining Area : {non_mining_area/1e6:.2f} sq. km")
|
|
|
|
| 191 |
return gdf
|
| 192 |
|
| 193 |
|
| 194 |
+
def calculate_area(mining_gdf, wiup_gdf):
|
| 195 |
# Ensure both are in same CRS
|
| 196 |
mining_gdf = mining_gdf.to_crs(wiup_gdf.crs)
|
| 197 |
|
| 198 |
+
# Same = parts of mining polygons
|
| 199 |
+
area_gdf = gpd.overlay(mining_gdf, wiup_gdf, how='intersection')
|
| 200 |
|
| 201 |
# Convert to metric CRS (e.g., UTM) to calculate area in m²
|
| 202 |
+
metric_crs = 'EPSG:4326' # UTM zone for SE Asia (adjust based on location)
|
| 203 |
+
area_gdf = area_gdf.to_crs(metric_crs)
|
| 204 |
|
| 205 |
+
area_gdf['area_m2'] = area_gdf.geometry.area
|
| 206 |
+
total_area = area_gdf['area_m2'].sum()
|
| 207 |
|
| 208 |
+
return total_area, area_gdf
|
| 209 |
|
| 210 |
# Streamlit App Title
|
| 211 |
st.title("Satellite Mining Segmentation: SAR + Optic Image Inference")
|
|
|
|
| 378 |
st.success(f"WIUP CRS: {wiup_gdf.crs}")
|
| 379 |
|
| 380 |
# Find area
|
| 381 |
+
non_mining_area, non_mining_area_gdf = calculate_area(non_mining_gdf, wiup_gdf)
|
| 382 |
+
mining_area, mining_area_gdf = calculate_area(mining_gdf, wiup_gdf)
|
| 383 |
+
beach_area, beach_area_gdf = calculate_area(beach_gdf, wiup_gdf)
|
| 384 |
|
| 385 |
# Display in Streamlit
|
| 386 |
st.success(f" Non Mining Area : {non_mining_area/1e6:.2f} sq. km")
|