我正在尝试使用SQL Server 2014函数来确定地理曲面上两点之间的距离。我在表格中有三个字段(经纬度,坐标)。 [纬度]和[龙]是现有的价值观和我店使用下面的[坐标]字段地理点的坐标:SQL Server空间功能:.STDistance是否返回英里或米?
UPDATE dbo.[MyTable]
SET [Coordinates] = geography::STPointFromText('POINT(' + CAST([Lon] AS VARCHAR(20)) + ' ' + CAST([Lat] AS VARCHAR(20)) + ')', 4326) ;
所以现在我有一个完整的具有地理坐标记录表预在[坐标]字段中计算。现在我想确定Point_A和Point_B之间的距离(英里)。我用下面的:
- 计算点A:
DECLARE @g geography = (SELECT [Coordinates] FROM [MyTable] WHERE [Id] = 68);
- 计算点B:
DECLARE @h geography = (SELECT [Coordinates] FROM [MyTable] WHERE [Id] = 1439);
- 计算距离:
SELECT ROUND(@g.STDistance(@h)) AS [Distance];
的实际距离约为20英里,但是这个计算给了我一个比20英里大几千倍的数字。
是.STDistance返回米而不是英里?
相关提示:任何人都可以指向我,其中一个用含点的一千另一个表的地理位置最近点匹配上千个地点的表在网络上的例子吗?如果我找不到缩短过程的方法,我可以看到这个计算需要很长时间。
可能的重复[SQL Server 2008 GEOGRAPHY STDistance()value](http://stackoverflow.com/questions/3335773/sql-server-2008-geography-stdistance-value) – GSerg
至于速度,我相信你想要一个[空间索引](https://msdn.microsoft.com/en-us/library/bb934196%28v=sql.120%29.aspx)([限制可能适用](https://msdn.microsoft。 COM/EN-US /库/ bb895265%28V = sql.120%29.aspx#地理))。 – GSerg
我相信它是以米为单位 – mattias