• combination_m_n


    def combination_2_n(l):
        n, r = len(l), []
        for i in range(0, n, 1):
            s = i + 1
            for ii in range(s, n, 1):
                r.append([l[i], l[ii]])
        return r
    
    # l1, l2 = [23, 123], [24, 124]
    def rad(d):
        return d * np.pi / 180.0
    
    
    def compute_diff(l1, l2):
        lat1, lng1 = l1
        lat2, lng2 = l2
        radLat1, radLat2 = rad(lat1), rad(lat2)
        a = radLat1 - radLat2
        b = rad(lng1) - rad(lng2)
        inner_ = math.sqrt(math.pow(math.sin(a / 2), 2) +
                           math.cos(radLat1) * math.cos(radLat2) * math.pow(math.sin(b / 2), 2))
        s = 2 * math.asin(inner_)
        s = s * 6378.137
        s = math.ceil(s * 10000) / 10000;
        return s
    
    
    # 0-设置2组经纬度距离阈值(初始值:100米);
    # 1-如果只有一组组经纬度,则直接接受;基于经纬度条数的分布数据,认为“在保证距离阈值的情况下,
    # 取距离(并列)最近的2点的经纬度的算数平均数”是可行的;
    # latlon_l = [[142, 343], [12, 6557], [3, 666], [434, 33], [142, 6557]]
    
    def compute_macwithres_nominal_latlon(latlon_l, point_dis_threshold=500):
        n, r = len(latlon_l), {}
        if n == 1:
            return {0: latlon_l[0]}
        elif n > 1:
            c_pair = combination_2_n(latlon_l)
            for i in c_pair:
                dis = compute_diff(i[0], i[1])
                if dis > point_dis_threshold:
                    continue
                if dis not in r:
                    r[dis] = []
                r[dis].append(i)
            if r == {}:
                return {}
            else:
                min = sorted(r, reverse=False)[0]
                return {min: r[min][0]}
    
  • 相关阅读:
    WPF 中的简单的动画
    C#获取本地IP地址
    SqlLite公用类
    关键帧动画概述
    使用checked关键字处理“溢出”错误
    WPF 静态属性的使用
    将数字转换成汉语
    监控视频的测试
    WPF Visibility的用法
    WPF 设计器程序集
  • 原文地址:https://www.cnblogs.com/rsapaper/p/7700270.html
Copyright © 2020-2023  润新知