随机生成有界区域内的坐标

van*_*van 7 algorithm latitude-longitude

我有一份经度和纬度列表,它们构成了一个地理区域的边界.我想在这个地理区域内生成一些随机坐标.你能否提出一些我可以采用任何语言的方法?

Oop*_*ser 7

像任何问题一样,有很多方法可以解决它,我想到的第一件事就是

  1. 我们称这个"地理区域"为多边形.
  2. 找到多边形的边界框(简单,只需找到maxX maxY minX minY).
  3. 在边界框内生成随机坐标x=rand()%(maxX-minX)+minX(对于Y也是如此)
  4. 测试坐标在多边形内部,有很多解决这个问题的方法,并且它们以任何给定的语言实现,因此您不必自己实现它.这是C/C++中的一个实现(很容易将其更改为任何其他语言):Point in Polygon Algorithm

http://en.wikipedia.org/wiki/Point_in_polygon

编辑: 正如Jan Dvorak所说,在巨大的区域使用它技术可能会有问题,我相信如果你的多边形接近赤道并且他的尺寸小于100公里,它将会正常工作.

如果你靠近180°线,你也会遇到问题,因为它旁边是-180°.