def _handle_multi(df):
"""
Helper function for _clean_geometry(). Handles Multipolygons
Parameters
----------
df: pandas.DataFrame
Returns
-------
"""
assert isinstance(df, pandas.DataFrame)
geometry_col = 'geometry'
df_row = df.copy()
assert isinstance(df_row, pandas.DataFrame)
row_list = []
x = df_row[geometry_col].iloc[0]
if isinstance(x, MultiPolygon):
for y in x.geoms:
df_row_temp = df_row
assert isinstance(df_row_temp, pandas.DataFrame)
df_row_temp[geometry_col] = y
row_list.append(df_row_temp)
df_multi_row = pandas.concat(row_list, ignore_index=True)
assert isinstance(df_multi_row, pandas.DataFrame)
df_to_return = df_multi_row
assert isinstance(df_to_return, pandas.DataFrame)
assert all(isinstance(geometry, shapely.geometry.Polygon)
for geometry in df_to_return[geometry_col].values)
return df_to_return
elif isinstance(x, shapely.geometry.polygon.Polygon):
return df_row
else:
return pandas.DataFrame()
评论列表
文章目录