如何在Pysal中使用Shapefile

时间:2015-06-05 04:49:49

标签: 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 个答案:

答案 0 :(得分:1)

pysal.open返回形状“文件”对象,而不是形状。

要获取形状,您需要遍历文件,或调用文件的read方法,该方法返回形状列表。即使文件中只有1个形状,也会返回一个列表。 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

*上述代码未经测试,仅供参考。