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