Festzustellen, ob eine Koordinate des Radius eines anderen ist
-
19-09-2019 - |
Frage
Lassen Sie uns sagen, dass ich eine Tabelle der Zeilen, die Koordinaten enthalten.
Was wäre der beste Weg, um nur die Zeilen von Koordinaten zu ziehen, die im Umkreis von einem anderen sind koordinieren?
meine Frage zu vereinfachen, ich gebe das folgende Beispiel:
Table like:
Columns: Latitude, Longitude.
Row1: 23.44444 24.55555
Row2: 32.44444 28.22222
Row3: 35.11111 32.12345
In einer SQL-Anweisung, wie bekomme ich die Zeilen von Koordinaten, die zum Beispiel im Radius von Row3 sind?
Lösung
Die Post zeigt, wie diese in SQL Server tun.
Und hier ist, wie es in MySQL zu tun:
SELECT ((ACOS(SIN($lat * PI() / 180) * SIN(lat * PI() / 180) +
COS($lat * PI() / 180) * COS(lat * PI() / 180) * COS(($lon - lon) *
PI() / 180)) * 180 / PI()) * 60 * 1.1515) AS distance
FROM members
HAVING distance<='10' ORDER BY distance ASC
Andere Tipps
sieht aus wie der Abstand Formel lautet:
D = 60* 1.1515 * acos (sin(pi*y/180) * sin(pi*Y/180) +
cos(pi*y/180) * cos(pi*Y/180) * cos((z-Z) *pi / 180)
) * 180 / pi)
, wobei Y und Z - sind Punkte jeder Zeile Sie whant zu testen, und y und z - sind Punkte von Beispiel Zeilen
., so dass Sie so etwas machen könnten:
- jede Zeile in der Tabelle auswählen und ihre
lon
undlat
erhalten. - anwenden Abfrage von ,
$lon
und$lat
Daten Form Punkt zu ändern 1.
Ich weiß nicht, wie dies in dem Zugang zu machen. Aber diese Art und Weise ist, wie Straße so langsam.
Was meinen Sie, indem Sie im Radius von? Haben Sie in einem Abstand übergeben wollen, sagen wir 5 Meilen, und finden Sie alle Zeilen innerhalb von 5 Meilen von Zeile x?
Das ist echt toll, wenn so http: // www. microsoft.com/sqlserver/2008/en/us/spatial-data.aspx