1. 程式人生 > >SQL Server地理位置資訊計算兩點經緯度距離

SQL Server地理位置資訊計算兩點經緯度距離

計算兩點距離,4326是空間引用識別符號,4326代表GCS-WGS-1984座標系,是系統預設的座標系。

地理座標系空間需要用geography ,平面座標系空間用geometry,計算距離使用STDistance

DECLARE @g geography;
DECLARE @h geography;
SET @g = geography::STGeomFromText('POINT(104.12765 31.61)', 4326);
SET @h = geography::STGeomFromText('POINT(114.132179 22.547010)', 4326);
SELECT @g.STDistance(@h);

查詢某點經緯度距離1000米範圍內的記錄

SELECT * FROM [GpsData] WHERE 
geography::STGeomFromText('POINT(' + cast([Longitude] as varchar(20)) + ' ' 
+ cast([Latitude] as varchar(20)) +')', 4326).STDistance(
geography::STGeomFromText('POINT(114.132179 22.547010)', 4326))<1000

STDistance也可以計算點到面的最短距離。          

參考:

空間引用識別符號

https://technet.microsoft.com/zh-cn/library/bb964707(v=sql.105)

STDistance(geometry 資料型別)

https://msdn.microsoft.com/zh-cn/library/bb933952(v=sql.100).aspx

STDistance的使用及geometry和geography的區別

http://blog.csdn.net/jcx5083761/article/details/46010215