比方說,我有一個包含座標的行的表。確定一個座標是否在另一個的半徑內
什麼是最好的方式拉只在另一個座標的半徑座標行?
爲了簡化我的問題,我給下面的例子:
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