比方说,我有一个包含坐标的行的表。确定一个坐标是否在另一个的半径内
什么是最好的方式拉只在另一个坐标的半径坐标行?
为了简化我的问题,我给下面的例子:
Table like:
Columns: Latitude, Longitude.
Row1: 23.44444 24.55555
Row2: 32.44444 28.22222
Row3: 35.11111 32.12345
在一个SQL语句,我如何才能是在ROW3的例如半径坐标的行?
比方说,我有一个包含坐标的行的表。确定一个坐标是否在另一个的半径内
什么是最好的方式拉只在另一个坐标的半径坐标行?
为了简化我的问题,我给下面的例子:
Table like:
Columns: Latitude, Longitude.
Row1: 23.44444 24.55555
Row2: 32.44444 28.22222
Row3: 35.11111 32.12345
在一个SQL语句,我如何才能是在ROW3的例如半径坐标的行?
This post shows how to do this in SQL Server。
这里是如何做到这一点在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
你怎么在半径意思?你是否想要通过一段距离,比如5英里,并在行x的5英里内找到所有行?
检查了这一点,如果这样http://www.microsoft.com/sqlserver/2008/en/us/spatial-data.aspx
是的,我会使用公里,但你有想法。 事情是我需要一个访问数据库。 – 2009-12-13 11:30:46
使用VBA功能,有很多可用于适应的Googleable代码片段。 – 2009-12-13 11:34:08
貌似距离公式是:
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.我不知道如何访问使这个。但是,这种方式如同缓慢一样。
谢谢,我该如何在Access数据库中使用它? – 2009-12-13 11:28:48
据我所知,你不能在Access数据库中创建这种类型的函数。你应该尝试第二种方法。 (需要进行一些修改,例如,我相信访问没有PI()函数) – jbochi 2009-12-13 11:35:35
这是英里还是公里? – Pentium10 2010-05-28 16:40:07