Проверка того, лежит ли список точек внутри мультиполигона (Python) - PullRequest
0 голосов
/ 22 октября 2018

Я пытаюсь проверить, находится ли список точек (которые хранятся в 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 слоями?)

...