0

我需要它来对一些基于位置的 Web 服务进行压力测试。输入是 4 对纬度/经度,定义一个边界矩形或一组定义多边形的点。

是否有用于在地图上生成随机点的库/算法?(Python/Java)

4

6 回答 6

3

在java中你可以使用 Math.random()

例如,如果要生成 1 到 10 之间的随机数:

int randomNumGenerated = (int)(Math.Random()*10) + 1;

您可以将其应用于您尝试轻松解决的问题。

于 2012-08-28T08:40:55.730 回答
1

看看这个问题,它处理在任意 4 点凸多边形内生成点。

4 边多边形内的随机点

于 2012-08-28T08:54:35.713 回答
1

这篇关于球体点拾取的文章比我解释的要好得多,为什么在区间 [0,1) 上生成 2 个随机数的简单方法会导致球体表面上的点分布不佳。这可能是也可能不是OP的关注点。

然而,OP 应该关心的是,在地球表面随机生成一组 4 个点可能需要一些棘手的编程。考虑由点 (lat/long, all in degree) 定义的“多边形”的情况(+5,90),(+5,-90),(-5,-90),(-5,90)。这个点(0,0)是在这个多边形里面还是在它外面?重点是什么(0,180)?生成这种模棱两可的多边形非常容易——欧几里得平面不能很好地模拟球体的表面。

我会采取完全不同的方法——随机生成 1 个点,然后生成经纬度偏移量。这将在表面上为您提供一个准矩形补丁,您可以调整偏移的生成以避免模糊多边形。如果要生成非准矩形的多边形,请生成一系列点和角度,当它们组合时,定义一个适合您需要的多边形。

于 2012-08-28T09:18:57.817 回答
0

为什么不将纬度生成为 -90 到 90 之间的随机数,将经度生成为 -180 到 180 之间的另一个随机数?

那么你有一个观点。然后,你可以根据需要生成尽可能多的点来制作多边形。

a您可以在以下之间生成一个随机数b

rnum = a + rnd() * (b-a); // where rnd() gives a number from 0 to 1
于 2012-08-28T08:43:59.293 回答
0

简单:在地图的边界矩形内,为每个点生成两个随机数,一个用于纬度,一个用于经度。

于 2012-08-28T08:45:37.400 回答
0

双经度 = Math.random() * Math.PI * 2;

或使用

public static LatLng random(Random r) {            

return new LatLng((r.nextDouble() * -180.0) + 90.0,
                                (r.nextDouble() * -360.0) + 180.0);
        }
于 2012-08-28T08:49:17.540 回答