根據當前所在的坐標點也即經緯度,查找數據庫中附近5公里或10公里附近的所有信息的實現,經過查找資料,原來是我高二學的,就是求弦長,數學忘完了,沒想到數學還這么有用,數學啊 真是用途太大了。
用到的什么余弦,角度、弧度全忘完了,但是通過找資料,還是實現了,誤差相對還是比較小的,我在mssql數據庫中實現的,具體如下:
mssql函數:
ALTER FUNCTION [GetDistance] ( @GPSLng DECIMAL(12,6), @GPSLat DECIMAL(12,6), @Lng DECIMAL(12,6), @Lat DECIMAL(12,6) ) RETURNS DECIMAL(12,4) AS BEGIN DECLARE @result DECIMAL(12,4) SELECT @result=6371.004*ACOS(SIN(@GPSLat/180*PI())*SIN(@Lat/180*PI())+COS(@GPSLat/180*PI())*COS(@Lat/180*PI())*COS((@GPSLng-@Lng)/180*PI())) RETURN @result END
sql查詢語句:
SELECT *,GetDistance(某一點的經度,某一點的緯度,數據庫中經度,數據庫中緯度)AS dis FROM 表名 where dis<5
查找數據庫中5公里內的記錄
注: 6371.004 地球半徑 6371.004*ACOS(SIN(@GPSLat/180*PI())*SIN(@Lat/180*PI())+COS(@GPSLat/180*PI())*COS(@Lat/180*PI())*COS((@GPSLng-@Lng)/180*PI())) 計算公式 可查球面弧長計算公式的詳細解釋
轉載:http://blog.csdn.net/ecdyf1989/article/details/8077943/