Shapely: docs: Esclarecimento da documentação do STRTree

Criado em 30 jul. 2018  ·  4Comentários  ·  Fonte: Toblerity/Shapely

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. :)

documentation

Comentários muito úteis

Todos 4 comentários

@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.

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

akadouri picture akadouri  ·  4Comentários

LostFan123 picture LostFan123  ·  3Comentários

LostFan123 picture LostFan123  ·  5Comentários

sgillies picture sgillies  ·  6Comentários

LostFan123 picture LostFan123  ·  3Comentários