?
ansatz_ schrieb:
Im Moment habe ich es tatsächlich so, dadurch stockt das Programm eine Weile. Es ist ein Raster von 18000x9000. Daher wollte ich es optimieren
Du behandelst deine Datenbank so, als hätte eine Datenbank-Abfrage O(1)-Operationen. Davon kannst du aber nicht ausgehen. Wenn wir mal davon ausgehen, dass eine Datenbank-Abfrage einen Aufwand von O(n) hat (Je nach dem, wie sie geschrieben ist, kann es auch schneller oder langsamer gehen), dann kriegst du das mit deinem Ansatz nicht schneller.
ansatz_ schrieb:
Die Daten haben kaum Lücken, so dass Quad Trees wohl nicht viel bringen werden.
Das lässt sich aber Wunderbar ausnutzen. Wenn du weist, das der Abstand zu einem Punkt in der Datenbank maximal 10 Pixel beträgt, kannst du deine Datenbank vorbereiten.
Teile dein Bild in 10x10 Pixel große Blöcke auf. Und trage in der Datenbank die Zugehörigkeit der Pixel zu den Blöcken ein. Wenn auf einen Pixel geklickt wird, nimmst du den 10x10 Block, der zu diesem Pixel gehört und alle benachbarten und holst ihn dir aus der Datenbank. Und nur noch den Pixel, die in den Blöcken enthalten sind, berechnest du den Abstand.
Falls du das mit 10 Pixeln nicht genau weißt, kannst du auch mehrere Rasterstufen verwenden.