Déterminer si une coordonnée se trouve dans un rayon d'un autre
-
19-09-2019 - |
Question
Disons que j'ai une table des lignes contenant des coordonnées.
Quelle serait la meilleure façon de tirer uniquement les lignes de coordonnées qui se trouvent dans le rayon d'une autre coordonnée?
Pour simplifier ma question, je donne l'exemple suivant:
Table like:
Columns: Latitude, Longitude.
Row1: 23.44444 24.55555
Row2: 32.44444 28.22222
Row3: 35.11111 32.12345
Dans une instruction SQL, comment puis-je obtenir les lignes de coordonnées qui se trouvent dans le rayon de Row3 par exemple?
La solution
post montre comment faire dans SQL Server.
Et voici comment le faire dans MySQL:
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
Autres conseils
ressemble à la formule de la distance est:
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)
dans laquelle Y et Z - sont des points de chaque ligne vous whant à tester, et Y et Z - sont par exemple les points de ligne
.pour que vous puissiez faire une telle chose:
- sélectionner chaque ligne dans le tableau et obtenir son
lon
etlat
. - cette , changeant
$lon
et$lat
au point de formulaire de données 1.
Je ne sais pas comment faire cela dans l'accès. Mais cette façon est aussi détroit que lent.
Qu'est-ce que tu veux dire par dans le rayon de? Est-ce que vous voulez passer à une certaine distance, par exemple 5 miles, et de trouver toutes les lignes à 5 miles de ligne x?
Check this out si oui http: // www. microsoft.com/sqlserver/2008/en/us/spatial-data.aspx