`
qindongliang1922
  • 浏览: 2188746 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
7265517b-f87e-3137-b62c-5c6e30e26109
证道Lucene4
浏览量:117665
097be4a0-491e-39c0-89ff-3456fadf8262
证道Hadoop
浏览量:126072
41c37529-f6d8-32e4-8563-3b42b2712a50
证道shell编程
浏览量:60034
43832365-bc15-3f5d-b3cd-c9161722a70c
ELK修真
浏览量:71402
社区版块
存档分类
最新评论

根据两点经纬度计算距离

    博客分类:
  • JAVA
阅读更多
这些经纬线是怎样定出来的呢?地球是在不停地绕地轴旋转(地轴是一根通过地球南北两极和地球中心的
假想线),在地球中腰画一个与地轴垂直的大圆圈,使圈上的每一点都和南北两极的距离相等,这个圆圈
就叫作“赤道”。在赤道的南北两边,画出许多和赤道平行的圆圈,就是“纬圈”;构成这些圆圈的线段,
叫做纬线。我们把赤道定为纬度零度,向南向北各为90度,在赤道以南的叫南纬,在赤道以北的叫北纬。
北极就是北纬90度,南极就是南纬90度。纬度的高低也标志着气候的冷热,如赤道和低纬度地地区无冬,
两极和高纬度地区无夏,中纬度地区四季分明。
其次,从北极点到南极点,可以画出许多南北方向的与地球赤道垂直的大圆圈,这叫作“经圈”;构成这
些圆圈的线段,就叫经线。公元1884平面坐标图年,国际上规定以通过英国伦敦近郊的格林尼治天文台的
经线作为计算经度的起点,即经度零度零分零秒,也称“本初子午线”。在它东面的为东经,共180度;
在它西面的为西经,共180度。因为地球是圆的,所以东经180度和西经180度的经线是同一条经线。各国
公定180度经线为“国际日期变更线”。为了避免同一地区使用两个不同的日期,国际日期变线在遇陆地时
略有偏离。
  每一经度和纬度还可以再细分为60分,每一分再分为60秒以及秒的小数。利用经纬线,我们就可以确定
地球上每一个地方的具体位置,并且把它在地图或地球仪上表示出来。例如问北京的经纬度是多少?我们
很容易从地图上查出来是东经116度24分,北纬39度54分。在大海中航行的船只,只要把所在地的经度测
出来,就可以确定船在海洋中的位置和前进方向。 纬度共有90度。赤道为0度,向两极排列,圈子越小,
度数越大。
横线是纬度,竖线是经度。
当然可以计算,四元二次方程。
经度和纬度都是一种角度。经度是个两面角,是两个经线平面的夹角。因所有经线都是一样长,为了度量
经度选取一个起点面,经1884年国际会议协商,决定以通过英国伦敦近郊、泰晤士河南岸的格林尼治皇家
天文台(旧址)的一台主要子午仪十字丝的那条经线为起始经线,称为本初子午线。本初子午线平面是起
点面,终点面是本地经线平面。某一点的经度,就是该点所在的经线平面与本初子午线平面间的夹角。在
赤道上度量,自本初子午线平面作为起点面,分别往东往西度量,往东量值称为东经度,往西量值称为西
经度。由此可见,一地的经度是该地对于本初子午线的方向和角距离。本初子午线是0°经度,东经度的最
大值为180°,西经度的最大值为180°,东、西经180°经线是同一根经线,因此不分东经或西经,而统称
180°经线。
  纬度是个线面角。起点面是赤道平面,线是本地的地面法线。所谓法线,即垂直于参考扁球体表面的线。
某地的纬度就是该地的法线与赤道平面之间的夹角。纬度在本地经线上度量,由赤道向南、北度量,向北
量值称为北纬度,向南量值称为南纬度。由此可见,一地的纬度是该地对于赤道的方向和角距离。赤道是
0°纬线,北纬度的最大值为90°,即北极点;南纬度的最大值为90°,即南极点。
经纬度互换

度(DDD):E 108.90593度    N 34.21630度

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

   同样将度分秒(DMS):东经E 108度54分22.2秒 换算成度(DDD)的方法如下:108度54分22.2秒=108+(54/60)+(22.2/3600)=108.90616度

因为计算时小数位保留的原因,导致正反计算存在一定误差,但误差影响不是很大。1秒的误差就是几米的样子。GPS车友可以用上述方法换算成自己需要的单位坐标。





经纬度换算成米

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

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

根据地球上任意两点的经纬度计算两点间的距离

地球是一个近乎标准的椭球体,它的赤道半径为6378.140千米,极半径为 6356.755千米,平均半径6371.004千米。如果我们假设地球是一个完美的球体,那么它的半径就是地球的平均半径,记为R。如果以0度经线为基 准,那么根据地球表面任意两点的经纬度就可以计算出这两点间的地表距离(这里忽略地球表面地形对计算带来的误差,仅仅是理论上的估算值)。设第一点A的经 纬度为(LonA, LatA),第二点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

这里,R和Distance单位是相同,如果是采用6371.004千米作为半径,那么Distance就是千米为单位,如果要使用其他单位,比如mile,还需要做单位换算,1千米=0.621371192mile

如果仅对经度作正负的处理,而不对纬度作90-Latitude(假设都是北半球,南半球只有澳洲具有应用意义)的处理,那么公式将是:

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

在实际应用当中,一般是通过一个个体的邮政编码来查找该邮政编码对应的地区中心的经纬度,然 后再根据这些经纬度来计算彼此的距离,从而估算出某些群体之间的大致距离范围(比如酒店旅客的分布范围-各个旅客的邮政编码对应的经纬度和酒店的经纬度所 计算的距离范围-等等),所以,通过邮政编码查询经纬度这样一个数据库是一个很有用的资源。


JAVA代码如下:
package com.qin20140125spatial;

public class CompuDistance {
	
	 
		 
		 
		  private static final double EARTH_RADIUS = 6378.137;
		  private static double rad(double d)
		  {
		     return d * Math.PI / 180.0;
		  }
		 /**
		  * ????}?????????????/γ???
		  * @param lat1
		  * @param lng1
		  * @param lat2
		  * @param lng2
		  * @return
		  */
		  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;
		  }
		  public static double D_jw(double wd1,double jd1,double wd2,double jd2)
		  {
		      double x,y,out;
		      double PI=3.14159265;
		      double R=6.371229*1e6;

		      x=(jd2-jd1)*PI*R*Math.cos( ((wd1+wd2)/2) *PI/180)/180;
		      y=(wd2-wd1)*PI*R/180;
		      out=Math.hypot(x,y);
		      return out/1000;
		  }

		 public static void main(String args[]){
		  //31.1795100,121.3944810
		  System.out.println(CompuDistance.D_jw(31.192609,121.431577,31.1822952,121.4314814));
		  }
		 

}

分享到:
评论

相关推荐

    电子-根据两点经纬度计算距离.doc

    "电子-根据两点经纬度计算距离.doc" 根据两点经纬度计算距离是基于地球坐标系的概念。地球坐标系是由经度和纬度组成的。经度是指从本初子午线到某点的水平角距离,纬度是指某点与地球赤道面的夹角。 在地球坐标系...

    java根据两点经纬度计算距离

    6. 文件处理:在“两点经纬度计算距离-输入地址得到经纬度”这个文件中,可能包含了将地址转换为经纬度的逻辑。这通常涉及调用地图API的地理编码服务,将街道地址解析为对应的经纬度坐标。 总之,从给定的标题和...

    两点经纬度计算距离.xlsx

    已知两点经纬度,自动计算距离。在表格分别输入两点的经度、纬度,即可计算出这两个点之间的距离长度。已知两点经纬度,自动计算距离。在表格分别输入两点的经度、纬度,即可计算出这两个点之间的距离长度。

    经纬度计算距离,经纬度计算距离公式,matlab

    在IT领域,尤其是在地理信息系统(GIS)和导航应用中,经纬度计算距离是一个常见的需求。经纬度是地球坐标系统中的两个参数,分别表示地球表面某点的经度和纬度,用于精确定位地理位置。本篇文章将深入探讨如何利用...

    经纬度计算距离经纬度计算距离工具

    在IT行业中,经纬度计算距离是一项基础而重要的任务,尤其在地理信息系统(GIS)领域。经纬度是地球表面位置的坐标表示方式,其中经度表示东西方向的位置,纬度表示南北方向的位置。本篇将详细讲解如何利用这些信息...

    gps两点经纬度计算距离和方向角

    通过两点经纬度坐标,得到两点的距离和角度。进行高斯转化。

    sqlserver根据经纬度计算两点间距离

    sqlserver根据经纬度计算两点间距离sqlserver根据经纬度计算两点间距离sqlserver根据经纬度计算两点间距离sqlserver根据经纬度计算两点间距离

    批量根据经纬度计算距离

    这个“批量根据经纬度计算距离”的项目就是这样一个实例,它涉及到地理坐标系统、经纬度的转换以及地球表面的距离计算。以下是对这个主题的详细说明: 1. **地理坐标系统**:地球被划分为一个网格系统,称为地理...

    两点经纬度计算距离工具

    这个"两点经纬度计算距离工具"就是专为此目的设计的。这个小工具可以帮助用户快速、准确地计算地球上任意两个地理位置之间的直线距离。下面将详细解释相关知识点。 1. **经纬度系统**:地球被划分为经度和纬度网格...

    由两点经纬度计算距离-arcgis server C#

    ### 由两点经纬度计算距离-arcgis server C# #### 概述 在地理信息系统(GIS)领域,经常需要计算两个地理位置之间的距离。这在地图导航、路径规划、位置服务等场景中尤为重要。ArcGIS Server作为一款强大的GIS...

    根据两点经纬度求距离

    根据两点经纬度求距离

    通过两点的经纬度信息计算距离及相对方位角(正北角)

    在这里,我们将深入探讨如何根据两点的经纬度信息计算距离和真北角。 首先,我们来理解经纬度的基本概念。地球被假想地分为360度的经线和纬线网络,经线是从本初子午线(0°经线)向东西两侧延伸的半圆,而纬线是与...

    根据定位经纬度计算距离.txt

    ### 经纬度计算距离 在地理信息系统(GIS)领域,计算两个地理位置之间的距离是一项基本且重要的任务。本文档提供了一种使用SQL编程语言在Oracle数据库中实现经纬度距离计算的方法。具体而言,文档中提供了两个函数...

    已知两点经纬度,求距离和方位

    本文将详细介绍如何在Qt环境中,结合C和C++,计算已知两点经纬度的距离和方位。 首先,我们需要了解地理坐标系统的基本概念。在地球表面,我们使用经纬度来定位位置。经度是东西方向的度量,以本初子午线(通过英国...

    根据经纬度计算两点之间的距离

    根据经纬度计算两点之间的距离,传输过来坐标点,直接计算两点之间的距离

    经纬度计算距离、方位角等java源码

    在IT行业中,尤其是在地理信息系统(GIS)或者地图应用开发中,计算地球上两点之间的距离和方位角是一项基础且重要的任务。本篇文章将详细讲解如何利用Java编程语言实现这一功能,主要基于给定的"经纬度计算"标签...

    WGS84坐标下根据经纬度计算两点之间的距离

    通过这些经纬度值,可以计算出地球上两点间的距离。通常,这种距离计算基于球面三角学原理,利用地球的平均半径来近似计算两点间的大圆弧长度。 #### 三、计算公式详解 在给定的部分内容中,提供了一个计算两点间...

    根据经纬度计算距离 程序

    在IT领域,根据经纬度计算距离是一个常见的地理信息系统(GIS)问题,主要应用于导航、位置服务、地图应用等。这个程序的功能是通过输入两个地点的经纬度坐标,得出它们之间的直线距离,通常以米为单位。以下是关于...

    已知2点经纬度计算相对方位及距离

    已知A,B点的经度、纬度、高度,计算A相对于B的北向方位及距离,或者计算B相对于A的北向方位及距离。如果有高度,利用距离和高度再算出俯仰角

    通过两点经纬度,计算他们之间的距离 - JAVA

    在JAVA编程中,计算两点经纬度之间的距离是一个常见的地理计算任务,主要应用于地图应用、导航系统或者地理位置服务等。这个任务通常使用哈弗辛公式(Haversine formula)来实现,该公式基于球面三角学,可以计算...

Global site tag (gtag.js) - Google Analytics