zoukankan      html  css  js  c++  java
  • 【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?

  • 相关阅读:
    twemproxy配置
    tomcat远程调试
    hadoop配置
    kafka原理分析
    hive-sql
    P1983 车站分级
    拓扑排序
    洛谷P1982 小朋友的数字
    字典树Trie
    城市交通费
  • 原文地址:https://www.cnblogs.com/alex-bn-lee/p/11812325.html
Copyright © 2011-2022 走看看