matlab算经纬度的距离,【447】两经纬度点之间的距离计算(经纬度网格面积)

一、两个经纬度点之间的距离

07e4cedb93398e0df803c712e9633ab3.png

$phi_1$,$phi_2$是纬度,$lambda_1$,$lambda_2$是经度。均是弧度制数值

ArcGIS Python 实现

2 * 6372 * math.asin(math.sqrt(math.sin((math.radians( !CENTROID_Y! )-math.radians( !Avg_co_lat! ))/2 )**2 + math.cos(math.radians( !CENTROID_Y! ) ) * math.cos(math.radians( !Avg_co_lat! ) ) * math.sin((math.radians( !CENTROID_X! )-math.radians( !Avg_co_lon! ))/2 )**2 ) )

python 实现:

from math import radians, cos, sin, asin, sqrt

def distance(lon1, lat1, lon2, lat2):

lon1, lat1, lon2, lat2 = map(radians, [lon1, lat1, lon2, lat2])

# haversine function

dlon = lon2 - lon1

dlat = lat2 - lat1

a = sin(dlat/2)**2 + cos(lat1) * cos(lat2) * sin(dlon/2)**2

c = 2 * asin(sqrt(a))

r = 6372 # ratio of earch, km

return c * r # km

二、经纬度网格的面积计算

04805645361a5c4c000425cecbe1335d.png

$phi_1$,$phi_2$是纬度,$lambda_1$,$lambda_2$是经度。 均是弧度制数值

python 实现

from math import radians, sin

def area(lon1, lat1, lon2, lat2):

lon1, lat1, lon2, lat2 = map(radians, [lon1, lat1, lon2, lat2])

r = 6372

return abs(r**2 * (lon2 - lon1) * (sin(lat2) - sin(lat1)))

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值