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]}
combination_m_n的更多相关文章
随机推荐
- spring-cloud集成mybatis-plus
mybatis-plus插件是对mybatis做出系列增强插件,后面简称MP,MP可免去开发者重复编写xml.mapper.service.entity等代码,通过MP提供的实体注解来完成单表的CRU ...
- Dapper Sqlpara where in
Mark一下:string sql = "SELECT * FROM SomeTable WHERE id IN @ids" var results = conn.Query(sq ...
- HTML5 Canvas 八星聚义动态效果
昔有石碣村七星聚义,今有Canvas八星聚义.动态效果是,八颗星以等速螺线慢慢向中心聚集,最后汇聚成一颗. 效果: 代码: <!DOCTYPE html> <html lang=&q ...
- mysql if()一个奇怪的问题
看起来一切正常......... 但是当使用不等于时 SELECT IF(1!=NULL,1,2) 居然返回2 SELECT IF(1!=NULL,1,2) >2 -- ------------ ...
- 微信小程序 - 关闭当前页面无法再通过左上角返回
考试的时候不可能答完以后,得到成绩后再通过左上角返回再重新答吧? 可以通过:open-type='redirectTo'实现
- sql执行顺序图
http://www.16aspx.com/cmsimages/20130325/664845013.png
- TCP/IP详解 卷一(第一章 概述)
很多不同的厂家生产各种型号的计算机,它们运行完全不同的操作系统,但TCP/IP协议族允许它们相互进行通信. 1.分层 TCP/IP不是一个协议,而是一个协议族,通常它被认为是一个四层的协议系统,下面展 ...
- 『HTML5梦幻之旅』 - 仿Qt演示样例Drag and Drop Robot(换装机器人)
起源 在Qt的演示样例中看到了一个有趣的demo.截图例如以下: 这个demo的名字叫Drag and Drop Robot,简单概括而言,在这个demo中,能够把机器人四周的颜色拖动到机器人的各个部 ...
- 在 Linux 多节点安装配置 Apache Zookeeper 分布式集群
规划: 三台物理服务器就形成了(法定人数).对于高可用性集群,您可以使用高于3的任何奇数.例如,如果设置5台服务器,则集群可以处理两个故障节点等. 物理服务器需要开启的端口 2888 , 3888 和 ...
- Linux远程无密码登陆并远程执行脚本
假设 A (192.168.20.59)为客户机器,B(192.168.20.60)为目标机: 要达到的目的: A机器ssh登录B机器无需输入密码: 加密方式选 rsa|dsa均可以,默认dsa ss ...