获取 s-s-rS 报告地图中两点之间的距离

Posted

技术标签:

【中文标题】获取 s-s-rS 报告地图中两点之间的距离【英文标题】:Getting Distance between two Points in s-s-rS report map 【发布时间】:2012-12-17 08:13:13 【问题描述】:

我创建了一个 s-s-rS 报告,我在其中使用地图和 bing 地图。我也使用地图中的点图层。 我怎样才能获得地图中2点之间的距离? 请多多指教……

【问题讨论】:

这可能会有所帮助***.com/questions/8907873/… 【参考方案1】:

以下函数为您提供以千米为单位的两个地理坐标之间的距离

  CREATE FUNCTION dbo.fnCalcDistanceKM(@lat1 FLOAT, @lat2 FLOAT, @lon1 FLOAT, @lon2 FLOAT)
    RETURNS FLOAT 
    AS
    BEGIN

        RETURN ACOS(SIN(PI()*@lat1/180.0)*SIN(PI()*@lat2/180.0)+COS(PI()*@lat1/180.0)*COS(PI()*@lat2/180.0)*COS(PI()*@lon2/180.0-PI()*@lon1/180.0))*6371
    END

以下函数为您提供两个地理坐标之间的距离(以英里为单位)

create function [dbo].[fnCalcDistanceMiles] (@Lat1 decimal(8,4), @Long1 decimal(8,4), @Lat2 decimal(8,4), @Long2 decimal(8,4))
returns decimal (8,4) as
begin
declare @d decimal(28,10)
-- Convert to radians
set @Lat1 = @Lat1 / 57.2958
set @Long1 = @Long1 / 57.2958
set @Lat2 = @Lat2 / 57.2958
set @Long2 = @Long2 / 57.2958
-- Calc distance
set @d = (Sin(@Lat1) * Sin(@Lat2)) + (Cos(@Lat1) * Cos(@Lat2) * Cos(@Long2 - @Long1))
-- Convert to miles
if @d <> 0
begin
set @d = 3958.75 * Atan(Sqrt(1 - power(@d, 2)) / @d);
end
return @d
end 

用法:

select [dbo].[fnCalcDistanceKM](13.077085,80.262675,13.065701,80.258916)

Reference

【讨论】:

【参考方案2】:

如果您知道两个点的操作系统坐标(纬度和经度),您可以使用一些毕达哥拉斯来计算它:

SQRT(((lat1 - lat2) * (lat1 - lat2)) + ((long1 - long2) * (long1 - long2)))

这会计算 X 轴和 Y 轴上两点之间的差异,这两个点成为赤道三角形的两条短边,最长边(斜边)是您要计算的距离。所以它变成了两个已知边的平方相加得到斜边的平方,它的平方根给你距离。

【讨论】:

以上是关于获取 s-s-rS 报告地图中两点之间的距离的主要内容,如果未能解决你的问题,请参考以下文章

如何计算百度地图上两点的距离

如何使用手机gps定位两点之间的直线距离?

如何计算百度地图上两点的距离

地图上的两点怎样计算距离

如何计算百度地图上两点的距离

计算iphone中两点之间的距离