Eu gostaria de (um pouco) melhorar a documentação do STRTree.
http://shapely.readthedocs.io/en/stable/manual.html#str -packed-r-tree diz
Shapely fornece uma interface para o GEOS R-tree somente de consulta empacotado usando o algoritmo Sort-Tile-Recursive. Passe uma lista de objetos geométricos para o construtor STRtree para criar uma árvore R que você pode consultar com outro objeto geométrico.
O exemplo mostra então duas consultas que retornam objetos Geometry.
Eu esperava poder usar STRTree assim como o módulo rtree: passando números de índice para poder combinar geometrias com recursos (Fiona), mas esse não parece ser o caso. STRTree simplesmente pega uma lista de objetos Geometry e, em uma consulta, retorna os objetos Geometry de interseção que ele conhece. Não há ordem ou índices. Isso é correto?
Nesse caso, eu apenas adicionaria uma frase sobre o que o método de consulta retorna. Para descrições de classes (por exemplo, Point) os atributos são apresentados em prosa, mas se isso deve receber uma nova entrada .. method::
, apenas diga. :)
@kannes , não somos flexíveis agora sobre o que é armazenado, mas armazenamos o objeto de geometria, bem como todos os seus atributos. Você pode adicionar atributos a um objeto de geometria depois que ele foi criado porque esses objetos de geometria armazenam seus atributos em um membro __dict__
( geom.myattr
é lido como geom.__dict__['myattr']
). Não vamos mudar esse comportamento do Shapely tão cedo, então o código a seguir deve funcionar pelo menos até um Shapely 2.0 hipotético:
>>> 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'
Há alguma discussão relacionada em #615.
Obrigado, vou atualizar isso
Feito!
[editar: removido bagunçado git mess]
Uma representação gráfica das geometrias de exemplo e da geometria de consulta seria ótima para mostrar ainda mais como ela retorna geometrias cujas extensões se cruzam.
Não tenho certeza se devo sugerir o uso de deepcopy para evitar a mutação dos objetos originais.
https://github.com/Toblerity/Shapely/pull/623 graças a @nathanw do QGIS
Comentários muito úteis
https://github.com/Toblerity/Shapely/pull/623 graças a @nathanw do QGIS