Spaces:
Sleeping
Sleeping
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") |