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?

Était-ce utile?

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:

  1. sélectionner chaque ligne dans le tableau et obtenir son lon et lat.
  2. 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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top