确定如果一个坐标是在半径的另外一个
-
19-09-2019 - |
题
我是说我有一个表格的行包含的坐标。
什么是最好的方式来挽只有行的坐标是在半径的另一个坐标?
为了简化我的问题,我给下面的例子:
Table like:
Columns: Latitude, Longitude.
Row1: 23.44444 24.55555
Row2: 32.44444 28.22222
Row3: 35.11111 32.12345
在SQL发言,我怎么行的坐标是在半径Row3例如?
解决方案
此 后 演示如何做到这一点,在SQL服务器。
这里是如何做到这一点在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
其他提示
看起来像距离公式是:
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)
其中Y和Z-是,每个行你whant测试,并y和z点的例行。
所以你可以做这样的事情:
- 选择中的每一行表并得到它的
lon
和lat
. - 申请查询 此, ,改变
$lon
和$lat
对数据的形式点1。
我不知道如何使这一访问。但是,这种方式是作为海峡作为缓慢。
你的意思是在半径的?你想要通过在一段距离,说5英里,并找到所有行的5英里范围内的行x?
看看这个如果是这样 http://www.microsoft.com/sqlserver/2008/en/us/spatial-data.aspx
不隶属于 StackOverflow