Zeel commited on
Commit
73b9278
·
1 Parent(s): 80ddf1a

first commit

Browse files
Files changed (2) hide show
  1. app.py +50 -0
  2. requirements.txt +2 -0
app.py ADDED
@@ -0,0 +1,50 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import json
2
+ import streamlit as st
3
+ import pandas as pd
4
+ import geopandas as gpd
5
+ import leafmap.foliumap as leafmap
6
+
7
+ # wide streamlit display
8
+ st.set_page_config(layout="wide")
9
+
10
+ query_params = st.experimental_get_query_params()
11
+ file_url = query_params.get("file_url", [None])[0]
12
+
13
+ if file_url:
14
+ input_gdf = gpd.read_file(file_url)
15
+ input_gdf = input_gdf.to_crs(epsg=7761) # Gujarat zone
16
+
17
+ def format_fn(x):
18
+ return input_gdf.drop(columns=["geometry"]).loc[x].to_dict()
19
+
20
+ input_geometry_idx = st.selectbox("Select the geometry", input_gdf.index, format_func=format_fn)
21
+ geometry_gdf = input_gdf[input_gdf.index == input_geometry_idx]
22
+
23
+ m = leafmap.Map()
24
+ m.add_wms_layer(
25
+ "https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/56450/{z}/{y}/{x}"
26
+ )
27
+ m.add_gdf(
28
+ geometry_gdf,
29
+ layer_name="Geometry",
30
+ zoom_to_layer=True,
31
+ style_function=lambda x: {"color": "red", "fillOpacity": 0.0},
32
+ )
33
+ m.to_streamlit()
34
+
35
+ # Metrics
36
+ stats_df = pd.DataFrame()
37
+ stats_df.loc["Points"] = json.loads(geometry_gdf.to_crs(4326).to_json())["features"][0]["geometry"]["coordinates"]
38
+ stats_df.loc["Area (ha)"] = geometry_gdf.geometry.area.item() / 10000
39
+ stats_df.loc["Perimeter (m)"] = geometry_gdf.geometry.length.item()
40
+
41
+ st.write("<h3><div style='text-align: center;'>Geometry Metrics</div></h3>", unsafe_allow_html=True)
42
+ st.markdown(
43
+ f"""| Metric | Value |
44
+ | --- | --- |
45
+ | Area (m^2) | {stats_df['Area (m^2)'].item():.2f} m^2 = {stats_df['Area (m^2)'].item()/10000:.2f} ha |
46
+ | Perimeter (m) | {stats_df['Perimeter (m)'].item():.2f} m |
47
+ """
48
+ )
49
+ else:
50
+ st.warning("Please provide a KML or GeoJSON URL as a query parameter, e.g., `?file_url=<your_file_url>`")
requirements.txt ADDED
@@ -0,0 +1,2 @@
 
 
 
1
+ leafmap
2
+ geopandas