Algorithm 在有界区域内随机生成坐标

Algorithm 在有界区域内随机生成坐标,algorithm,latitude-longitude,Algorithm,Latitude Longitude,我有一个经纬度列表,它构成了一个地理区域的边界。我想在这个地理区域内生成一些随机坐标。你能推荐一些我可以用任何语言学习的方法吗?就像任何问题一样,有很多方法可以解决它,我首先想到的是 让我们把这个“地理区域”称为多边形 找到多边形的边界框(很简单,只需找到maxX maxY minX minY) 在边界框内生成随机坐标x=rand()%(maxX-minX)+minX(与Y相同) 测试坐标是否在多边形内部,有很多解决方案,并且它们是用任何给定的语言实现的,因此您不必自己实现。 下面是一个C/C+

我有一个经纬度列表,它构成了一个地理区域的边界。我想在这个地理区域内生成一些随机坐标。你能推荐一些我可以用任何语言学习的方法吗?

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

  • 让我们把这个“地理区域”称为多边形
  • 找到多边形的边界框(很简单,只需找到maxX maxY minX minY)
  • 在边界框内生成随机坐标
    x=rand()%(maxX-minX)+minX
    (与Y相同)
  • 测试坐标是否在多边形内部,有很多解决方案,并且它们是用任何给定的语言实现的,因此您不必自己实现。 下面是一个C/C++实现(很容易将其更改为任何其他语言):
  • 编辑: 正如Jan Dvorak所建议的,在大面积上使用it技术可能会有问题,我相信如果你的多边形靠近赤道,并且它的大小小于100公里,它就可以正常工作

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

    您可以尝试以下方法:

  • 计算此地理区域内的所有坐标,请参见
    矢量点中的保存

  • [0,points.size())
    中生成一个随机整数,请参见
    k

  • 点[k]
    是您想要的


  • 首先,我们将地球的形状建模为一个球体。解决这个问题要困难得多

    生成一个比较简单的方法

    生成一个更难,但在这篇链接文章中进行了解释

    你需要将多边形分成几个部分,并根据它们的面积对它们进行加权。然后根据加权值随机选择一个球面三角形


    一般情况下,三角剖分是一个简单的任务,其中一个算法(算法1,第901页)用C++源代码(搜索“构造板几何参数计算方法”)。.

    这在大面积上很复杂,你不能用平面多边形近似球形多边形,但对于平面:地理区域不是很大。因此,我没有采用这种方法。但是链接非常有用,适合更大的地理区域。