计算经纬度两点之间的距离(/m)
2013-04-26 09:58
751 查看
原文地址:计算经纬度两点之间距离的差多少米作者:一网情深
先计算沿纬度距离,在计算沿经度距离,具体如下:
求出纬度差,将差换算成距离,1度=60海里=60*1852米
求出经度差,将其换算成距离,1度=60海里*cos纬度=60海里*1852米*cos纬度
对沿纬度距离和沿经度距离进行平方求和再开方,可以得到两点间的距离。
同纬度不同经度 (赤道除外)
h X 111 X COSD=G (h=两地经度差 D=当地的地理纬度 G=实际距离)
跨纬度的需要构造个三角
比如说AB两点不同经纬度(A经B纬)
那就先算出与A点共线的那条纬度B'的距离,在算A到B'的距离,在用勾股定理就可以得出
简单的说可用以下通用公式:
地球上任两点间距离公式:
地球上任两点,其经度分别为A1、A2(E正,W负),纬度分别为B1、B2(N正,S负)。
令A0=(A1-A2)÷2,B0=(BI-B2)÷2
f=√sinB0×sinB0+cosB1×cosB2×sinA0×sinA0
则
1、两点间空间直线距离=2fR
2、两点间最小球面距离=arcsinf÷90°×∏R(角度)
3、两点间最小球面距离=arcsinf×2R(弧度)
说明:E、W、N、S=东西南北;R=地球半径;√=根号;∏=圆周率。
代入公式自己算吧
create or replace function xp_2pointdistance
(
x1 float, -- 起始点x
x2 float, -- 起始点y
y1 float, -- 终点x
y2 float -- 终点y
)
return float
is
Result float;
pPI float := 0.0;
pPIval float := 0.0;
earth_radius float := 6378.137;
radlat1 float := 0.0;
radlat2 float := 0.0;
a float := 0.0;
b float := 0.0;
s float := 0.0;
begin
-- cos(-1) = 0.54030230586814
-- 弧度cos1 = 0.54030230586814
-- 角度cos1°=0.999847695
pPI := acos(-1);
pPIval := pPI/180.0;
radlat1 := y1*pPIval;
radlat2 := y2*pPIval;
a := radlat1 - radlat2; --两点间的纬度弧度差
b := x1*pPIval - x2*pPIval; --两点间的经度弧度差
-- ASIN(number) Number 角度的正弦值,必须介于 -1 到 1 之间。
-- 若要用度表示反正弦值,请将结果再乘以 181/PI( ) 或用 DEGREES 函数表示
--地球上任两点间距离公式:
--地球上任两点,其经度分别为A1、A2(E正,W负),纬度分别为B1、B2(N正,S负)。
--令A0=(A1-A2)÷2,B0=(BI-B2)÷2
--f=√sinB0×sinB0+cosB1×cosB2×sinA0×sinA0
--则
--1、两点间空间直线距离=2fR
--2、两点间最小球面距离=arcsinf÷90°×∏R(角度)
--3、两点间最小球面距离=arcsinf×2R(弧度)
--说明:E、W、N、S=东西南北;R=地球半径;√=根号;∏=圆周率。
--代入公式自己算吧
s := 2*asin(sqrt(power(sin(a/2),2) + cos(radlat1)*cos(radlat2)*power(sin(b/2),2))) ;
s := s * earth_radius;
--Round 函数 返回按指定位数进行四舍五入的数值。
--Round(expression, numdecimalplaces)
--参数
-- Expression 必选项。数值表达式 被四舍五入。
-- Numdecimalplaces 可选项。数字表明小数点右边有多少位进行四舍五入。
--如果小数位数是负数,则round()返回的结果在小数点左端包含指定个零.如果省略,则 Round 函数返回整数
s := round(s * 10000)/10000;
result := s*1000;
return result;
exception
when others then
raise_application_error(sqlcode,sqlerrm);
return 0.0 ;
end xp_2pointdistance;
先计算沿纬度距离,在计算沿经度距离,具体如下:
求出纬度差,将差换算成距离,1度=60海里=60*1852米
求出经度差,将其换算成距离,1度=60海里*cos纬度=60海里*1852米*cos纬度
对沿纬度距离和沿经度距离进行平方求和再开方,可以得到两点间的距离。
同纬度不同经度 (赤道除外)
h X 111 X COSD=G (h=两地经度差 D=当地的地理纬度 G=实际距离)
跨纬度的需要构造个三角
比如说AB两点不同经纬度(A经B纬)
那就先算出与A点共线的那条纬度B'的距离,在算A到B'的距离,在用勾股定理就可以得出
简单的说可用以下通用公式:
地球上任两点间距离公式:
地球上任两点,其经度分别为A1、A2(E正,W负),纬度分别为B1、B2(N正,S负)。
令A0=(A1-A2)÷2,B0=(BI-B2)÷2
f=√sinB0×sinB0+cosB1×cosB2×sinA0×sinA0
则
1、两点间空间直线距离=2fR
2、两点间最小球面距离=arcsinf÷90°×∏R(角度)
3、两点间最小球面距离=arcsinf×2R(弧度)
说明:E、W、N、S=东西南北;R=地球半径;√=根号;∏=圆周率。
代入公式自己算吧
create or replace function xp_2pointdistance
(
x1 float, -- 起始点x
x2 float, -- 起始点y
y1 float, -- 终点x
y2 float -- 终点y
)
return float
is
Result float;
pPI float := 0.0;
pPIval float := 0.0;
earth_radius float := 6378.137;
radlat1 float := 0.0;
radlat2 float := 0.0;
a float := 0.0;
b float := 0.0;
s float := 0.0;
begin
-- cos(-1) = 0.54030230586814
-- 弧度cos1 = 0.54030230586814
-- 角度cos1°=0.999847695
pPI := acos(-1);
pPIval := pPI/180.0;
radlat1 := y1*pPIval;
radlat2 := y2*pPIval;
a := radlat1 - radlat2; --两点间的纬度弧度差
b := x1*pPIval - x2*pPIval; --两点间的经度弧度差
-- ASIN(number) Number 角度的正弦值,必须介于 -1 到 1 之间。
-- 若要用度表示反正弦值,请将结果再乘以 181/PI( ) 或用 DEGREES 函数表示
--地球上任两点间距离公式:
--地球上任两点,其经度分别为A1、A2(E正,W负),纬度分别为B1、B2(N正,S负)。
--令A0=(A1-A2)÷2,B0=(BI-B2)÷2
--f=√sinB0×sinB0+cosB1×cosB2×sinA0×sinA0
--则
--1、两点间空间直线距离=2fR
--2、两点间最小球面距离=arcsinf÷90°×∏R(角度)
--3、两点间最小球面距离=arcsinf×2R(弧度)
--说明:E、W、N、S=东西南北;R=地球半径;√=根号;∏=圆周率。
--代入公式自己算吧
s := 2*asin(sqrt(power(sin(a/2),2) + cos(radlat1)*cos(radlat2)*power(sin(b/2),2))) ;
s := s * earth_radius;
--Round 函数 返回按指定位数进行四舍五入的数值。
--Round(expression, numdecimalplaces)
--参数
-- Expression 必选项。数值表达式 被四舍五入。
-- Numdecimalplaces 可选项。数字表明小数点右边有多少位进行四舍五入。
--如果小数位数是负数,则round()返回的结果在小数点左端包含指定个零.如果省略,则 Round 函数返回整数
s := round(s * 10000)/10000;
result := s*1000;
return result;
exception
when others then
raise_application_error(sqlcode,sqlerrm);
return 0.0 ;
end xp_2pointdistance;
相关文章推荐
- 计算指定两点经纬度之间的距离(附PHP源码)
- 根据经纬度计算地球上两点之间的距离js实现代码
- 利用JS实现的根据经纬度计算地球上两点之间的距离
- mysql 下 计算 两点 经纬度 之间的距离
- 通过gps给定的两个经纬度坐标,计算两点之间的距离
- 计算两点经纬度之间的距离
- 利用JS实现的根据经纬度计算地球上两点之间的距离
- 两点之间(经纬度)的距离计算
- mysql 下 计算 两点 经纬度 之间的距离 含具体sql语句以及伪列作为查询条件实现
- php 根据经纬度计算两点之间距离
- mysql计算两点经纬度之间的距离
- 利用JS实现的根据经纬度计算地球上两点之间的距离
- PHP根据经纬度计算两点之间距离
- 根据经纬度计算两点之间的距离
- 根据经纬度计算两点之间的距离
- 利用JS实现的根据经纬度计算地球上两点之间的距离
- 计算两点经纬度之间的距离
- 根据经纬度,计算两点之间的距离
- mysql 下 计算 两点 经纬度 之间的距离
- 根据两点经纬度计算两点之间的距离