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")