STRTreeのドキュメントを(少し)改善したいと思います。
http://shapely.readthedocs.io/en/stable/manual.html#str-packed-r-treeによると
Shapelyは、Sort-Tile-Recursiveアルゴリズムを使用してパックされたクエリのみのGEOSRツリーへのインターフェイスを提供します。 ジオメトリオブジェクトのリストをSTRtreeコンストラクタに渡して、別のジオメトリオブジェクトでクエリできるRツリーを作成します。
次に、この例は、Geometryオブジェクトを返す2つのクエリを示しています。
rtreeモジュールと同じようにSTRTreeを使用できることを望んでいました。ジオメトリを(Fiona)機能に一致させるためにインデックス番号を渡すのですが、そうではないようです。 STRTreeは、Geometryオブジェクトのリストを取得し、クエリで、認識している交差するGeometryオブジェクトを返します。 順序やインデックスはありません。 あれは正しいですか?
もしそうなら、私はクエリメソッドが返すものについて1つの文を追加するだけです。 クラスの説明(例:Point)の場合、属性は散文で表示されますが、これで新しい.. method::
エントリを取得する必要がある場合は、そのように言ってください。 :)
@kannes現時点では、何が格納されるかについては柔軟ではありませんが、ジオメトリオブジェクトとそのすべての属性を格納します。 これらのジオメトリオブジェクトは属性を__dict__
メンバーに格納するため、作成後に属性をジオメトリオブジェクトに追加できます( geom.myattr
はgeom.__dict__['myattr']
として読み取られます)。 Shapelyのこの動作をすぐに変更する予定はないため、次のコードは、少なくとも架空のShapely2.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の混乱を削除]
ジオメトリの例とクエリジオメトリのグラフィック表現は、エクステントが交差するジオメトリを返す方法をさらに示すのに役立ちます。
元のオブジェクトの変更を避けるために、ディープコピーの使用を提案する必要があるかどうかはわかりません。
https://github.com/Toblerity/Shapely/pull/623QGISの@nathanwに感謝します
最も参考になるコメント
https://github.com/Toblerity/Shapely/pull/623QGISの@nathanwに感謝します