Zeel commited on
Commit
1f25e7b
·
1 Parent(s): 07bdfbd

allow more than one geometries

Browse files
Files changed (1) hide show
  1. app.py +12 -18
app.py CHANGED
@@ -109,12 +109,9 @@ def preprocess_gdf(gdf):
109
  return gdf
110
 
111
 
112
- def check_valid_geometry(geometry_gdf):
113
  geometry = geometry_gdf.geometry.item()
114
- if geometry.type != "Polygon":
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) != 1:
376
- st.error(f"Expecting only one geometry per KML, but found {len(input_gdf)} geometries. Please fix the KML or provide another KML.")
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
- geometry_gdf = input_gdf[input_gdf.index == 0]
389
- check_valid_geometry(geometry_gdf)
 
 
 
 
 
 
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)