Shapely: docs: Klarstellung der STRTree-Dokumentation

Erstellt am 30. Juli 2018  ·  4Kommentare  ·  Quelle: Toblerity/Shapely

Ich möchte die Dokumentation für den STRTree (leicht) verbessern.

http://shapely.readthedocs.io/en/stable/manual.html#str -packed-r-tree sagt

Shapely bietet eine Schnittstelle zum Nur-Abfrage-GEOS-R-Baum, der mit dem Sort-Tile-Recursive-Algorithmus gepackt wurde. Übergeben Sie eine Liste von Geometrieobjekten an den STRtree-Konstruktor, um einen R-Baum zu erstellen, den Sie mit einem anderen geometrischen Objekt abfragen können.

Das Beispiel zeigt dann zwei Abfragen, die Geometry-Objekte zurückgeben.

Ich hatte gehofft, ich könnte STRTree genauso wie das rtree-Modul verwenden: Indexnummern übergeben, um Geometrien mit (Fiona-)Features abgleichen zu können, aber das scheint nicht der Fall zu sein. STRTree nimmt einfach eine Liste von Geometry-Objekten und gibt bei einer Abfrage die sich überschneidenden Geometry-Objekte zurück, die es kennt. Es gibt keine Reihenfolge oder Indizes. Ist das korrekt?

Wenn ja, würde ich nur einen Satz darüber hinzufügen, was die Abfragemethode zurückgibt. Bei Klassenbeschreibungen (z. B. Punkt) werden die Attribute in Prosa dargestellt, aber wenn diese einen neuen .. method:: -Eintrag erhalten sollen, sagen Sie es einfach. :)

documentation

Hilfreichster Kommentar

Alle 4 Kommentare

@kannes Wir sind im Moment nicht flexibel, was gespeichert wird, aber wir speichern das Geometrieobjekt sowie alle seine Attribute. Sie können einem Geometrieobjekt Attribute hinzufügen, nachdem es erstellt wurde, da diese Geometrieobjekte ihre Attribute in einem __dict__ -Member speichern ( geom.myattr wird als geom.__dict__['myattr'] gelesen). Wir werden dieses Verhalten von Shapely in absehbarer Zeit nicht ändern, daher sollte der folgende Code zumindest bis zu einem hypothetischen Shapely 2.0 funktionieren:

>>> 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'

Es gibt einige verwandte Diskussionen in #615.

Danke, ich werde das aktualisieren

Fertig!

[edit: vermasseltes Git-Chaos entfernt]

Eine grafische Darstellung der Beispielgeometrien und der Abfragegeometrie wäre großartig, um weiter zu zeigen, wie sie Geometrien zurückgibt, deren Ausdehnungen sich überschneiden.

Ich bin mir nicht sicher, ob ich vorschlagen sollte, Deepcopy zu verwenden, um eine Mutation der ursprünglichen Objekte zu vermeiden.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen