Je voudrais (légèrement) améliorer la documentation pour le STRTree.
http://shapely.readthedocs.io/en/stable/manual.html#str -packed-r-tree dit
Shapely fournit une interface à l'arborescence GEOS R-requête uniquement emballée à l'aide de l'algorithme Sort-Tile-Recursive. Transmettez une liste d'objets géométriques au constructeur STRtree pour créer un arbre R que vous pouvez interroger avec un autre objet géométrique.
L'exemple montre ensuite deux requêtes qui renvoient des objets Geometry.
J'espérais pouvoir utiliser STRTree comme le module rtree : transmettre des numéros d'index pour pouvoir faire correspondre les géométries aux entités (Fiona), mais cela ne semble pas être le cas. STRTree prend simplement une liste d'objets Geometry et, sur une requête, renvoie les objets Geometry qui se croisent et dont il a connaissance. Il n'y a ni ordre ni indices. Est-ce exact?
Si tel est le cas, j'ajouterais simplement une phrase sur ce que la méthode de requête renvoie. Pour les descriptions de classe (par exemple Point), les attributs sont présentés en prose, mais si cela doit obtenir une nouvelle entrée .. method::
, dites-le simplement. :)
@kannes, nous ne sommes pas flexibles pour le moment sur ce qui est stocké, mais nous stockons l'objet géométrique ainsi que tous ses attributs. Vous pouvez ajouter des attributs à un objet géométrique après sa création car ces objets géométriques stockent leurs attributs dans un membre __dict__
( geom.myattr
est lu comme geom.__dict__['myattr']
). Nous n'allons pas changer ce comportement de Shapely de si tôt, donc le code suivant devrait fonctionner au moins jusqu'à un hypothétique 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'
Il y a une discussion connexe au #615.
Merci, je vais mettre à jour ça
Fait!
[edit : supprimé foutu git mess]
Une représentation graphique des géométries d'exemple et de la géométrie de requête serait formidable pour montrer davantage comment elle renvoie des géométries dont les étendues se croisent.
Je ne sais pas si je devrais suggérer d'utiliser deepcopy pour éviter de faire muter les objets d'origine.
https://github.com/Toblerity/Shapely/pull/623 grâce à @nathanw de QGIS
Commentaire le plus utile
https://github.com/Toblerity/Shapely/pull/623 grâce à @nathanw de QGIS