首页 > 解决方案 > Python中的匹配间隔(纬度/经度)和时间

问题描述

我目前正在从事一个有两个数据集的项目。我已经能够编写一个程序来匹配两个数据集之间关于时间戳和纬度/经度位置的记录。

示例:数据集A

{"LATITUDE": 29.83, 
 "LONGITUDE": 106.73, 
 "MINUTE": 0, 
 "SECOND": 2, 
 "MONTH": 10,  
 "WIND_DIRECTION": 219, 
 "WIND_SPEED": 3.0, 
 "YEAR": 2019}

示例:数据集2

{"LATITUDE": 29.83, 
 "LONGITUDE": 106.73, 
 "MINUTE": 0, 
 "SECOND": 2, 
 "MONTH": 10,  
 "WIND_SPEED": 3.0, 
 "YEAR": 2019},

现在,假设我有另一条记录dataset2,它接近 lat/long 和时间戳的数字。

示例数据集2a

{"LATITUDE": 30.83, 
 "LONGITUDE": 107.73, 
 "MINUTE": 0, 
 "SECOND": 4, 
 "MONTH": 10,  
 "WIND_SPEED": 3.0, 
 "YEAR": 2019}

以下是我迄今为止的匹配代码,它匹配精确的纬度/经度+分钟和秒。如果我想为此引入一个间隔,比如说在接近 1 分钟的时间和 lat/long 的秒数上匹配 1 - 2 个整数。我将如何实施这一点?

if (z['latitude'] == True and z['longitude'] == True) and z['minute'] == True:
       trueMatches += 1
       dict3 = {**dictA , **dictB}
       list.append(dict3)
       print(dict3)

它不必遵循我的代码,但我正在匹配列表中的字典。任何通用方法都会有所帮助。

标签: pythonintervalsmatching

解决方案


不完全确定您的代码的其余部分看起来像比较纬度和经度,但您可以创建中间变量latDifflongDiff. 然后只需更改您的逻辑以查看这些是否小于阈值(diffThresh):

if (latDiff < diffThresh and longDiff < diffThresh):
    # Do something cool here!

您可以有不同的纬度和经度阈值。另一种方法,对于非常远的点来说可能是必要的,是计算两点之间的Haversine距离,然后改变你的逻辑来寻找小于一定距离的点(而不是查看单独的纬度和经度坐标) .

编辑:isclose看起来像是一个漂亮的小解决方案。

编辑:您可能想要获取差异的绝对值。


推荐阅读