Как использовать Shapefile в Pysal

Я хочу получить результат пересечения точек в данном многоугольнике, но получаю ошибку.

Мой код:

from pysal.cg.standalone import get_polygon_point_intersect
poly=pysal.open('Busroute_buffer.shp')
point=pysal.open('pmpml_24.shp')

i=get_polygon_point_intersect(poly,point)

Но я получаю сообщение об ошибке:

Объект 'PurePyShpWrapper' не имеет атрибута 'bounding_box'

1 ответ

Решение

pysal.open возвращает объект "файл" фигуры, а не фигуры.

Чтобы получить формы, вам нужно перебрать файл или вызвать метод read файла, который возвращает список фигур. Это вернет список, даже если в вашем файле есть только одна фигура. get_polygon_point_intersect занимает ровно 1 многоугольник и 1 очко, поэтому вам нужно будет вызывать его для каждой точки / многоугольника, которые вы хотите сравнить.

point_file = pysal.open('points.shp')
polygon_file = pysal.open('polygons.shp')
# .read with no arguments returns a list of all shapes in the file.
polygons = polygon_file.read()
for polygon in polygons:
    # for x in shapefile: iterates over each shape in the file.
    for point in point_file:
        if get_polygon_point_intersect(polygon, point):
            print point, 'intersects with', polygon

Есть и другие, возможно, более эффективные способы сделать это. Смотрите pysal.cg.locators для получения дополнительной информации.

* Приведенный выше код не проверен и предназначен только для примера.

Другие вопросы по тегам