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

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

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

f4f0f2b7d1c106e16f3019b5fd37cb0b.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)))

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐