生成随机lat lon

时间:2012-08-28 08:38:25

标签: java python algorithm google-maps

我需要它来强调测试一些基于位置的Web服务。输入是4对lat / lon,用于定义边界矩形或定义多边形的一组点。

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

6 个答案:

答案 0 :(得分:3)

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

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

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

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

答案 1 :(得分:1)

看看这个问题,该问题涉及在任意4点凸多边形内生成点。

Random points inside a 4-sided Polygon

答案 2 :(得分:1)

这篇关于sphere point picking的文章解释了为什么在区间[0,1]上产生2个随机数的天真方法会导致球体表面上的点分布不均匀。这可能是也可能不是OP的关注。

然而,OP应该关注的是,在地球表面随机生成一组4个点可能需要一些棘手的编程。考虑由点(纬度/长度,全部以度为单位)(+5,90),(+5,-90),(-5,-90),(-5,90)定义的“多边形”的情况。点(0,0)是否位于此多边形内或外部?点(0,180)怎么样?生成这样的模糊多边形非常容易 - 欧几里德平面没有很好地模拟球体表面。

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

答案 3 :(得分:0)

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

然后你有一个观点。然后,Yo可以根据您的需要生成多个点。

您可以使用以下内容生成ab之间的随机数:

rnum = a + rnd() * (b-a); // where rnd() gives a number from 0 to 1

答案 4 :(得分:0)

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

答案 5 :(得分:0)

double longitude = 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);
        }