Sie können die folgenden mit min_distance
tun, zum Beispiel 120: Verwenden Sie Ihre Abfrage Punkt qp=(201,305)
und die minimalen und maximalen Punkte schaffen durch Subtraktion/Addition der Entfernung: min=(81, 185)
und max=(321,425)
. Jetzt erstellen Sie die Morton Codes für diese beiden Punkte.
Alle Punkte, die sich in einer Entfernung von 120 von (210,305) befinden, haben einen Mortoncode mcWithin120
mit mortonCode(min) <= mcWithin120 <= mortonCode(max)
. Wenn Sie eine nach Morton-Code geordnete Liste von Punkten haben, sollte dies den Suchbereich ein wenig eingrenzen.
Beachten Sie, dass der Bereich falsch positive Ergebnisse enthält! Nicht alle Punkte mit Morton-Code zwischen min und max befinden sich in der angegebenen Entfernung 120, also musst du alle Punkte in der Reihe überprüfen, ob sie "tatsächlich" innerhalb der richtigen Entfernung sind.
Wenn Sie sich für räumliche Suche interessieren, werfen Sie einen Blick auf die Es ist ein räumlicher Index, ähnlich wie Quadtree, der Morton Reihenfolge verwendet, um Baumstruktur und Suchvorgänge zu optimieren.
Ja, Sie haben Recht, ich werde upvote, weil ich nicht über den PH-Baum wusste, und ich denke, das wird die bessere Lösung sein! – greedsin
Schauen Sie sich auch diese [Antwort] (http://stackoverflow.com/questions/4260002/benefits-of-nearest-neigbor-search-with-morton-order?rq=1), vor allem die Kommentare, die Referenz die PDFs auf kNN suchen mit morton order. – TilmannZ