我创建了一份SSRS报告,其中我使用了map和bing map。我也在地图中使用了Point图层。 我怎样才能在地图中获得2点之间的距离? 请建议......
答案 0 :(得分: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)
答案 1 :(得分:0)
如果你知道两个点的操作系统坐标(纬度和经度),你可以使用一点毕达哥拉斯来计算它:
SQRT(((lat1 - lat2) * (lat1 - lat2)) + ((long1 - long2) * (long1 - long2)))
计算X轴和Y轴上两点之间的差异,它们成为赤道三角形的两个短边,最长边是斜边,是你想要计算的距离。所以它变成了两个已知边的正方形,加在一起得到了斜边的平方,其平方根为你提供了距离。