【问题标题】:Randomly generate a point within a country boundary polygon在国家边界多边形内随机生成一个点
【发布时间】:2023-04-01 07:55:02
【问题描述】:

我有兴趣在一个国家/地区随机提取街景数据。

我只能弄清楚如何在边界框中生成一个点。它通常从附近国家提取数据。我现在正在使用 GIS 服务器,但我有兴趣将其从工作流程中删除,因为这很痛苦。

有谁知道任何可以在复杂多边形(例如国家边界)内随机生成一个点的 javascript 映射 API?

菲尔

【问题讨论】:

  • 我正在研究的一件事是反转我的工作流程,只是反转地理编码一个随机生成的点。因此,在边界框中生成一个随机点,然后对其进行反向地理编码。如果返回的国家/地区与预期的国家/地区不匹配,则丢弃该点并生成另一个。但是,我仍然对不重做代码感兴趣,因此任何帮助都会有所帮助。

标签: javascript google-maps google-maps-api-3


【解决方案1】:

我不知道有任何实用算法可以对任意的潜在凹多边形执行此操作,并且仍然为每个可能的点保持统一的概率。

(我的意思是,您可以随机选择一个穿过多边形的轴,找到交叉点并从奇数交叉点范围内的某个位置选择一个位置。但这会使某些点比其他点更有可能被选择.)

我会采用在矩形边界框内随机选取一个点 checking for collision 与国家/地区的矢量数据并在未命中时生成另一个点的方法。

【讨论】:

  • 谢谢,这就是我现在正在做的事情,但我希望有一种更简单的方法。
  • 是的,您可以在不为每个点发出新的 geoip 请求的情况下做到这一点(如您的第一条评论中所述)。对多边形进行点击检查很容易。想法:我想你可以通过在边界框上使用随机偏移的光栅化,在该光栅化中沿着光栅线选择起点范围并沿着线性总和选择一个随机点,从而在多边形中生成一个足够好的随机点的所有范围。随着线数的增加,不完全均匀的概率远不如只有一条轴线的示例那么明显。
  • (OTOH 这不太可能比丢弃并重试方法快。)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-23
  • 2016-01-15
  • 2019-05-15
  • 1970-01-01
相关资源
最近更新 更多