在纬度/经度点附近生成“类amoeba”簇

时间:2018-07-20 13:29:28

标签: python random cluster-analysis

我要解决一个非常独特的问题,数学使我感到困惑。我正在做一个地图项目,其中一项需求是在给定的纬度/经度中心周围生成随机的,类似于“阿米巴”的点簇。

通过“类阿米巴”,我的意思是该簇不应太圆或太均匀,但理想情况下应具有从中心向外延伸的“臂”。同时,手臂应该是随机的,而不是螺旋状的。

我已经尝试了多种方法,但是到目前为止,我生成的所有聚类都不是我想要的形状。我已经尝试过类似于here所描述的方法,并且已经尝试了sklearn的make_blobs。但是我无法弄清楚如何扩展这两种方法中的任何一种,而我不确定这两种方法中的哪一种确实有意义。

任何人都能提供的建议将不胜感激!

1 个答案:

答案 0 :(得分:1)

作为起点,我模拟了一些根据距中心一定距离时的随机行走停止的情况。没错,手臂效果可能会被隐藏。我将其设置为创建5条手臂,但我实际上只看到2-3条。如果您真的不在乎,那可能没事

import random
import math

STEP_SIZE = 0.5
MAX_WALK_DIST = 5

for i in range(5): 
    x = y = 0
    while x**2+y**2 < MAX_WALK_DIST**2:
        dist = random.random() * STEP_SIZE
        angle = random.random() * math.pi * 2
        x += dist * math.cos(angle)
        y += dist * math.sin(angle)

        print(x, y)

point cloud