Determine if one coordinate is in radius of another

≡放荡痞女 提交于 2019-11-26 15:19:50

问题


Let's say I have a Table of rows that contain coordinates.

What would be the best way to pull only the rows of coordinates which are in the radius of another coordinate?

To simplify my question, I'm giving the following example:

Table like:
Columns: Latitude, Longitude.
Row1:    23.44444  24.55555
Row2:    32.44444  28.22222
Row3:    35.11111  32.12345

In an SQL statement, how do I get the rows of coordinates that are in the radius of Row3 for example?


回答1:


This post shows how to do this in SQL Server.

And here is how to do it in 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



回答2:


looks like the distance formula is:

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)

where Y and Z - are points of each row you whant to test, and y and z - are points of example row.

so you could make such a thing:

  1. select each row in table and get its lon and lat.
  2. apply query from this, changing $lon and $lat to data form point 1.

I don't know how to make this in access. But this way is as strait as slow.




回答3:


What do you mean by in the radius of? Do you want to pass in a distance, say 5 miles, and find all rows within 5 miles of row x?

Check this out if so http://www.microsoft.com/sqlserver/2008/en/us/spatial-data.aspx



来源:https://stackoverflow.com/questions/1896213/determine-if-one-coordinate-is-in-radius-of-another

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!