经纬度距离公式
- 格式:doc
- 大小:80.00 KB
- 文档页数:2
两点经纬度计算距离20240305计算两点间的经纬度距离是常见的地理问题,也被称为大圆距离。
以下是计算两点经纬度距离的详细步骤。
1.球面三角学公式计算两个点之间的经纬度距离要使用球面三角学公式,其中最常用的公式是“Haversine公式”。
该公式基于半球体的高级三角函数,通过使用半球体表面上两点之间的弧长来计算距离。
Haversine公式:a = sin²(Δφ/2) + cos φ1 * cos φ2 * sin²(Δλ/2)c = 2 * atan2( √a, √(1−a) )d=R*c其中-φ1,λ1:第一个点的纬度和经度-φ2,λ2:第二个点的纬度和经度-Δφ=φ2-φ1-Δλ=λ2-λ1-d:两点之间的距离-R:地球的半径(通常为6371公里或3959英里)2.具体步骤根据上述公式,我们可以按照以下步骤计算两点间的经纬度距离:- 将经纬度从度(degree)转换为弧度(radian)。
- 使用Haversine公式计算a。
-计算c。
-计算d。
3.代码示例下面是一段用Python编写的示例代码,用于计算两点经纬度距离:```pythonfrom math import radians, sin, cos, sqrt, atan2def distance(lat1, lon1, lat2, lon2):# Convert degrees to radianslat1 = radians(lat1)lon1 = radians(lon1)lat2 = radians(lat2)lon2 = radians(lon2)# Haversine formuladelta_lat = lat2 - lat1delta_lon = lon2 - lon1a = sin(delta_lat / 2) ** 2 + cos(lat1) * cos(lat2) * sin(delta_lon / 2) ** 2c = 2 * atan2(sqrt(a), sqrt(1 - a))# Earth radius in kilometersR=6371# Calculate distancedistance = R * creturn distance```4.示例运行接下来,我们可以使用上述函数计算两个经纬度点之间的距离:```python#经纬度点1lat1 = 40.7128lon1 = -74.0060#经纬度点2lat2 = 34.0522lon2 = -118.2437#计算距离dist = distance(lat1, lon1, lat2, lon2)#输出结果print("两点之间的距离为", dist, "千米")```在上面的示例中,我们计算了纽约市和洛杉矶之间的距离,并获得了大约3949.59千米的结果。
两个经纬度之间直线距离公式
《两个经纬度之间直线距离公式》是计算两个经纬度之间直线距离的公式,它可以用来求解两地之间的实际距离。
它的基本公式是:
距离= arccos(sinφ1*sinφ2 + cosφ1*cosφ2*cos(λ1-λ2)) * R
其中,φ1、φ2分别表示两个经纬度的纬度值,λ1、λ2分别表示两个经纬度的经度值,R 表示地球半径,单位是千米。
这个公式可以用来计算两个地点之间的实际距离,而不是它们之间的直线距离。
它的优点是简单易用,可以计算出两地之间的实际距离,但它的缺点是不能计算出两地之间的实际行驶时间。
《两个经纬度之间直线距离公式》是一种简单易用的计算两个地点的实际距离的公式,它可以帮助我们更好地计算出两地之间的实际距离,从而更好地规划出行程。
84经纬度距离计算公式经度和纬度可以用球面坐标系来表示,因此距离计算可以采用大圆距离公式(Haversine公式),其计算公式为:d = 2 * R * arcsin(sqrt(sin²((lat₂-lat₁)/2) +cos(lat₁) * cos(lat₂) * sin²((lon₂-lon₁)/2)))其中,d表示两个点之间的距离,lat₁和lon₁表示第一个点的纬度和经度,lat₂和lon₂表示第二个点的纬度和经度。
R表示地球的平均半径,取值为6371公里。
该公式可以用多种编程语言实现,如Python:import mathR = 6371.0 # 地球平均半径,单位为千米def distance(lat1, lon1, lat2, lon2):lat1_r = math.radians(lat1)lon1_r = math.radians(lon1)lat2_r = math.radians(lat2)lon2_r = math.radians(lon2)d_lat = lat2_r - lat1_rd_lon = lon2_r - lon1_ra = math.sin(d_lat/2)**2 + math.cos(lat1_r) *math.cos(lat2_r) * math.sin(d_lon/2)**2c = 2 * math.atan2(math.sqrt(a), math.sqrt(1-a))return R * c# 示例lat1, lon1 = 39.9087, 116.3975 # 北京天安门lat2, lon2 = 31.2304, 121.4737 # 上海外滩d = distance(lat1, lon1, lat2, lon2)print(d) # 输出约为1068.941千米。
两个经纬度之间的距离计算公式excel计算两个经纬度之间的距离可以使用"球面余弦定理"。
在Excel 中,可以使用以下公式计算两点之间的距离:Copy code=ACOS(COS(lat1)*COS(long1)*COS(lat2)*COS(long2) + COS(lat1)*SIN(long1)*COS(lat2)*SIN(long2) + SIN(lat1)*SIN(lat2)) * R其中:lat1, long1 是第一个点的纬度和经度(以弧度为单位)lat2, long2 是第二个点的纬度和经度(以弧度为单位)R 是地球半径首先,我们需要把经纬度转换为弧度。
在Excel 中可以使用"RADIANS" 函数进行转换。
例如,将纬度转换为弧度的公式为:Copy code=RADIANS(lat1)经度同理。
然后在用上面给出的公式计算即可。
示例:假设第一个点纬度为A1,经度为B1;第二个点纬度为A2,经度为B2;地球半径为C1那么第一个点纬度转换为弧度的公式为=RADIANS(A1),经度同理。
最后使用公式=ACOS(COS(RADIANS(A1))*COS(RADIANS(B1))*COS(RADIANS(A2))*COS(RADIANS(B2)) + COS(RADIANS(A1))*SIN(RADIANS(B1))*COS(RADIANS(A2))*SIN(RADIANS(B2)) + SIN(RADIANS(A1))*SIN(RADIANS(A2))) * C1 即可计算出两个点之间的距离。
请注意,这个公式的结果是以千米为单位的距离。
如果需要米为单位的距离,可以将地球半径设置为6371即可。
请注意,由于经纬度是按照地球球面来计算的,所以这个公式只能用于近似计算地球上两点之间的距离,如果需要精确计算,可能需要使用其他方法。
计算两经纬度之间的距离的公式在地理学中,经度和纬度是用来描述地球表面位置的两个重要参数。
经度是指从地球中心到地球表面某一点的线段与本初子午线的夹角,通常用度数来表示;纬度是指从地球中心到地球表面某一点的线段与赤道面的夹角,也通常用度数来表示。
在实际应用中,我们经常需要计算两个地点之间的距离,这时就需要用到计算两经纬度之间的距离的公式。
计算两经纬度之间的距离的公式是基于球面三角学的原理,其基本思想是将地球看作一个球体,然后通过计算球面上两点之间的弧长来确定它们之间的距离。
这个公式的具体形式如下:d = R * arccos(sin(lat1) * sin(lat2) + cos(lat1) * cos(lat2) * cos(lon2 - lon1))其中,d表示两点之间的距离,R表示地球的半径,lat1和lat2分别表示两点的纬度,lon1和lon2分别表示两点的经度。
需要注意的是,这个公式中的经纬度需要用弧度来表示,而不是度数。
因此,在计算之前需要将经纬度转换为弧度。
在实际应用中,我们可以使用各种编程语言来实现这个公式,例如Python、Java、C++等。
下面是一个使用Python实现计算两经纬度之间距离的示例代码:import mathdef distance(lat1, lon1, lat2, lon2):R = 6371 # 地球半径,单位为千米lat1, lon1, lat2, lon2 = map(math.radians, [lat1, lon1, lat2, lon2])dlat = lat2 - lat1dlon = lon2 - lon1a = math.sin(dlat / 2) ** 2 + math.cos(lat1) * math.cos(lat2) * math.sin(dlon / 2) ** 2c = 2 * math.atan2(math.sqrt(a), math.sqrt(1 - a))d = R * creturn d# 示例lat1, lon1 = 39.9, 116.3 # 北京的经纬度lat2, lon2 = 31.2, 121.5 # 上海的经纬度print(distance(lat1, lon1, lat2, lon2)) # 输出北京和上海之间的距离,单位为千米通过这个示例代码,我们可以很方便地计算出两个地点之间的距离。
地球上两点的经纬度计算他们距离的公式一、球面余弦定理球面余弦定理是一种常用的计算地球上两点距离的公式。
它基于球面三角形的余弦定理,公式如下:d = R * arccos(sin(lat1) * sin(lat2) + cos(lat1) * cos(lat2) * cos(lon2 - lon1))其中,d表示两点之间的距离,R表示地球的半径,而lat1、lat2、lon1和lon2分别表示两点的纬度和经度。
在计算中,经纬度应以弧度为单位。
如果给定的经纬度是度数,可以先将其转化为弧度再代入公式中计算。
二、哈弗斯因子公式哈弗斯因子公式也是一种常用的计算地球上两点距离的公式。
它基于海伦公式,公式如下:d = 2 * R * arcsin(√(sin((lat2 - lat1) / 2)² + cos(lat1) * cos(lat2) * sin((lon2 - lon1) / 2)²))其中,d表示两点之间的距离,R表示地球的半径,而lat1、lat2、lon1和lon2分别表示两点的纬度和经度。
在计算中,经纬度应以弧度为单位。
如果给定的经纬度是度数,可以先将其转化为弧度再代入公式中计算。
可以看到,球面余弦公式和哈弗斯因子公式在计算方式上有一些差异。
球面余弦公式更容易计算,因为它不需要计算所有角度的正弦函数值,只需要计算两个角度的正弦函数值并进行一些乘法和加法运算。
相比之下,哈弗斯因子公式需要计算所有角度的正弦函数值,计算量稍大一些。
无论是使用球面余弦公式还是哈弗斯因子公式,都需要注意地球的半径值。
地球的半径并不是一个精确的常数,因为地球的形状是复杂的。
在实际计算中,可以根据所需要的精度选择合适的地球半径值,一般情况下选择平均半径值进行计算即可。
除了上述公式之外,还可以使用其他更复杂的公式来计算地球上两点的距离。
例如,Vincenty公式和Haversine公式等都是比较常用的计算地球上两点距离的公式。
怎么用经纬度计算两地之间的距离经纬度是地球上一点的坐标表示方法,可以用来计算两个点之间的距离。
计算两地之间的距离可以使用多种方法,包括球面距离公式、大圆航线距离和Vincenty算法等。
下面将详细介绍这些方法。
1.球面距离公式球面距离公式是最简单且最常用的计算两点之间距离的方法。
它基于球面三角形的边长计算两点之间的距离,如下所示:d = R * arccos(sin(lat1) * sin(lat2) + cos(lat1) * cos(lat2) * cos(lon2 - lon1))其中,d是两点之间的球面距离,R是地球的平均半径,lat1和lat2是两点的纬度,lon1和lon2是两点的经度。
2.大圆航线距离大圆航线距离是计算两点之间最短距离的方法,它基于地球表面上连接两点的最短弧线,如下所示:d = R * arccos(sin(lat1) * sin(lat2) + cos(lat1) * cos(lat2) * cos(lon2 - lon1))其中,d是两点之间的大圆航线距离,R是地球的半径,lat1和lat2是两点的纬度,lon1和lon2是两点的经度。
3. Vincenty算法Vincenty算法是一种更精确的计算两点之间距离的方法,它基于椭球体模型而不是简单地球模型。
该算法能够考虑地球形状的扁平化,并且适用于短距离和长距离的计算。
具体实现需要迭代计算,公式略显繁琐,如下所示:a=R1,b=R2,f=(a-b)/aL = L2 - L1, U1 = atan((1 - f) * tan(lat1)), U2 = atan((1 - f) * tan(lat2))sinU1 = sin(U1), cosU1 = cos(U1), sinU2 = sin(U2), cosU2 = cos(U2)λ=L,λʹ=2πwhile (,λ - λʹ, > 10e-12):sinλ = sin(λ), cosλ = cos(λ), sinσ = sqrt((cosU2 *sinλ) * (cosU2 * sinλ) + (cosU1 * sinU2 - sinU1 * cosU2 *cosλ) * (cosU1 * sinU2 - sinU1 * cosU2 * cosλ))cosσ = sinU1 * sinU2 + cosU1 * cosU2 * cosλσ = atan2(sinσ, cosσ)sinα = cosU1 * cosU2 * sinλ / sinσcos²α = 1 - sinα * sinαcos2σm = cosσ - 2 * sinU1 * sinU2 / cos²αC = f / 16 * cos²α * (4 + f * (4 - 3 * cos²α))λʹ=λλ = L + (1 - C) * f * sinα * (σ + C * sinσ * (cos2σm + C * cosσ * (-1 + 2 * cos2σm * cos2σm)))u² = cos²α * (a*a - b*b) / (b*b)B=u²/1024*(256+u²*(-128+u²*(74-47*u²)))Δσ = B / 6 * (cosσ * (-1 + 2 * cos2σm * cos2σm) - B / 4 * (cos2σm * (-3 + 4 * sinσ * sinσ) - B / 6 * cosσ * (-3 + 4 * cos2σm * cos2σm) * (-3 + 4 * sinσ * sinσ)))s=b*A*(σ-Δσ)其中,a和b是地球的长半轴和短半轴,f是扁平度参数,R1和R2是两点的曲率半径,L1和L2是两点的经度差,lat1和lat2是两点的纬度。
根据经纬度计算地理距离的公式地理距离是根据地球上两点的经纬度坐标计算出来的,它是衡量两点之间实际距离的一种方法。
而计算地理距离的公式则是基于大圆距离计算的,也被称为球面距离公式。
公式的推导过程比较繁琐,这里我们只介绍最常用的球面距离公式,即Haversine公式。
Haversine公式可以计算两个经纬度坐标之间的地理距离,它的公式如下:d = 2 * r * arcsin(sqrt(sin²((lat2 - lat1)/2) + cos(lat1) * cos(lat2) * sin²((lon2 - lon1)/2)))其中,d为地理距离,r为地球平均半径,lat1和lon1为第一个点的纬度和经度,lat2和lon2为第二个点的纬度和经度。
1. Haversine公式的原理Haversine公式的原理基于大圆距离的概念,即地球上两点之间的最短距离是它们所在大圆弧的长度。
在球面上,大圆弧可以看作是两点之间的弧线,而球面距离就是沿着这条弧线的长度。
2. Haversine公式的应用Haversine公式广泛应用于地理信息系统、导航系统和航空航海等领域。
通过输入两个经纬度坐标,可以计算出它们之间的地理距离。
这在实际生活中有很多应用,比如导航系统可以根据用户当前位置和目的地位置计算出最短路径。
3. Haversine公式的计算步骤为了使用Haversine公式计算地理距离,我们可以按照以下步骤进行:- 将经纬度坐标转换为弧度制,因为Haversine公式中的三角函数需要用弧度来计算;- 根据公式计算出lat1、lon1、lat2、lon2之间的差值(单位为弧度);- 代入公式计算出地理距离d,单位与地球半径r相同。
4. 公式的局限性需要注意的是,Haversine公式只能计算地理距离,不考虑地貌因素和实际路径的可行性。
在实际应用中,还需要考虑道路、地形等因素,以确定真正的最短路径。
经纬度距离公式在地理定位和导航系统中,经纬度是一种常用的表示地球上位置的方式。
经度表示地点相对于本初子午线的东西方向偏移量,纬度表示地点相对于赤道的南北方向偏移量。
经纬度的值可以通过全球定位系统(GPS)或其他地理信息工具获得。
为了计算两个地点之间的距离,我们可以使用经纬度距离公式。
这个公式基于大圆上两点之间的弧长来计算距离。
这种距离通常被称为“大圆距离”或“球面距离”。
Haversine公式最常用的经纬度距离公式是Haversine公式。
这个公式基于球面三角学,通过考虑地球的曲率来计算两个地点之间的距离。
Haversine公式的数学表示如下:a = sin²(Δφ/2) + cos(φ₁) * cos(φ₂) * sin²(Δλ/2)c = 2 * atan2(√a, √(1−a))d = R * c其中:•φ₁和φ₂表示两个地点的纬度•Δφ表示两个地点纬度之间的差值•Δλ表示两个地点经度之间的差值•R是地球的半径(常用值为6371公里或3959英里)•d表示两个地点之间的距离(单位与地球半径的单位一致)示例让我们看一个使用Haversine公式计算经纬度之间距离的示例。
假设有两个地点A和B,其经纬度分别为:•A: 纬度 40.7128°N,经度 74.0060°W•B: 纬度 34.0522°N,经度 118.2437°W首先,我们需要将角度转换为弧度形式,因为Haversine公式中使用的是弧度。
角度转弧度可以通过以下公式完成:radians = degrees * π / 180使用上述公式,我们可以将地点A和B的经纬度转换为弧度:•A: 纬度 0.7090 rad,经度 -1.2915 rad•B: 纬度 0.5940 rad,经度 -2.0622 rad接下来,我们可以根据Haversine公式计算两个地点之间的距离:a = sin²(0.5940/2 - 0.7090/2) + cos(0.7090) * cos(0.5940) * sin²(-2. 0622/2 - (-1.2915)/2)c = 2 * atan2(√a, √(1−a))d = 6371 * c计算得出的结果为约 3935.14 公里。
经纬度坐标算距离公式引言在地理信息系统(GIS)和地理定位领域中,经纬度坐标是一种常用的表示位置信息的方式。
经度表示地球上一个点相对于本初子午线的东西向位置,而纬度表示地球上一个点相对于赤道的南北位置。
对于给定的两个经纬度坐标,我们经常需要计算它们之间的距离,以便准确地估计两个点之间的实际物理距离。
本文将介绍经纬度坐标算距离的常用公式以及其应用。
球面上两点距离地球不是一个完美的球体,但在一些场景下,可以将地球近似看作一个球面。
在球面上,我们可以使用球面距离公式来计算两个点之间的直线距离。
给定两个点A和B的经纬度坐标,我们可以使用以下公式来计算它们之间的球面距离:distance = R * arccos(sin(latA)*sin(latB) + cos(latA)*cos(latB)*cos (lonB-lonA))其中,R代表地球的平均半径,latA和latB分别代表A和B的纬度,lonA和lonB分别代表A和B的经度。
这是一个简化的公式,假设地球是一个完全的球体。
实际应用中,为了更准确地计算距离,可以采用更复杂的椭球面模型。
应用举例现在我们假设有两个城市A和B,它们的经纬度坐标分别为A(纬度: 39.92, 经度: 116.46)和B(纬度: 31.23, 经度: 121.47)。
我们可以使用上述球面距离公式来计算它们之间的距离。
首先,我们需要将角度转换为弧度,因为三角函数的输入是弧度。
然后,我们带入公式计算距离:import mathlatA =39.92lonA =116.46latB =31.23lonB =121.47# 将角度转换为弧度latA_rad = math.radians(latA)lonA_rad = math.radians(lonA)latB_rad = math.radians(latB)lonB_rad = math.radians(lonB)R =6371# 地球的平均半径,单位为千米# 计算球面距离distance = R * math.acos(math.sin(latA_rad)*math.sin(latB_rad) + math.c os(latA_rad)*math.cos(latB_rad)*math.cos(lonB_rad-lonA_rad))在这个例子中,我们假设地球的平均半径为6371千米。
计算两个经纬度坐标之间的距离椭球计算地球上两个经纬度坐标之间的距离可以使用大圆距离公式或者Haversine公式。
这些公式基于地球是一个椭球体这一前提。
下面是使用Haversine公式来计算两个经纬度坐标之间距离的步骤:
1. 将经纬度从度数转换为弧度数。
弧度 = 度数 * π / 180。
2. 使用Haversine公式计算两个经纬度之间的距离:
a = sin²((lat₂-lat₁)/2) + cos(lat₁) * cos(lat₂) * sin²((lon₂-lon ₁)/2)
c = 2 * atan2(√(a), √(1-a))
distance = R * c
其中,`lat₁`和`lon₁`是第一个位置的纬度和经度,`lat₂`和`lon₂`是第二个位置的纬度和经度,`R`为地球半径(一般取6371公里)。
3. 根据Haversine公式计算出的`distance`即为两个经纬度坐标之间的距离。
请注意,这只是一种近似计算方法,不考虑地球表面的形状和海拔高度的影响。
真实的地球形状是不规则的,距离可能会有一些偏差。
在实际应用中,如果需要更精确的结果,可以使用更复杂的算法或考虑到地球椭球体的形状。
根据两点经纬度计算距离在地理学中,计算两点之间的距离通常使用经纬度坐标系。
经度用来表示东西方向的位置,纬度用来表示南北方向的位置。
经度的范围是-180°至180°,纬度的范围是-90°至90°。
计算两点经纬度之间的距离需要使用球面三角法,其中最常用的方法是Haversine公式。
Haversine公式基于大圆距离的概念,即地球上两点之间的最短路径是一条大圆弧。
Haversine公式如下:d = 2r * arcsin(sqrt(sin^2((lat2-lat1)/2) + cos(lat1) *cos(lat2) * sin^2((lon2-lon1)/2)))其中,d表示两点之间的距离,r表示地球半径(一般取平均半径约为6371 km),lat1和lat2分别表示两点的纬度,lon1和lon2分别表示两点的经度。
以下是一个使用Python编写的根据经纬度计算距离的示例代码:```import mathdef calculate_distance(lat1, lon1, lat2, lon2):r = 6371 # 地球半径,单位kmlat1_rad = math.radians(lat1)lon1_rad = math.radians(lon1)lat2_rad = math.radians(lat2)lon2_rad = math.radians(lon2)delta_lat = lat2_rad - lat1_raddelta_lon = lon2_rad - lon1_rada = math.sin(delta_lat / 2) ** 2 + math.cos(lat1_rad) * math.cos(lat2_rad) * math.sin(delta_lon / 2) ** 2c = 2 * math.atan2(math.sqrt(a), math.sqrt(1 - a))distance = r * creturn distance#示例使用lat1 = 39.9075 # 北京经纬度lon1 = 116.3972lat2 = 31.2304 # 上海经纬度lon2 = 121.4737distance = calculate_distance(lat1, lon1, lat2, lon2)print(f"两点之间的距离为:{distance} km")```运行以上代码会得到以下输出:``````上述代码在计算距离时将经纬度转换为弧度,并使用Haversine公式进行计算。
方法1:由于地球是椭球体,这个太难算了,如果假设地球是球体,可以使用以下公式:设地球上某点的经度为A,纬度为B,则这点的空间坐标是 x=cos(B)*cos(A) y =cos(B)*sin(A) z=sin(B) 设地球上两点的空间坐标分别为(x1,y1,z1),(x2,y2,z2)则它们的夹角为 C=acos(x1*x2+y1*y2+z1*z2),C是角度则两地距离为 C/180*pi* R,其中R为地球平均半径6371 误差不超过1%地球是一个近乎标准的椭球体,它的赤道半径为6378.140千米,极半径为 6356.75 5千米,平均半径6371.004千米。
如果我们假设地球是一个完美的球体,那么它的半径就是地球的平均半径,记为R。
如果以0度经线为基准,那么根据地球表面任意两点的经纬度就可以计算出这两点间的地表距离(这里忽略地球表面地形对计算带来的误差,仅仅是理论上的估算值)。
设第一点A的经纬度为(LonA, LatA),第二点B的经纬度为(LonB, LatB),按照0度经线的基准,东经取经度的正值(Longitude),西经取经度负值(-Longitude),北纬取90-纬度值(90- Latitude),南纬取90+纬度值(90+Latitude),则经过上述处理过后的两点被计为(MLonA, MLatA)和(MLonB, ML atB)。
那么根据三角推导,可以得到计算两点距离的如下公式:C = sin(MLatA)*sin(MLatB)*cos(MLonA-MLonB) + cos(MLatA)*cos(MLatB)Distance = R*Arccos(C)*Pi/180这里,R和Distance单位是相同,如果是采用6371.004千米作为半径,那么Dist ance就是千米为单位,如果要使用其他单位,比如mile,还需要做单位换算,1千米=0.621371192mile如果仅对经度作正负的处理,而不对纬度作90-Latitude(假设都是北半球,南半球只有澳洲具有应用意义)的处理,那么公式将是:C = sin(LatA)*sin(LatB) + cos(LatA)*cos(LatB)*cos(MLonA-MLonB)Distance = R*Arccos(C)*Pi/180以上通过简单的三角变换就可以推出。
hive 经纬度计算距离公式
Hive中经纬度计算距离的公式,通常采用Haversine公式。
该公式采用地球半径、两点之间的纬度和经度差值,计算两点之间的球面距离。
Haversine公式的公式如下:
d = 2r * arcsin(sqrt(sin^2((lat2-lat1)/2) + cos(lat1) * cos(lat2) * sin^2((lon2-lon1)/2)))
其中,d为两点之间的球面距离,r为地球半径,lat1和lon1
为第一个点的纬度和经度,lat2和lon2为第二个点的纬度和经度。
Hive中可以用UDF函数将该公式实现,如下:
CREATE FUNCTION distance(lat1 DOUBLE, lon1 DOUBLE, lat2 DOUBLE, lon2 DOUBLE)
RETURNS DOUBLE
EXTERNAL NAME
'org.apache.hadoop.hive.contrib.udf.example.GeoDistanceUDF' JAR '/path/to/hive-contrib.jar';
其中,
org.apache.hadoop.hive.contrib.udf.example.GeoDistanceUDF为自定义的UDF函数实现,该实现可以在hive-contrib.jar包中找到。
使用该UDF函数可以方便地计算两点之间的球面距离。
例如:
SELECT distance(39.9042, 116.4074, 31.2304, 121.4737) AS distance_km;
则返回值为约1066.09公里,即北京和上海之间的球面距离。
纬度长短不一样,同一经线上纬度相差1度距离约为111千米
经纬度在不同地区,每度距离差是不同的,如果假定地球是完美的球体(这样假设误差不是很大)的话,纬度为B 的地区:
纬度变化一度,球面南北方向距离变化:πR/180 ........111.7km
经度变化一度,球面东西方向距离变化:πR/180*cosB ....111.7*cosB
比如北京 B = 40、cosB = 0.766,经度变化1度,则东西方向距离变化85.567km
首先,我们平常所用的经纬度是建立在地球为椭圆体上的,所以在不同的经线圈上纬度1秒相差不多的,但在不同的纬度圈上1秒经度相差还是很多的。
要注意这点。
1秒纬度差不多30.8米,但1秒经度长在不同的纬度不一样,在赤道上1秒经度长为30.8米,但在不同的纬度上为30.8×cos纬度(米)。
已知地图上两点的经纬度如何计算距离地球赤道上环绕地球一周走一圈共40075.04公里而一圈分成360°而每1°(度)有60'每一度一秒在赤道上的长度计算如下:40075.04km/360°=111.31955km111.31955km/60'=1.8553258km=1855.3m而每一分又有60秒每一秒就代表1855.3m/60=30.92m任意两点距离计算公式为d=111.12cos{1/[sinΦAsinΦB十cosΦAcosΦBcos(λB—λA)]}其中:A点经度,纬度分别为λA和ΦAB点的经度、纬度分别为λB和ΦB,d为距离我又来补充了;在经纬网图上,可以根据经纬度量算两点之间的距离。
全球各地纬度1°的间隔长度都相等(因为所有经线的长度都相等),大约是111km/1°。
赤道上经度1°对应在地面上的弧长大约也是111km。
由于各纬线从赤道向两极递减,60°纬线上的长度为赤道上的一半,所以在各纬线上经度差1°的弧长就不相等。
在同一条纬线上(假设此纬线的纬度为α)经度1°对应的实际弧长大约为111cosαkm。
因此,只要知道了任意两地间的纬度差,或者是赤道上任何两地的经度差,就可以计算它们之间的实际距离。
两地间最近距离的判断:若两地经度差等于180o,则过两地的大圆为经线圈,两地最近距离为大圆中过两极点的劣弧;若两地经度差不等于180o,则过两地的大圆不是经线圈,而与经线圈斜交,两地最近距离不过极点,而是过两极地区。
你可以去这个网站看看关于计算经纬度的软件不知道是不是真的希望可以帮上你忙:/Soft/kjsc/200601/97.html/200604/93855.htm。
地球表面两点间距离公式
陕西省榆林市第二实验中学 艾东宁
摘要:本文用几何的方法得出地球表面两点间距离公式。这是地理中的一个基本公式,在许
多方面都有应用。
关键词:球面 距离 经纬度 圆心角
已知地球表面两点A),(11jw、B),(22jw,
求两点间球面距离。(w为纬度,j为经度。)
解
: 如图。
a、 b为A、B两点所在的经线平面,l为地
轴,MO、
NO为赤道平面与此二面角的交线,O为地心,
地球半径
为R。
过A作AC⊥l,过C作DC⊥l,BD∥l。
在△ACD中,
AC=1coswR
DC=2coswR
∠ACB=21jj
据余弦定理可得:
22212)cos()cos(wRwRAD)cos(coscos221212
jjwwR
又21sinsinwRwRBEDEDB
因△ABD为Rt△,
故222DBADAB
2AB22R
)cos(coscos221212jjwwR212sinsin2wwR
在△AOB中,知道AB,且AO=BO=R。设∠AOB=
由余弦定理可得:cos212121sinsin)cos(coscoswwjjww
若经度东为正、西为负、纬度北为正、南为负,则公式为:
cos
212121
sinsin)cos(coscoswwjjww
arccos
〔212121sinsin)cos(coscoswwjjww〕
为A、B两点所成的球心角。
A、B两点的球面距离即过A、B两点的大圆的劣弧,即:
球面距离=R2360
当21jj时,21ww
距离公式的应用:
地球表面两点距离公式在交通(陆、海、空)、大地测量等方面有广泛的用途。
例:海里是航海中一个非常重要的单位。在航海上,规定地球球心角1′ 所对的大圆弧
长为1海里(就是一度所对弧长的60分之1),1海里= 1.852公里。每小时1海里的速度
叫做“1”节。海里的概念是一个极其科学的创造,有了它,就可以在地球的大圆(子午线、
赤道)上航行的时候,根据经纬度方便的计算里程和航行时间。
有了地球表面两点距离公式就可以计算出目的地和船只的球心角,可确定任何方向上的
大圆,方便计算里程。