`
tianyalinfeng
  • 浏览: 442423 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

根据经纬度计算两点距离

    博客分类:
  • Java
 
阅读更多

经纬度换算成米

纬度分为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

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

public class DistanceUtil {
 private static final double EARTH_RADIUS = 6378.137;

 public static double getDistance(double lng1, double lat1, double lng2,
   double lat2) {
  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.0;
  return s;
 }

 private static double rad(double d) {
  return d * Math.PI / 180.0;
 }
}

分享到:
评论

相关推荐

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

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

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

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

    根据经纬度计算距离 程序

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

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

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

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

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

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

    ### WGS84坐标系下计算两点间距离的知识点 #### 一、WGS84坐标系简介 WGS84(World Geodetic System 1984)是一种广泛应用于全球定位系统(GPS)中的地球参考框架。该坐标系采用了一个理想的地球模型——地球椭...

    根据经纬度坐标计算实际两点距离

    ### 根据经纬度坐标计算实际两点距离 在地理信息系统(GIS)开发中,经常需要进行经纬度坐标之间的距离计算。此类计算对于导航系统、地图应用等有着重要的应用价值。本篇文章将详细介绍如何通过C/C++语言实现基于...

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

    本篇将详细讲解如何利用这些信息来计算两点之间的距离。 首先,我们来看“WMM.COF”文件,这可能是世界磁模型(World Magnetic Model,简称WMM)的配置文件,用于描述地磁场的分布情况。在GPS定位和导航中,它有助...

    批量根据经纬度计算距离

    3. **Haversine公式**:批量计算距离通常会用到Haversine公式,这是一种基于球面三角学的方法,用于计算地球上两点间的最短距离(大圆距离)。Haversine公式考虑了地球的半径,通过两个点的经纬度差来计算出它们之间...

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

    为了计算两点之间的距离,我们需要了解地球坐标系的基本概念。地球坐标系是基于经度和纬度的坐标系。经度是指从本初子午线到某点的水平角距离,纬度是指某点与地球赤道面的夹角。 在计算两点之间的距离时,我们需要...

    详解js根据百度地图提供经纬度计算两点距离

    描述中重申了文章的核心内容,即通过具体的示例代码来详细说明如何用JavaScript根据给定的经纬度计算两点之间的距离。这一点对于任何需要进行地理信息系统(GIS)计算、物流配送、在线地图服务、旅行规划等应用领域...

    两点经纬度计算距离.xlsx

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

    经过两点之间经纬度计算直线距离

    经过两点之间经纬度计算直线距离,两种方法皆可用

    根据经纬度距离和方位角计算新的经纬度

    根据经纬度距离和方位角计算新的经纬度,计算经纬度两点间距离

    利用经纬度计算两点之间的距离

    为了精确计算两点间的距离,我们需要考虑地球的曲率。国际上通常采用WGS84(World Geodetic System 1984)坐标系统,这是一种全球统一的参考框架,用于定位地表的任何位置。 计算两点间距离最基础的方法是Haversine...

    用经纬度计算两点距离软件

    这个名为“用经纬度计算两点距离软件”的程序显然就是针对这一需求设计的。经纬度是一种坐标系统,用于精确地定位地球上任何位置。下面将详细解释如何使用经纬度以及计算两点距离的数学原理。 首先,我们来理解一下...

    mysql函数-根据经纬度坐标计算距离

    在二维平面上,我们可以使用余弦定理来计算两点间的欧氏距离,但在地球上,需要使用哈弗辛公式(Haversine Formula): 哈弗辛公式如下: \[ a = \sin^2\left(\frac{\Delta \phi}{2}\right) + \cos(\phi_1) \cdot \...

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

    1. **计算两点间距离**: 使用Haversine公式可以计算地球上任意两点间的直线距离(也称为大圆距离),这是基于球面三角学的。Haversine公式考虑了地球半径,并转换了经纬度的角度值。在Java代码中,这通常会涉及到...

Global site tag (gtag.js) - Google Analytics