Я пытаюсь проверить, находится ли список точек (которые хранятся в df.Coords
) внутри моего шейп-файла (мультиполигон).Я написал код ниже, однако я понял, что python читает только в координатах моего последнего слоя моего мультиполигона.
import shapefile
from shapely.geometry import shape, Point
# read your shapefile
r = shapefile.Reader("C:\\filename.shp")
# get the shapes
shapes = r.shapes()
# build a shapely polygon from your shape
hold = []
for k in range(len(shapes)-1):
polygon = shape(shapes[k])
hold.append(polygon)
for x in df.Coords:
if polygon.contains(Point(x)):
hold.append(x)
Я попытался найти какой-то код в stackoverflow (ссылка: https://gis.stackexchange.com/questions/208546/check-if-a-point-falls-within-a-multipolygon-with-python/208574) и отредактировал его (как показано ниже). Однако я думаю, что отредактировал его неправильно.
from shapely.geometry import Polygon, Point, MultiPolygon
import shapefile
polygon = shapefile.Reader("C:\\filename.shp")
polygon = polygon.shapes()
shpfilePoints = [ shape.points for shape in polygon ]
#print(shpfilePoints)
polygons = shpfilePoints
hold = []
for polygon in polygons:
poly = Polygon(polygon)
hold.append(poly)
for x in hold:
for y in df.Coords:
if x.contains(Point(y)):
hold.append(y)
print('hold',hold)
Как я могу проверить, лежит ли мой список точек (df.Coords
) внутри моего мультиполигона (с 26 слоями?)