【447】兩經緯度點之間的距離計算(經緯度網格面積)


一、兩個經緯度點之間的距離

$\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

 

二、經緯度網格的面積計算

$\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)))

 

參考:【Matlab】根據經緯度計算兩點間的球面距離

參考:經緯網格面積計算

參考:Calculating bounding box size?


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM