Shapely: docs: Разъяснение документации STRTree

Созданный на 30 июл. 2018  ·  4Комментарии  ·  Источник: Toblerity/Shapely

Я хотел бы (немного) улучшить документацию для STRTree.

http://shapely.readthedocs.io/en/stable/manual.html#str -packed-r-tree говорит

Shapely предоставляет интерфейс к R-дереву GEOS только для запросов, упакованному с использованием алгоритма Sort-Tile-Recursive. Передайте список геометрических объектов конструктору STRtree, чтобы создать R-дерево, к которому можно запросить другой геометрический объект.

Затем в примере показаны два запроса, которые возвращают объекты Geometry.

Я надеялся, что смогу использовать STRTree точно так же, как модуль rtree: передавать индексы, чтобы иметь возможность сопоставлять геометрию с объектами (Fiona), но, похоже, это не так. STRTree просто берет список объектов Geometry и по запросу возвращает пересекающиеся объекты Geometry, о которых он знает. Нет ни порядка, ни индексов. Это правильно?

Если это так, я бы просто добавил одно предложение о том, что возвращает метод запроса. Для описаний классов (например, Point) атрибуты представлены в прозе, но если это должно получить новую запись .. method:: , просто скажите об этом. :)

documentation

Самый полезный комментарий

https://github.com/Toblerity/Shapely/pull/623 благодаря QGIS @nathanw

Все 4 Комментарий

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

Графическое представление примерных геометрий и геометрии запросов было бы здорово, чтобы показать, как он возвращает геометрии, чьи экстенты пересекаются.

Не уверен, стоит ли предлагать использовать глубокую копию, чтобы избежать мутации исходных объектов.

https://github.com/Toblerity/Shapely/pull/623 благодаря QGIS @nathanw

Была ли эта страница полезной?
0 / 5 - 0 рейтинги

Смежные вопросы

mromanie picture mromanie  ·  3Комментарии

jrobichaud picture jrobichaud  ·  3Комментарии

LostFan123 picture LostFan123  ·  3Комментарии

sgillies picture sgillies  ·  5Комментарии

FuriousRococo picture FuriousRococo  ·  5Комментарии