彼此通勤距离在 30 分钟以内的集群地理位置(long/lat)?

Cluster geographical locations(long/lat) which are within 30 min of commute to each other?

我正在尝试对地理位置(经/纬度)进行聚类,其中聚类中数据点之间的距离应小于或等于 30 分钟。我可以使用 google 地图 api 计算数据点之间的持续时间。我怎样才能将那些在 30 分钟内通勤的站点聚集在一起? 附上图片供参考:

不太清楚您在这里问的是什么,但据我了解,您正试图根据经度和纬度相互关联两点。

假设我使用您提到的 API 比较两点 A 和 B。您可以使用字典将两个点相互关联。假设我有一个 class 像这样的东西:

Point.py

class Point(object):
    def __init__(latitudeToSet, longitudeToSet):
        self.latitude = latitudeToSet
        self.longitude = longitudeToSet
        self.pointsInRange = {}

然后在主程序文件中,您可以像这样使用它(作为基本示例):

import Point

def main:

    someNewPoint = Point(0, 0)
    someOtherPoint = Point(1, 1)

    if ( googleAPI.isInRange( (someNewPoint.latitude, someNewPoint.longitude), 
        (someOtherPoint.latitude, someOtherPoint.longitude) ) ):

        someNewPoint.pointsInRange["someOtherPoint"] = someOtherPoint
        someOtherPoint.pointsInRange["someNewPoint"] = someNewPoint

    #From here just check if one point exists in another's dictionary.

    if "someOtherPoint" in someNewPoint.pointsInRange:
        #Do stuff because you know the points are in range.

你知道这是不可传递的吗?

A 到 B 可以是 30 分钟,所以他们应该在同一个集群中。

B到C也是30分钟,所以他们应该在同一个集群。

但是 A 到 C 是 60 分钟,所以他们不应该。

所以你的集群没有明确定义。首先,您需要确定您真正想要的是什么。然后尝试研究现有算法!

上述问题的解决方案是使用参数 complete linkage = True 的凝聚层次聚类。