如何将两点(纬度、经度)的地理空间距离转换为相似性度量
How to convert the geospatial distance of two points (lat, lon) to a similarity measuremnt
我正在尝试使用经纬度计算地球上两点之间的相似度。我已经通过 geopy 包中的 Vincenty 距离计算了它们的距离。我想将此距离转换为相似度测量(理想范围为 0 到 1),使得相似度为 1 的较近点和相似度接近 0 的彼此远离的点。有什么方法可以进行这种转换吗?这有可能使转换顺利地从 0 到 1 吗?谢谢!
一个简单的答案是定义极值,然后在它们之间进行线性插值。所以你会
- if
dv == 0
, similarity = 1
(同点)
- if
dv == MAX
, similarity = 0
(对映点;您可以取 20 000 000 米作为 MAX 的近似值,或使用您喜欢的精确值)
- 否则,
similarity = (MAX - dv) / MAX
除了线性插值之外,您还可以使用其他插值法 - 但基本思想是成立的:这比您想象的要容易。任何单调且连续的函数 f
使得 f(0) == 0 && f(1) == 1
将使 f((MAX - dv) / MAX)
与您的约束条件相匹配。
我正在尝试使用经纬度计算地球上两点之间的相似度。我已经通过 geopy 包中的 Vincenty 距离计算了它们的距离。我想将此距离转换为相似度测量(理想范围为 0 到 1),使得相似度为 1 的较近点和相似度接近 0 的彼此远离的点。有什么方法可以进行这种转换吗?这有可能使转换顺利地从 0 到 1 吗?谢谢!
一个简单的答案是定义极值,然后在它们之间进行线性插值。所以你会
- if
dv == 0
,similarity = 1
(同点) - if
dv == MAX
,similarity = 0
(对映点;您可以取 20 000 000 米作为 MAX 的近似值,或使用您喜欢的精确值) - 否则,
similarity = (MAX - dv) / MAX
除了线性插值之外,您还可以使用其他插值法 - 但基本思想是成立的:这比您想象的要容易。任何单调且连续的函数 f
使得 f(0) == 0 && f(1) == 1
将使 f((MAX - dv) / MAX)
与您的约束条件相匹配。