我想(稍微)改进一下 STRTree 的文档。
http://shapely.readthedocs.io/en/stable/manual.html#str -packed-r-tree 说
Shapely 为使用 Sort-Tile-Recursive 算法打包的仅查询 GEOS R-tree 提供了一个接口。 将几何对象列表传递给 STRtree 构造函数以创建可以使用另一个几何对象查询的 R 树。
然后,该示例显示了两个返回 Geometry 对象的查询。
我希望我可以像 rtree 模块一样使用 STRTree:传递索引号以便能够将几何图形与(Fiona)特征相匹配,但情况似乎并非如此。 STRTree 只需获取 Geometry 对象的列表,然后在查询中返回它所知道的相交 Geometry 对象。 没有顺序或索引。 那是对的吗?
如果是这样,我只想添加一句关于查询方法返回的内容。 对于类描述(例如 Point),属性以散文形式呈现,但如果这应该得到一个新的.. method::
条目,就这么说吧。 :)
@kannes我们现在对存储的内容并不灵活,但我们确实存储了几何对象及其所有属性。 您可以在创建几何对象后为其添加属性,因为这些几何对象将其属性存储在__dict__
成员中( geom.myattr
被读取为geom.__dict__['myattr']
)。 我们不会很快改变 Shapely 的这种行为,所以下面的代码至少在假设的 Shapely 2.0 之前应该可以工作:
>>> from shapely.strtree import STRtree
>>> from shapely.geometry import Point
>>> pt = Point(0.0, 0.0)
>>> pt.name = 'foo'
>>> tree = STRtree([pt])
>>> tree.query(Point(1.0, 1.0).buffer(2.0))
[<shapely.geometry.point.Point object at 0x109254208>]
>>> results = tree.query(Point(1.0, 1.0).buffer(2.0))
>>> respt = results[0]
>>> respt
<shapely.geometry.point.Point object at 0x109254208>
>>> respt.name
'foo'
#615 中有一些相关的讨论。
谢谢,我会更新这个
完毕!
[编辑:删除搞砸的 git mess]
示例几何和查询几何的图形表示将很好地进一步显示它如何返回范围相交的几何。
不确定我是否应该建议使用 deepcopy 来避免改变原始对象。
https://github.com/Toblerity/Shapely/pull/623感谢 QGIS 的 @nathanw
最有用的评论
https://github.com/Toblerity/Shapely/pull/623感谢 QGIS 的 @nathanw