Froschkoenig84
Aktiver Benutzer
- Beiträge
- 27
Ich habe eine Datentabelle mit Städten und LAT/LON Werten (~100K Einträge)
Nun sollen die Distanzen errechnet und in eine neue Tabelle geschrieben werden...
Die Ermittlung der Distanzen (in Metern) stellt generell kein Problem dar...
Aber hier bin ich ausgestiegen...
Egal ob mit INSERT-SELECT oder mit JOINs oder wie auch immer, ich bekomme schon den ersten Punkt (die 100 nächstgelegenen) nicht auf die Reihe.
Kann mir jemand einen Ansatz geben?
Code:
DESTINATIONS {
id,
lat,
lon,
...
}
Nun sollen die Distanzen errechnet und in eine neue Tabelle geschrieben werden...
Code:
DISTANCES {
id_a,
id_b,
distance
}
Die Ermittlung der Distanzen (in Metern) stellt generell kein Problem dar...
Code:
ROUND(111045
* DEGREES(ACOS(COS(RADIANS(A.lat))
* COS(RADIANS(B.lat))
* COS(RADIANS(A.lon) - RADIANS(B.lon))
+ SIN(RADIANS(A.lat))
* SIN(RADIANS(B.lat)))),0)
AS 'distance'
Aber hier bin ich ausgestiegen...
- Ich brauche eigentlich nicht das vollständige kartesische Produkt, sondern nur die 100 nächstgelegenen.
- Keine Duplikate (a_id+b_id == b_id+a_id), z.B.besitzt [Berlin:München] die gleiche Entfernung wie [München:Berlin]
- Keine Abfragen auf die gleiche ID (a_id != b_id), denn es sind immer 0 Meter von [Berlin:Berlin]
Egal ob mit INSERT-SELECT oder mit JOINs oder wie auch immer, ich bekomme schon den ersten Punkt (die 100 nächstgelegenen) nicht auf die Reihe.
Kann mir jemand einen Ansatz geben?