Grundlegendes zu Speicherort- und Abfragealgorithmen?

9

Einer der wichtigsten Aspekte einer mit GIS ausgestatteten Datenbank besteht darin, dass der Benutzer schnell alle Punkte in einem beliebigen geografischen Gebiet abfragen kann, die einigen zusätzlichen Kriterien entsprechen. (ZB "Finde mir die nächsten 3 Restaurants zu diesem Punkt auf einer Karte.")

Kann mich jemand auf eine theoretische Diskussion der beteiligten Algorithmen hinweisen? Ich möchte lernen, wie sie funktionieren.

Letztendlich möchte ich die gleiche Fähigkeit auf verallgemeinerte Sätze numerischer Daten anwenden - eine große Punktwolke in einem beliebigen, n-dimensionalen, nichteuklidischen Raum. Zum Beispiel kann das Gesicht einer Person als ein Vektor von Zahlen charakterisiert werden: [Abstand zwischen den Augen, Abstand von Auge zu Mund, Breite des Gesichts, Länge des Gesichts usw.]. Ich möchte den Verkehr auf dem Bürgersteig filmen, die Merkmale des Gesichts jeder Person schätzen und später in der Lage sein, Fragen zu den Daten zu stellen, z. B. "Wenn das Gesicht dieser Person gegeben ist, finde ich die 100 ähnlichsten Gesichter".

Gibt es derzeit eine Software, mit der diese verallgemeinerten Bereiche durchsucht werden können?

John Berryman
quelle

Antworten:

4

Gute Darstellungen von Algorithmen in 2 und 3 Dimensionen finden sich im klassischen Text von Preparata & Shamos . In GIS verwendete Algorithmen sind eine Spezialität von Hanan Samet , der mehrere Bücher zu diesem Thema veröffentlicht hat.

Höherdimensionale Suchen werden normalerweise durch vorläufige Data Mining-, Clustering- oder Dimensionsreduzierungstechniken unterstützt oder beschleunigt. Hierbei handelt es sich eher um Datenanalysen und Statistiken, nicht um GIS, das sich naturgemäß auf die Suche in einer bis vier euklidischen Dimensionen konzentriert. Weitere Informationen finden Sie in unserem Schwesterforum stats.stackexchange.com nach möglichen Begriffen wie Clustering , Dimensionsreduzierung und mehrdimensionale Skalierung sowie nach weniger offensichtlichen Begriffen wie pca (Hauptkomponentenanalyse) und svm (Support Vector Machines). Dies ist auch ein guter Ort, um nach vorhandener Software zu fragen.

whuber
quelle
4

Die klassische (paläogeografische) Antwort besteht darin, die Daten in einem KD-Baum zu speichern (siehe http://en.wikipedia.org/wiki/Kd-tree ). Diese funktionieren, indem Sie die Daten nacheinander in zwei Partitionen in jeder Dimension halbieren, wenn Sie sich im Baum nach unten bewegen. Der Vorteil davon ist, dass Sie beim Auffinden des nächstgelegenen Artikels auch eine Liste der nächstgelegenen Artikel erstellen können, ohne zusätzliche Kosten zu zahlen. Die Beantwortung der drei nächstgelegenen Restaurants ist also so einfach wie die Suche nach dem nächstgelegenen.

Ich habe irgendwo gelesen, dass eHarmony KD-Bäume verwendet, um "kompatible Übereinstimmungen" in 14 Dimensionen zu finden.

Ian Turton
quelle
+1 Die kurze klare Beschreibung einer effizienten Suchmethode ist gut gelungen.
whuber
2

Ich habe gehört, dass Netezza einige innovative räumliche Parallelverarbeitungsalgorithmen implementiert hat . Das Whitepaper ist hier .

Die asymmetrische Massively Parallel Processing-Architektur von Netezza bietet die beste Kombination aus symmetrischem Multiprocessing (SMP) und Massively Parallel Processing (MPP) und ermöglicht die komplexe Abfrageverarbeitung sowohl räumlicher als auch nicht räumlicher Daten in Terascale ohne die in herkömmlichen Systemen erforderliche Komplexität, Optimierung und Aggregation.

Aktualisieren

Ich habe vergessen zu erwähnen, dass Netezza das Bayes-Theorem stark nutzt . Hier ist eine Sammlung von Videos hier .

Kirk Kuykendall
quelle