python3第三方库rtree使用

141 阅读1分钟

查找一根线附近的线,

from rtree import index 

#输入所有的线,建立空间索引树 
idx = index.Index()
lines = [] #假定已经有所有线的几何
for i, line in enumerate(lines):
    minx = 180.0 #经度最小值
    maxx = 0.0   #经度最大值
    miny = 90.0  #纬度最小值
    maxy = 0.0   #纬度最大值
    for point in line:
        minx = min(minx, point[0])
        maxx = max(maxx, point[0])
        miny = min(miny, point[1])
        maxy = max(maxy, point[1])
    idx.insert(i, (minx, miny, maxx, maxy), obj = lineinfo)

#查询数据
query_bbox = (minx, miny, maxx, maxy)
results = list(idx.intersection(query_bbox, objects=True)) #通过经度纬度包围盒来初筛
for result in results:
    id = result.id 
    bbox = result.bbox 
    obj = result.object #唯一标识 
    #进一步判断
    #do_operations()