【问题标题】:Generate random latitude/longitude while avoiding oceans在避开海洋的同时生成随机纬度/经度
【发布时间】:2019-11-01 13:44:43
【问题描述】:

我正在使用https://randomuser.me/ 生成一些随机用户数据进行测试。我想对提供的纬度和经度进行地理编码,以附加真实的城市/州/国家信息,而不是 RandomUser 提供的完全虚假的信息。然而,这些对象的许多实际纬度/经度值被证明是在海洋中间。

是否有 API 或其他方法可以让我获得总是在陆地上的随机坐标?我见过这个:Random geographic coordinates (on land, avoid ocean) 但肯定有一些更有效的方法,而不是通过不断的地理编码进行猜测和检查,直到找到一个有效的方法,对吧?

【问题讨论】:

  • > 真实的城市/州/国家信息...您不只是想要一个世界城市列表,包括它们的中心点吗? (随机选择一个,按其总表面积加权)或者在每个城市内分布真的很重要吗?
  • @drekbour 不,因为城市并没有覆盖所有的土地面积。远非如此。
  • 这里有一个想法:从地图图块提供商处下载一个清晰的蓝色图块。 sha1 散列这个 PNG。随机创建纬度/经度坐标。抓住这个位置的瓷砖。 sha1 散列此图块并检查散列是否匹配。有三分之一的机会它不是同一个透明的蓝色瓷砖,对吧?
  • 您要求一个“高效”的解决方案,但没有说明您的效率指标是什么。效率定义为产出质量除以成本;您的质量和成本指标是什么?
  • @EricLippert 高效,如“甚至没有可能无限”

标签: javascript random geocoding


【解决方案1】:

值得一提的是,有一个名为OpenAddresses 的开源库可以用于您的确切目的以及各种目的。我在几个项目中使用它。

使用Javascript fetch

fetch('https://batch.openaddresses.io/api/data', {
    method: 'GET',
    withCredentials: true,
    credentials: 'include',
    headers: {
        'Authorization': 'oa.1234-your-token-here-5678',
        'Content-Type': 'application/json'
    }
});

使用list data 功能,您可以获得您喜欢的给定地理区域的最新成功运行。

【讨论】:

    【解决方案2】:

    https://3geonames.org/ 点击“在陆地或陆地附近随机选择一个位置”

    API 在这里:https://api.3geonames.org/?randomland=yes(用于陆地上的随机位置)

    https://api.3geonames.org/?random=yes 用于任何其他类型的随机位置。

    更新:从 2020 年 9 月起,您可以在任何给定国家/地区随机选择一个位置。例如https://3geonames.org/randomland.NL 将返回荷兰的一个随机位置。

    【讨论】:

    • 哦!这不仅可以满足我的要求,而且还包括城市/州/国家/地区信息与纬度/经度的相同响应,因此我什至不需要再次查找反向地理编码!谢谢! :)
    • 很高兴我能帮上忙。忘了说你也可以通过添加 json=1 参数来获取 JSON 格式的响应。例如:api.3geonames.org/?randomland=yes&json=1
    • 这很酷,但如果我能指定标准就更好了。例如,“与瑞典的随机位置”(或其他)。我想没有人知道可以做到这一点的替代方案吗?
    猜你喜欢
    • 1970-01-01
    • 2015-02-26
    • 2012-07-09
    • 2012-08-22
    • 2019-09-26
    • 2012-02-24
    • 1970-01-01
    • 1970-01-01
    • 2017-02-27
    相关资源
    最近更新 更多