Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Suche nach Orten über X/Y Koordinaten (https://www.delphipraxis.net/46613-suche-nach-orten-ueber-x-y-koordinaten.html)

alzaimar 28. Mai 2005 08:07

Datenbank: Ms-SQL • Version: 2000 • Zugriff über: ADO

Suche nach Orten über X/Y Koordinaten
 
Hallo

Ich würde gerne in meiner DB Orte und deren Position speichern. Anschliessend möchte ich alle Orte auflisten, die 'in der Nähe' eines Punktes P sind. 'In der Nähe' würde über den Abstand zwischen P und dem Ort definiert werden. Nun kann man das ja einfach sequentiell durchsuchen, aber das ist nicht schnell, vor allen Dingen, wenn man 1000000 Orte in der DB hat.

So was gibt es doch schon, oder? Aber wie macht man das? Wie wird die Position abgespeichert?
Danke für alle Ideen und Anregungen!

Sharky 28. Mai 2005 08:24

Re: Suche nach Orten über X/Y Koordinaten
 
Zitat:

Zitat von alzaimar
.... So was gibt es doch schon, oder? ...!

Hai alzaimar,

zumindest online gibt es das.
Dort steht auch irgendwo wie er die Berechnungen macht.

alzaimar 28. Mai 2005 08:30

Re: Suche nach Orten über X/Y Koordinaten
 
Hy Sharky

Danke für die Info, aber online bieten das so ziemlich alle Map-Dienste... Ich wollte eigentlich wissen, wie die Daten abgelegt werden müssen, um einen Index zu erstellen, der eine schnelle Umkreissuche ermöglicht. Ich meine, ich hätte irgendwann irgendwo mal was darüber gelesen. Aber, wie mein Nick schon sagt, nagt der Zahn des Vergessens an meinem Hirn :)

Schönes WE

Albi 28. Mai 2005 09:01

Re: Suche nach Orten über X/Y Koordinaten
 
Hallo,

die Berechnung des ganzes erfolgt die Längen & Breitengrade.

Somit must die Daten schonmal in der DB ablegen, zusätzlich würde ich dann noch in einer weiteren DB die Orte ablegen und über den einen Index mit jeweilgen Längen & Breitengraden verknüpfen.

Dann brauchst Du nur noch die Daten zur deiner Berechnung aus der DB ziehen.

Ich hoffe das hilft dir ein wenig weiter.

marabu 28. Mai 2005 09:06

Re: Suche nach Orten über X/Y Koordinaten
 
Hallo alzaimar,

die Entfernung eines Punktes zu anderen Punkten muss immer berechnet werden, aber man kann in großen Datenbanken dadurch optimieren, dass man einem Ort mehrere Koordinaten zuordnet. Das Prinzip ist folgendes: Ausgehend von einem Referenzpunkt werden verschiedene Gitter konstruiert, deren quadratische Maschen brauchbare Seitenlängen von z.B. 1 km, 2 km, 5 km, 10 km, usw. (du erkennst die Folge) haben. Beim Speichern eines Ortseintrages werden die jeweiligen Gitterkoordinaten errechnet und abgespeichert. Bei der Distanzsuche wird dann für einen gesuchten Ort die passende Gitterkoordinate herangezogen, um das Gros der Datensätze von einer eventuell noch nachfolgenden Einzelberechnung (computed field) auszuschließen.

Ich hoffe ich konnte mich verständlich ausdrücken

Grüße vom marabu

alzaimar 29. Mai 2005 09:09

Re: Suche nach Orten über X/Y Koordinaten
 
@marabu: DAS war es, was ich irgendwo irgendwann gelesen habe! Danke.


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:41 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz