allow more than one geometries
Browse files
app.py
CHANGED
@@ -109,12 +109,9 @@ def preprocess_gdf(gdf):
|
|
109 |
return gdf
|
110 |
|
111 |
|
112 |
-
def
|
113 |
geometry = geometry_gdf.geometry.item()
|
114 |
-
|
115 |
-
st.error(f"Selected geometry is of type '{geometry.type}'. Please provide a 'Polygon' geometry.")
|
116 |
-
st.stop()
|
117 |
-
|
118 |
|
119 |
def add_geometry_to_maps(map_list, opacity=0.0):
|
120 |
for m in map_list:
|
@@ -372,21 +369,18 @@ if isinstance(file_url, str):
|
|
372 |
buffer = st.number_input("Buffer (m)", value=50, min_value=0, step=1)
|
373 |
|
374 |
input_gdf = preprocess_gdf(gpd.read_file(file_url))
|
375 |
-
if len(input_gdf)
|
376 |
-
st.
|
377 |
-
st.stop()
|
378 |
-
# print(input_gdf.is_valid)
|
379 |
-
# print(gpd.read_file(file_url).is_valid)
|
380 |
-
# print(input_gdf.iloc[0].geometry.__geo_interface__)
|
381 |
-
|
382 |
-
# Input: Geometry
|
383 |
-
def format_fn(x):
|
384 |
-
return input_gdf.drop(columns=["geometry"]).loc[x].to_dict()
|
385 |
-
|
386 |
|
387 |
# input_geometry_idx = st.selectbox("Select the geometry", input_gdf.index, format_func=format_fn)
|
388 |
-
|
389 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
390 |
|
391 |
outer_geometry_gdf = geometry_gdf.copy()
|
392 |
outer_geometry_gdf["geometry"] = outer_geometry_gdf["geometry"].buffer(buffer)
|
|
|
109 |
return gdf
|
110 |
|
111 |
|
112 |
+
def is_valid_polygon(geometry_gdf):
|
113 |
geometry = geometry_gdf.geometry.item()
|
114 |
+
return (geometry.type == "Polygon") and (not geometry.is_empty)
|
|
|
|
|
|
|
115 |
|
116 |
def add_geometry_to_maps(map_list, opacity=0.0):
|
117 |
for m in map_list:
|
|
|
369 |
buffer = st.number_input("Buffer (m)", value=50, min_value=0, step=1)
|
370 |
|
371 |
input_gdf = preprocess_gdf(gpd.read_file(file_url))
|
372 |
+
if len(input_gdf) > 1:
|
373 |
+
st.warning(f"Only the first polygon in the KML will be processed; all other geometries will be ignored.")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
374 |
|
375 |
# input_geometry_idx = st.selectbox("Select the geometry", input_gdf.index, format_func=format_fn)
|
376 |
+
|
377 |
+
for i in range(len(input_gdf)):
|
378 |
+
geometry_gdf = input_gdf[input_gdf.index == i]
|
379 |
+
if is_valid_polygon(geometry_gdf):
|
380 |
+
break
|
381 |
+
else:
|
382 |
+
st.error(f"No polygon found inside KML. Please check the KML file.")
|
383 |
+
st.stop()
|
384 |
|
385 |
outer_geometry_gdf = geometry_gdf.copy()
|
386 |
outer_geometry_gdf["geometry"] = outer_geometry_gdf["geometry"].buffer(buffer)
|