Thread Hash mit Arrays zu langsam - wie sortieren und suchen? (38 answers)
Opened by Gast at 2009-01-28 14:02

stelzbock
 2009-01-31 18:47
#118546 #118546
User since
2009-01-29
17 Artikel
BenutzerIn
[default_avatar]
So, liebe Leute :)

Et hat jefunkt!

Die Dauer hat sich jetzt von 14Tagen auf sage und schreibe 20min verkürzt!

Ich habe folgendes gemacht, falls es jemand interessiert:

1.) Kanten aus Karte 1 in ein Hash eingelesen.
2.) Kanten aus Karte 2 in ein R-Tree, wobei ich nur den Startpunkt verwendet habe. Das Standard Perl-Modul Tree::R. Da es keine Punkte aufnimmt, sondern nur Rechtecke, habe ich einfach x1=x2=x und y1=y2=y gesetzt, als faktisch einen Rechteck mit der Fläche Null. Das nacheinander einfügen dauert etwa 8 min. Die ID sowie Start + Endpunkt habe ich dann als Objekt daten im Tree gespeichert.
3.) Dann bin ich alle Edges aus Karte 1 durchgegangen.
4.) Für jedes Edge habe ich wieder nur den Startpunkt genommen. Dann hab ich ein Rechteck von etwa 500 Metern um den Startpunkt aufgespannt, und dann mit Hilfe von query_completely_within_rect() alle Edges in ein Array eingelesen, deren Startpunkte innerhalb des Rechtecks lagen. Also Quasi eine Umkreissuche.
5.)Die Resultierenden Edges aus dieser Suche (im Durchschnitt etwa 300) habe ich dann mittels des 4-dim eukl. Abstands überprüft und den besten als Match gespeichert.

3.),4.),5.) habe dann den Rest der Zeit gedauert.

Am Ende gab es für ca. 9000 Edges kein Mapping, was aber ok, da sich das Kartenmaterial nicht 100% überdeckt und an den Rändern Bereich auftreten können, die es in der einen Karte nicht gibt.



Also,nochmal vielen vielen Dank für all die hilfreichen Beiträge!

Gruß Jan

View full thread Hash mit Arrays zu langsam - wie sortieren und suchen?