Spaces:
Sleeping
Sleeping
File size: 1,485 Bytes
84e78bb |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
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") |