GPS定位,根據經緯度查詢附近地點的經緯度-sql方法實現


根據當前所在的坐標點也即經緯度,查找數據庫中附近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/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM