Heim > Datenbank > MySQL-Tutorial > Hauptteil

SQL SERVER 根据地图经纬度计算距离函数

大家讲道理
Freigeben: 2016-11-12 09:59:34
Original
1249 Leute haben es durchsucht

前些天客户提出一个这样的要求:一个手机订餐网,查询当前所在位置的5公里范围的酒店,然后客户好去吃饭。
拿到这个请求后,不知道如何下手,静静地想了一下,在酒店的表中增加两个字段,用来存储酒店所在的经度和纬度,当订餐的时候,要求手机得到当前客户所在的经度和纬度传过来,再与数据库中酒店的经度和纬度计算一下,就查出来。

为了在数据库中查询两点之间的距离,所以这个函数需要在数据库中定义。

我网上找了很久,却没有找到这个函数。最后在CSDN上,一个朋友的帮助下解决了这个问题,非常感谢lordbaby给我提供这个函数,我把这个函数放到这里来,以便帮助更多许要的朋友。

--计算地球上两个坐标点(经度,纬度)之间距离sql函数  
 
CREATE FUNCTION [dbo].[fnGetDistance](@LatBegin REAL, @LngBegin REAL, @LatEnd REAL, @LngEnd REAL) RETURNS FLOAT 
  AS 
BEGIN 
  --距离(千米)  
  DECLARE @Distance REAL 
  DECLARE @EARTH_RADIUS REAL 
  SET @EARTH_RADIUS = 6378.137    
  DECLARE @RadLatBegin REAL,@RadLatEnd REAL,@RadLatDiff REAL,@RadLngDiff REAL 
  SET @RadLatBegin = @LatBegin *PI()/180.0    
  SET @RadLatEnd = @LatEnd *PI()/180.0    
  SET @RadLatDiff = @RadLatBegin - @RadLatEnd    
  SET @RadLngDiff = @LngBegin *PI()/180.0 - @LngEnd *PI()/180.0     
  SET @Distance = 2 *ASIN(SQRT(POWER(SIN(@RadLatDiff/2), 2)+COS(@RadLatBegin)*COS(@RadLatEnd)*POWER(SIN(@RadLngDiff/2), 2)))  
  SET @Distance = @Distance * @EARTH_RADIUS    
  --SET @Distance = Round(@Distance * 10000) / 10000    
  RETURN @Distance  
END
Nach dem Login kopieren


Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!