GID_HuggingFace / modules /find_neighbors.py
giho905e's picture
Upload 30 files
84e78bb
raw
history blame
No virus
1.49 kB
import pandas as pd
import shapely
def get_neighbors(geometries):
"""
Find neighbors for all geometries.
Args:
geometries (str): list of Polygon coordinates
Returns:
pandas.core.series.Series: Pandas DataFrame Series (column) containing indexes of bordering polygons.
"""
if not all(isinstance(geom, (shapely.MultiPolygon, shapely.Polygon, str)) for geom in geometries) or not isinstance(geometries, (list, pd.Series)):
raise ValueError("geometries must be a list with shapely.MultiPolygons/shapely.Polygon or strings of MultiPolygons/Polygons")
out_col = []
if type(geometries[0]) in [shapely.MultiPolygon, shapely.Polygon]:
for r in range(geometries.shape[0]):
out_col.append([])
for i in range(geometries.shape[0]):
if not r == i:
if geometries[r].intersects(geometries[i]):
out_col[r].append(i)
return(out_col)
if type(geometries[0]) == str:
geometries = shapely.wkt.loads(geometries)
for r in range(geometries.shape[0]):
out_col.append([])
for i in range(geometries.shape[0]):
if not r == i:
if geometries[r].intersects(geometries[i]):
out_col[r].append(i)
return(out_col)
raise ValueError("geometries must be a list with shapely.MultiPolygons or strings of MultiPolygons or Polygons")