gpt4 book ai didi

geocoding - 在区域(国家/城市)内生成随机经纬度值

转载 作者:行者123 更新时间:2023-12-03 08:09:38 27 4
gpt4 key购买 nike

如何随机生成保留在特定国家/地区内的数千个地理坐标(长/纬度)?

这是我正在做的应用程序,我需要测试数据。
我更喜欢 JSON 格式。

最佳答案

我开发了一个应该可以解决问题的库:PyCristoforo。您可以通过 pip 轻松安装它:pip install pycristoforo .它期望的唯一输入变量是国家名称(或国家代码)和您想要的点数。

查看我的 Github 以获取更多详细信息。

目前,PyPi 上有两个主要版本:

版本 1

  • 从国家多边形形状开始,它首先获取围绕它的矩形,然后获取最小/最大纬度和经度。
  • # getting min, max lat/lng
    min_lng = get_min_lng(shape)
    min_lat = get_min_lat(shape)
    max_lng = get_max_lng(shape)
    max_lat = get_max_lat(shape)

    enter image description here
  • 在其中,随机坐标以统一的方式生成
  • # generate random float between [min_lng, max_lng)
    val1 = numpy_random.uniform(min_lng, max_lng)
    # generate random float between [min_lat, max_lat)
    val2 = numpy_random.uniform(min_lat, max_lat)

    enter image description here
  • 最后,只保留国家形状内部的点,丢弃外部的点。然后生成新的点,直到达到用户预期的数量。
  • # random point generation
    while counter != points:
    if random_point.within(shape):
    ...
    list_of_points.append(ran_point)
    counter += 1

    enter image description here

    版本 2
    版本 2 的速度提高了 20%,因为它丢弃的点数更少:

    算法的第一部分实现了拒绝采样方法(如此处 https://codereview.stackexchange.com/questions/69833/generate-sample-coordinates-inside-a-polygon 所述)。此解决方案的硬约束是仅适用于凸面形状。
    正如您从下图中所看到的,一些点可以在国家形状之外生成。

    enter image description here

    为了纠正它,然后检查所有点是否位于国家形状内。对于国外的每个点,都会生成一个新点。

    enter image description here

    希望这已经足够清楚了。查看代码和github repo以获取更多详细信息

    关于geocoding - 在区域(国家/城市)内生成随机经纬度值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40112718/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com