Excel丶Sqlserver计算中国经纬度距离函数丶方法丶公式

  • 格式:doc
  • 大小:56.50 KB
  • 文档页数:3

Excel

这两个值很重要,代表的范围是中国江西,要经过计算得到,具体怎么算,目前为止我也不知道。你可以到网上找找看下有什么办法得到不同地区的这两个值。找到与我分享下QQ285679784,共同学习!(*^__^*) 嘻嘻

计算距离需要用到,网上找到的都是错误的算法,普遍都是缺少这两个值,结果计算不正确

Fx里边是计算的公式

SqlServer

1.函数实现

--计算A(经度,纬度) 与B(经度,纬度) 直接的距离(米)

Create function fn_computer_distance(

@J_A decimal(30,15), --A点经度

@W_A decimal(30,15), --A点纬度

@J_B decimal(30,15), --B点经度 @W_B decimal(30,15) --B点纬度

)

returns decimal(30,4) --返回参数类型

as

begin

declare @J decimal(30,15) --经度方向距离

declare @W decimal(30,15) --纬度方向距离

declare @A decimal(30,15) --经度方向距离

declare @B decimal(30,15) --纬度方向距离

declare @distance decimal(30,15) --两地间的距离

set @J=95600

set @W=111200

set @A=((@J_A-@J_B)*@J)*((@J_A-@J_B)*@J)

set @B=((@W_A-@W_B)*@W)*((@W_A-@W_B)*@W)

set @distance=sqrt(@A+@B) --sqrt 求平方根 例如: 4=sqrt(16)

return @distance

end

--select dbo.fn_computer_distance(115.9798,29.72767,114.887,29.1727)

2.存储过程

--计算A(经度,纬度) 与B(经度,纬度) 直接的距离(米)

Create procedure pro_computer

@J1 decimal(38,8),@W1 decimal(38,8),@J2 decimal(38,8),@W2 decimal(38,8)

as

declare @distance decimal(38,4)

declare @one decimal(38,4)

declare @two decimal(38,4)

set @one=((@J1-@J2)*95600)*((@J1-@J2)*95600) set @two=((@W1-@W2)*111200)*((@W1-@W2)*111200)

set @distance=SQRT(@one+@two)

print @distance

--4位参数(A,B,C,D)

--A A点的经度

--B A点的纬度

--C B点的经度

--D B点的纬度

--exec pro_computer 115.9798,29.72767,114.887,29.1727