alex_bn_lee

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

【649】shapely strtree STRtree 构建 RTree

class strtree.STRtree(geometries)

class strtree.STRtree(geometries)

  • STRtree构造函数采用一系列几何对象, 几何对象的引用将保留并存储在R-tree中
  • strtree.query(geom)
    • 返回strtree中所有几何体的外延与geom的外延相交的几何体的列表
    • 后续使用所需的二进制谓语(intersects相交、crosses交叉、contains包含、overlaps重叠)对返回的子集进行搜索,可能需要根据特定的空间关系进一步筛选结果
1
2
3
4
5
6
7
8
9
10
11
>>> from shapely.strtree import STRtree
>>> points = [Point(i, i) for i in range(10)]
>>> tree = STRtree(points)
>>> query_geom = Point(2,2).buffer(0.99)
>>> [o.wkt for o in tree.query(query_geom)]
['POINT (2 2)']
>>> query_geom = Point(2, 2).buffer(1.0)
>>> [o.wkt for o in tree.query(query_geom)]
['POINT (1 1)', 'POINT (2 2)', 'POINT (3 3)']
>>> [o.wkt for o in tree.query(query_geom) if o.intersects(query_geom)]
['POINT (2 2)']
  •  获取查询结果的原始索引,需要创建一个辅助字典,使用几何ID作为键,因为形状几何本身不可哈希
1
2
3
>>> index_by_id = dict((id(pt), i) for i, pt in enumerate(points))
>>> [(index_by_id[id(pt)], pt.wkt) for pt in tree.query(Point(2,2).buffer(1.0))]
[(1, 'POINT (1 1)'), (2, 'POINT (2 2)'), (3, 'POINT (3 3)')]
  •  strtree.nearest(geom)

    返回在strtree中离geom最近的对象

1
2
3
>>> tree = STRtree([Point(i, i) for i in range(10)])
>>> tree.nearest(Point(2.2, 2.2)).wkt
'Point (2 2)'

 

  说明:计算的时候是通过外接矩形,因此可以召回的多边形会更多

 

posted on   McDelfino  阅读(2202)  评论(0编辑  收藏  举报

编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)
历史上的今天:
2016-08-17 【213】IDL函数汇总
2016-08-17 【212】HDF更新数据&HDF创建
2012-08-17 【072】◀▶ Android (IV) - 显示及后台
点击右上角即可分享
微信分享提示