计算两个经纬度坐标之间的距离Sql版

2015-1-25 18:47

花了半个多小时做出来的东西别浪费了,以后说不定用的着,拿出来晒晒。

晕倒,发现我的编辑器“代码高亮”功能没上线,等我上线了之后再编辑一遍好了。

再晕倒,发现了摘要不填写不许保存的bug

 DECLARE @R FLOAT SET @R = 6371.004;
 SELECT  fff.HotelName,RujiaName,distance,ROW_NUMBER() OVER(PARTITION BY fff.HotelName ORDER BY distance) rowIndex
 INTO #T
 FROM 
( SELECT  a.HotelID,  a.HotelName,  b.HotelID AS 'RujiaID',  b.HotelName AS 'RujiaName', a.latcount,  a.loncount, b.latcount AS rLat,  b.loncount AS bLon, @R*(ACOS(cos(CAST(b.latcount AS FLOAT)*PI()/180)*cos(CAST(a.latcount AS FLOAT)*PI()/180)*cos((CAST(b.loncount AS FLOAT) - CAST(a.loncount AS FLOAT))*PI()/180)+sin(cast(b.latcount AS FLOAT)*PI()/180)*sin(cast(a.latcount AS FLOAT)*PI()/180))) AS distance 
 FROM  dbo.tmp_huazhulonandlat a WITH(NOLOCK) INNER JOIN dbo.tmp_rujialonandlat b WITH(NOLOCK) ON 1 = 1
  WHERE  a.loncount IS NOT NULL  AND a.latcount IS NOT NULL  AND b.loncount IS NOT NULL  AND b.latcount IS NOT NULL AND a.loncount <> '0'  AND a.latcount <> '0'  AND b.loncount <> '0'  AND b.latcount <> '0' ) fff 
GROUP BY fff.HotelName,RujiaName,distance;
SELECT * FROM #T WHERE rowIndex = 1 ORDER BY distance;

代码高亮以上线,不过syntaxhighlighter真心的不好用,不能自动换行,非要在样式中强制换行的话还会让行号出现胖子穿小衣现象,这种实现机制没法让行号正确描述。空了再看看能不能修改下,暂时有的用先用着吧。

点击:loading..
收藏到:中国收客网
评论