怎样计算两个经纬度之间的距离 百度百科
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎样计算两个经纬度之间的距离 百度百科相关的知识,希望对你有一定的参考价值。
地球赤道上环绕地球一周走一圈共 40075.04公里,而一圈分成360°,每1°(度)有60'。每一度一秒在赤道上的长度计算如下:
40075.04km/360°=111.31955km
111.31955km/60'=1.8553258km=1855.3m
每一分又有60秒,每一秒就代表 1855.3m/60=30.92m,任意两点距离计算公式为:
d=111.12cos1/[sinΦAsinΦB十 cosΦAcosΦBcos(λB-λA)](A点经度,纬度分别为λA和ΦA,B点的经度、纬度分别为λB和ΦB,d为距离)。
地球上所有地方的纬度一分的距离都是约等于1.86公里,也就是一度等于1.86*60=111公里。不同纬度处的经度线上的一分的实际长度是不同的,219国道基本在东经29-38度之间,29度处的一分经线长约1.63公里,38度处的一分经线长约1.47公里。
扩展资料:
在地球仪上,由经线和纬线就组成了经纬网;如果把经纬网地球仪展开,就形成了一幅平面的地图。确定位置,在航空、航天、航海以及气象等方面都有作用。“船在海上遇到危险时,如何去营救”等等,都要用到经纬网地图。
经度 :为了区分地球上的每一条经线,人们给经线标注了度数,这就是经度。经度每15度1个时区。 实际上经度是两条经线所在平面之间的夹角。国际上规定,把通过英国首都伦敦格林威治天文台原址的那一条经线定为0°经线,也叫本初子午线。
从0°经线算起,向东、向西各分作180°,以东的180°属于东经,习惯上用“E”作代号,以西的180°属于西经,习惯上用“W”作代号。东经180°和西经的180°重合在一条经线上,那就是东西180°经线。纬度:从赤道向北量度为“北纬”(N);向南量度为“南纬”(S)。
在地图上判读经度时应注意:从西向东,经度的度数由小到大为东经度;从西向东,经度的度数由大到小,为西经度;除0°和180°经线外,其余经线都能准确区分是东经度还是西经度
参考技术A经纬度之间的距离计算如下:
计算地球上经纬之间的距离d,知道地球上两点的经纬度:(x1,Y1),(X2,Y2),其中x1,X2为经纬度,Y1,Y2为经纬度;
如果地球半径为r=6371.0公里,则两点之间的距离为d=r*Arcos[cos(Y1)*cos(Y2)*cos(x1-x2)+sin(Y1)*sin(Y2)]。
假设我国极影出现的最短时间为中午13:20,杆长与影长之比为为1,则可以看出该地区为北纬45°(TGα=1),东经100°(从120°到1小时减15°,在表A中需要找到4分钟减去1°的杆长与影长为长度的比值。
计算双日经度的算法是在北半球冬至α+ 23.5°和夏至α- 23.5°的任何一天中增加和减去恒定纬度的校正值。
扩展资料:
经纬度划分:
经度被分为360度,每15度有一个时区,其中零度称为本初子午线,是进入新一天的第一个地方,然后向西的每个时区有一个时差。
例如,早上5点,西边的时区是凌晨4点,另一个要经过的时区是凌晨3点,以此类推。在东边,它与原来的子午线相反。
赤道的纬度是0度,行星平均分为南半球和北半球。纬度是指一个点与地球中心和地球赤道之间的线角,其值在0到90度之间。赤道以北点的纬度称为北纬,记为N,赤道以南点的纬度记为S。
纬度在0到30度之间的地区称为低纬度地区,纬度在30到60度之间的地区称为中纬度地区,纬度在60到90度之间的地区称为高纬度地区。
参考资料来源:百度百科-经纬度
参考技术B1、用经纬度大致计算距离
地球赤道上环绕地球一周走一圈共 40075.04公里
而一圈分成360°
而每1°(度)有60'
每一度一秒在赤道上的长度计算如下:
40075.04km/360°=111.31955km
111.31955km/60'=1.8553258km=1855.3m
而每一分又有60秒
每一秒就代表 1855.3m/60=30.92m
任意两点距离计算公式为
d=111.12cos1/[sinΦAsinΦB十 cosΦAcosΦBcos(λB-λA)]
其中:A点经度,纬度分别为λA和ΦA
B点的经度、纬度分别为λB和ΦB,d为距离
地球上所有地方的纬度一分的距离都是约等于1.86公里,也就是一度等于1.86*60=111公里。
不同纬度处的经度线上的一分的实际长度是不同的,219国道基本在东经29-38度之间,29度处的一分经线长约1.63公里,38度处的一分经线长约1.47公里。
参考技术C 地球赤道上环绕地球一周走一圈共 40075.04公里,而一圈分成360°,每1°(度)有60'。每一度一秒在赤道上的长度计算如下:40075.04km/360°=111.31955km
111.31955km/60'=1.8553258km=1855.3m
每一分又有60秒,每一秒就代表 1855.3m/60=30.92m,任意两点距离计算公式为:
d=111.12cos1/[sinΦAsinΦB十 cosΦAcosΦBcos(λB-λA)](A点经度,纬度分别为λA和ΦA,B点的经度、纬度分别为λB和ΦB,d为距离)
地球上所有地方的纬度一分的距离都是约等于1.86公里,也就是一度等于1.86*60=111公里。不同纬度处的经度线上的一分的实际长度是不同的,219国道基本在东经29-38度之间,29度处的一分经线长约1.63公里,38度处的一分经线长约1.47公里.本回答被提问者和网友采纳 参考技术D 我只知道面积
计算两个经纬度之间的距离
//计算两个经纬度之间的距离
/**
* 计算两点地理坐标之间的距离
* @param Decimal $longitude1 起点经度
* @param Decimal $latitude1 起点纬度
* @param Decimal $longitude2 终点经度
* @param Decimal $latitude2 终点纬度
* @param Int $unit 单位 1:米 2:公里
* @param Int $decimal 精度 保留小数位数
* @return Decimal
*/
function getDistance($longitude1, $latitude1, $longitude2, $latitude2, $unit=2, $decimal=2){
$EARTH_RADIUS = 6370.996; // 地球半径系数
$PI = 3.1415926;
$radLat1 = $latitude1 * $PI / 180.0;
$radLat2 = $latitude2 * $PI / 180.0;
$radLng1 = $longitude1 * $PI / 180.0;
$radLng2 = $longitude2 * $PI /180.0;
$a = $radLat1 - $radLat2;
$b = $radLng1 - $radLng2;
$distance = 2 * asin(sqrt(pow(sin($a/2),2) + cos($radLat1) * cos($radLat2) * pow(sin($b/2),2)));
$distance = $distance * $EARTH_RADIUS * 1000;
if($unit==2){
$distance = $distance / 1000;
}
return round($distance, $decimal);
}
//根据给的距离算出自己附近的经纬度范围,算出距离后排序
public function vicinity()
{
if (!request()->isPost()) {
return result_set(-1);
}
$page = input(‘post.page/d‘);
$page_num = input(‘post.page_num/d‘) ? input(‘post.page_num/d‘) : 10;
if (isset($page) && NULL !== $page) {
$current_page = $page;
} else {
$current_page = 1;
}
$options = [
‘page‘ => $current_page,
‘path‘ => url(‘index‘)
];
$uid = $this->uid;
$lng = trim(input("post.lng"));
$lat = trim(input("post.lat"));
$distance = config(‘distance‘);
$degree = (24901*1609)/360.0;
$dpmLat = 1/$degree;
$radiusLat = $dpmLat*$distance;
$minLat = $lat - $radiusLat; // 最小纬度
$maxLat = $lat + $radiusLat; // 最大纬度
$mpdLng = $degree*cos($lat * (M_PI/180));
$dpmLng = 1 / $mpdLng;
$radiusLng = $dpmLng*$distance;
$minLng = $lng - $radiusLng; // 最小经度
$maxLng = $lng + $radiusLng; // 最大经度
$condition[‘p.lng‘] = [‘between‘, [$minLng, $maxLng]];
$condition[‘p.lat‘] = [‘between‘, [$minLat, $maxLat ]];
$data = db(‘member_position‘) ->alias(‘p‘) ->join(‘member m‘, ‘p.uid=m.uid‘)
->where(‘p.uid‘, ‘<>‘, $uid)
->where($condition)
->field(‘p.lng,p.lat,p.uid,m.authentication_status,m.thumb as thumb,m.nickname,m.start,m.brief‘)
->paginate($page_num, false, $options);
$data = $data->toArray();
foreach ($data[‘data‘] as $k => $v) {
$data[‘data‘][$k][‘thumb‘] = ‘http://‘ . config(‘DOMAIN‘) . ‘/‘ . $v[‘thumb‘];
$data[‘data‘][$k][‘distance‘] = getDistance($lng, $lat, $v[‘lng‘], $v[‘lat‘], 1);
}
$arr = $data[‘data‘]; $date = array_column($arr, ‘distance‘);
array_multisort($date,SORT_ASC,$arr);
return result_set(1, ‘成功‘, $arr);}
以上是关于怎样计算两个经纬度之间的距离 百度百科的主要内容,如果未能解决你的问题,请参考以下文章
LBS高德地图百度地图的经纬度科普|MySQL和编程语言是如何计算两个坐标之间的距离?
LBS高德地图百度地图的经纬度科普|MySQL和编程语言是如何计算两个坐标之间的距离?