import rtree.index as rtreeindex
def set_rtree(shpdata_layer, shpdata_num):
idx = rtreeindex.Index() #index.Index()
id = 0
try:
for fea in shpdata_layer:
geom = fea.GetGeometryRef()
if (geom is not None):
(minX, maxX, minY, maxY) = geom.GetEnvelope()
geo_polygon = geom.GetGeometryRef(0)
#left, bottom, right, top = (extent[0], extent[2], extent[1], extent[3])
left, bottom, right, top = (minX,minY,maxX,maxY)#此处需要测试一下数值
no_of_fea = geo_polygon.GetPointCount()
polygon_points = []
for point_i in range(0, no_of_fea):
x, y, z = geo_polygon.GetPoint(point_i)
# print(x,y,z)
p = [x, y, point_i]
polygon_points.append§
idx.insert(id, (left,bottom,right,top), obj= polygon_points)
id += 1
except:
s = sys.exc_info()
print(s[1], s[2].tb_lineno)
print(“rtree has established”)
feas = idx.intersection((left, bottom, right, top), objects=True)
print("feas")
return feas,idx
参考了这个方法,还是不行
https://blog.csdn.net/qiao1025566574/article/details/81037908
折腾了pycharm的环境变量,把postgis的bin加到环境变量里面,重启了pycharm就好了。。。