OK nur für Punkt im Polygon:
Ich denke, das Problem beruht auf der "fraktalen Natur" von 2D-Objekten und der unsicheren und unausgewogenen Verteilung von räumlichen Informationen. Wenn Sie ein reguläres Gitter haben, ist es einfach, eine Position oder Beziehung einer Zelle zu berechnen. Aber eine Isolinie eines Geländemodells kann unkomplizierte Teile auf der einen Seite und mathematisch komplizierte Teile auf der anderen Seite haben (morphologisch aktive Teile wie Grate, Täler ...).
Die Indizierung versucht, zwei Dinge zu handhaben:
Eine schnelle Routine, die Ihnen einen Satz von Eimern gibt, in dem Sie Objekte sammeln, die Sie räumlich unterscheiden können (die Eimer!). Und BBoxen sind einfach zu berechnen und zu handhaben.
Eine Reihe von Beziehungen (Überlappung, Berührung), um das räumliche Material (die Objekte) zu unterscheiden oder in Beziehung zu setzen.
Leider geben BBoxes keinen Hinweis darauf, wie viele Punkte in jeder BBox enthalten sind, wie die Objekte geformt sind (Löcher, konvex, ...) und wie die Informationen lokal verteilt sind (90% der Punkte in der oberen linken Ecke der BBox) BBox). So finden Sie möglicherweise schnelle Operationsmitglieder auf Objektebene und verlieren viel Zeit im Beziehungsaufbau des Tests.
Um einen unregelmäßigeren Ansatz zu verwenden, gehört die IMO-Triangulation in Kombination mit und Quadtrees zu den Strategien, bei denen Sie den Teil des Bucketing und den Teil des Beziehungsaufbaus eines Index näher zusammenrücken können (Bucketing == Beziehungsaufbau).
Für das Beispiel Point-in-Polygon-Test können Sie einen unregelmäßigen Cache erstellen, indem Sie Folgendes verwenden:
- Eingeschränkte Delaunay-Triangulation Ihrer Polyhülle mit zusätzlichen Randmaschenpunkten für die Erkennung außerhalb der Hülle
- Setzen Sie dies in ein Quadtree-Indexierungsschema mit nicht mehr als N Dreiecken pro Kästchen (fraktale Eimer).
- Finden Sie die Dreiecksmenge, zu der der Punkt gehört - das Blatt im Quadtree
- finde das Dreieck, in dem der Punkt liegt (der Prüfling über max. N Dreiecken)
- und fragen Sie nach den Polygon-IDs der Eckpunkte des Dreiecks
- Wenn die ID eindeutig ist, gehört der Punkt zum Polygon, wenn nicht, liegt er außerhalb
Die Kosten für den Bau der Dose und der Quadtrees sind sehr hoch und schwer zu berechnen, und der Quadtree muss große und kleine Dreiecke ausgleichen (Dreiecke, die nicht in kleinere Subtree-Boxen passen).
Einige Tools und Links:
Dreieck - Beschränkungspolygon-Triangulation
Quadtrees - Mit Quellbeispielen
Stony Brook Repository - Datenstrukturen und diskrete Geometrie