基于两点经纬度总括距离天文台

By admin in 天文台 on 2019年3月20日

这么些经纬线是什么定出来的啊?地球是在不停地绕地轴转动(地轴是一根通过地球南北两极和地球中央的
假想线),在地球中腰画四个与地轴垂直的大圆圈,使圈上的每一点都和南北两极的相距相等,那些圈子
就叫作“赤道”。在赤道的南北两边,画出广大和赤道平行的圆形,正是“纬圈”;构成那些圆圈的线条,
称为纬线。我们把赤道定为纬度零度,向西向南各为90度,在赤道以南的叫南纬,在赤道以北的叫北纬。
天文台,北极就是北纬90度,南极就是南纬90度。纬度的轻重也标志着天气的冷热,如赤道和低纬度地地点无冬,
两极和北齐武成帝度地区无夏,中纬度地区四季明显。
附带,从北极点到南极点,能够画出不少南北方向的与地球赤道垂直的大圆圈,那叫作“经圈”;构成那
些圆圈的线条,就叫经线。公元1884平面坐标图年,国际上规定以通过英帝国London近郊的格林尼治天文台的
经线作为总结经度的源点,即经度零度零分零秒,也称“本初子午线”。在它东面包车型客车为东经,共180度;
在它西面包车型大巴为西经,共180度。因为地球是圆的,所以东经180度和西经180度的经线是同等条经线。各国
公定180度经线为“国际日期变更线”。为了幸免同一地段采纳三个差异的日期,国际日期变线在遇陆地时
略有偏离。
每一经度和纬度仍是能够再细分为五拾八分,每一分再分为60秒以及秒的小数。利用经纬线,大家就能够规定
地球上每个地点的具体地方,并且把它在地形图或地球仪上象征出来。例如问日本首都的中纬度是有点?大家
很不难从地图上查出来是东经116度22分,北纬39度55分。在大海中国民航行的船舶,只要把所在地的经度测
出去,就可以规定船在深海中的地点和前进方向。
纬度共有90度。赤道为0度,向两极排列,圈子越小,
度数越大。
横线是纬度,竖线是经度。
自然能够测算,四元1次方程。
经度和纬度都以一种角度。经度是个两面角,是五个经线平面包车型地铁夹角。因持有经线都以同一长,为了度量
经度选用三个起源面,经1884年国际会议研商,决定以通过英帝国London近郊、泰晤士湖南岸的格林尼治皇家
天文台(旧址)的一台关键子午仪十字丝的那条经线为起初经线,称为本初子午线。本初子午线平面是起
点面,终点面是地面经线平面。某一点的经度,就是该点所在的经线平面与本初子午线平面间的夹角。在
赤道上度量,自本初子午线平面作为源点面,分别向南往南衡量,往南量值称为东经度,向西量值称为西
经度。同理可得,一地的经度是该地对于本初子午线的趋势和角距离。本初子午线是0°经度,东经度的最
大值为180°,西经度的最大值为180°,东、西经180°经线是一模一样根经线,因而不分东经或西经,而统称
180°经线。
纬度是个线面角。起源面是赤道平面,线是本土的当地法线。所谓法线,即垂直于参考扁球体表面包车型客车线。
某地的纬度正是该地的法线与赤道平面之间的夹角。纬度在地头经线上衡量,由赤道向南、北度量,向北
量值称为北纬度,往南量值称为南纬度。显而易见,一地的纬度是该地对于赤道的样子和角距离。赤道是
0°纬线,北纬度的最大值为90°,即北极点;南纬度的最大值为90°,即南极点。
经纬度调换

度(DDD):E 108.90593度 N 34.21630度

如何将度(DDD):: 108.90593度换算成度分秒(DMS)东经E
108度55分22.2秒?转换方法是将108.90593整数位不变取108(度),用0.9059360=54.3558,取整数位54(分),0.355860=21.348再取整数位21(秒),故转化为108度五拾叁分21秒.

平等将度分秒(DMS):东经E 108度五十多分22.2秒
换算成度(DDD)的艺术如下:108度53分22.2秒=108+(54/60)+(22.2/3600)=108.90616度

因为总计时小数位保留的原委,导致正面与反面计算存在一定误差,但误差影响不是极大。1秒的误差便是几米的样板。GPS车友能够用上述方法换算成团结索要的单位坐标。

经纬度换算成米

纬度分为五贰12分,每一分再分为60秒以及秒的小数。

纬度线投射在图上看似水平的平行线,但实际上是不一样半径的圆。有一致特定纬度的保有地方都在同二个纬线上。
赤道的纬度为0°,将行星平分为南半球和北半球。
纬度是指某点与地球球心的连线和地球赤道面所成的线面角,其数值在0至90度之间。位于赤道以北的点的纬度叫北纬,记为N,位于赤道以南的点的纬度称南纬,记为S。
纬度数值在0至30度中间的地域称为低纬地区,纬度数值在30至60度中间的地区称为中纬地区,纬度数值在60至90度之间的地段称为北周静帝地区。
赤道、南回归线、北回归线、南极圈和北极圈是优秀的纬线。
纬度1秒的长度
地球的子午线总长度大概五千8km。平均:
纬度1度 = 大约111km
纬度1分 = 大约1.85km
纬度1秒 = 大约30.9m

传闻地球上随机两点的经纬度总括两点间的相距

地球是1个看似标准的椭球体,它的赤道半径为6378.140海里,极半径为
6356.755英里,平均半径6371.004英里。若是大家假如地球是2个两全的圆球,那么它的半径正是地球的平分半径,记为CR-V。要是以0度经线为基
准,那么依据地表任意两点的中纬度就能够总括出这两点间的地球表面距离(那里忽略地表地形对计量带来的误差,仅仅是辩论上的算计值)。设第贰点A的经
纬度为(LonA, LatA),第3点B的中纬度为(LonB,
LatB),依照0度经线的口径,东经取经度的正在(Longitude),西经取经度负值(-Longitude),北纬取90-纬度值(90-
Latitude),南纬取90+纬度值(90+Latitude),则通过上述处理以往的两点被计为(MLonA,
MLatA)和(MLonB,
MLatB)。那么依照三角推导,能够博得总计两点离开的如下公式:

C = sin(MLatA)*sin(MLatB)*cos(MLonA-MLonB) + cos(MLatA)*cos(MLatB)

Distance = R*Arccos(C)*Pi/180

那边,Tiguan和Distance单位是相同,若是是行使6371.004英里作为半径,那么Distance正是公里为单位,如果要选拔别的单位,比如mile,还必要做单位换算,1英里=0.621371192mile

假若仅对经度作正负的处理,而不对纬度作90-Latitude(假若都以北半球,南半球只有澳大加的夫(Australia)颇具应用意义)的拍卖,那么公式将是:

C = sin(LatA)*sin(LatB) + cos(LatA)*cos(LatB)*cos(MLonA-MLonB)

Distance = R*Arccos(C)*Pi/180

以上通过简单的三角形变换就可以生产。

倘使三角函数的输入和出口都利用弧度值,那么公式还能编写:

C = sin(LatA*Pi/180)*sin(LatB*Pi/180) + cos(LatA*Pi/180)*cos(LatB*Pi/180)*cos((MLonA-MLonB)*Pi/180)

Distance = R*Arccos(C)*Pi/180

也就是:

C = sin(LatA/57.2958)*sin(LatB/57.2958) + cos(LatA/57.2958)*cos(LatB/57.2958)*cos((MLonA-MLonB)/57.2958)

Distance = R*Arccos(C) = 6371.004*Arccos(C) kilometer 
= 0.621371192*6371.004*Arccos(C) mile = 3958.758349716768*Arccos(C) mile

在实质上采取在那之中,一般是通过一个私家的邮编来寻找该邮编对应的地带主导的经纬度,然
后再依据这一个经纬度来计算互相的偏离,从而算计出一些群众体育之间的大体距离限制(比如宾馆游客的遍布范围-各种旅客的邮编对应的中纬度和酒吧的中纬度所
计算的偏离限制-等等),所以,通过邮编查询经纬度那样3个数据库是一个很有用的能源。
附:C#代码:

private const double EARTH_RADIUS = 6378.137;//地球半径
private static double rad(double d)
{
 return d * Math.PI / 180.0;
} 

public static double GetDistance(double lat1, double lng1, double lat2, double lng2)
{
 double radLat1 = rad(lat1);
 double radLat2 = rad(lat2);
 double a = radLat1 - radLat2;
 double b = rad(lng1) - rad(lng2);

double s = 2 * Math.Asin(Math.Sqrt(Math.Pow(Math.Sin(a/2),2) +
 Math.Cos(radLat1)*Math.Cos(radLat2)*Math.Pow(Math.Sin(b/2),2)));
 s = s * EARTH_RADIUS;
 s = Math.Round(s * 10000) / 10000;
 return s;
}

近期应用了geohash(参考《geohash:用字符串完成附近地方寻找》)来贯彻附近搜索的效应,在《微信、陌陌架构方案分析》文中提供了三个php的geohash类直接能对治理地址编码成字符串,
而当中包括三个getDistance方法得到两点间的离开,但在sphinx中选择过滤附近地方统一标准的格局SetGeoAnchor发现重临的相距值有误,遂google出以下办法,经测试可用。。

/*** @desc 根据两点间的经纬度计算距离*
 @param float $lat 纬度值* @param float $lng 经度值*/ 
    /**
     *  @desc 根据两点间的经纬度计算距离
     *  @param float $lat 纬度值
     *  @param float $lng 经度值
     * @return $result 单位为千米(km)
     */
     public function getDistance($lat1, $lng1, $lat2, $lng2){

        $earthRadius = 6367000; //approximate radius of earth in meters
        //  Convert these degrees to radians       to work with the formula
        $lat1 = ($lat1 * pi() ) / 180;
        $lng1 = ($lng1 * pi() ) / 180;
        $lat2 = ($lat2 * pi() ) / 180;
        $lng2 = ($lng2 * pi() ) / 180;
        // Using the       Haversine formula       http://en.wikipedia.org/wiki/Haversine_formula       calculate the distance
        $calcLongitude = $lng2 - $lng1;
        $calcLatitude = $lat2 - $lat1;
        $stepOne = pow(sin($calcLatitude / 2), 2) + cos($lat1) * cos($lat2) * pow(sin($calcLongitude / 2), 2);  $stepTwo = 2 * asin(min(1, sqrt($stepOne)));
        $calculatedDistance = $earthRadius * $stepTwo;
        return round($calculatedDistance);
    }

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图
Copyright @ 2010-2019 亚洲必赢手机官网 版权所有