So rufen Sie Ergebnisse innerhalb von Markierungsradien aus einer Datenbank ab: Genaue Entfernungsberechnung
Zur genauen Bestimmung der Ergebnisse, die innerhalb bestimmter Markierungsradien liegen In einer Datenbank ist es wichtig, die Gleichung eines Kreises zu berücksichtigen:
(x-x1)^2 + (y - y1)^2 = r^2
wobei (x,y) einen Punkt innerhalb des Kreises darstellt, (x1, y1) der Mittelpunkt des Kreises ist und r sein Radius ist .
Im Kontext dieser Frage ist der Mittelpunkt des Kreises die Markierungsposition des Benutzers (Breiten- und Längengrad), während die potenziellen Übereinstimmungen oder Ergebnisse durch Punkte innerhalb des Kreises dargestellt werden. Der Radius ist auf 1 Kilometer festgelegt.
Um das Problem der unterschiedlichen Einheiten (Grad für Breiten- und Längengrad vs. Kilometer für Radius) zu lösen, wird die Gleichung wie folgt geändert:
((x-x1)*111.12)^2 + ((y-y1)*111.12)^2 = 4 (where 2 is the radius in kilometers and 111.12 represents the conversion factor from degrees to kilometers)
Basierend auf dieser Gleichung kann die SQL-Anweisung zum Abrufen von Ergebnissen, die sich mit Markierungskreisen schneiden, wie folgt geschrieben werden:
SELECT A.user_id, A.radius_id, A.latitude, A.logitude FROM UserA AS A, (SELECT user_id, latitude, longitude FROM UserB WHERE user_id = 8) AS B WHERE (POW((A.latitude-B.latitude)*111.12, 2) + POW((A.longitude - B.longitude)*111.12, 2)) <= 4
Das obige ist der detaillierte Inhalt vonSo rufen Sie Ergebnisse innerhalb eines Markierungsradius aus einer Datenbank ab: Ein SQL-Ansatz zur genauen Entfernungsberechnung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!