gpt4 book ai didi

python - 分组/分桶经纬度

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:33:54 30 4
gpt4 key购买 nike

这与其说是技术问题,不如说是逻辑问题。所以请大家不要举报。

我想用 python 编写一个方法,它有两个参数 -> 纬度和经度。此方法应返回组/桶。分组应按0.05度进行。

def get_bucket(lat,lng):
#body

例如:

get_bucket(1.05,1.05) -> b1get_bucket(1.05,1.03) -> b1

这就像假设地球被分成 0.05 度的网格正方形并且落在这个正方形中的任何纬度/经度都共享同一个桶。

最佳答案

通常有 180 度的纬度(-90 到 90)和 360 度的经度(-180 到 180)。

所以有 18,000 百度的纬度增量(即 -90.00、-89.99、... 89.99、90.00)和 36,000 百度的经度增量。

假设您将其放入一个二维数组中。如果您想要 0.05 度增量,则需要 3,600 (18,000/5) 行纬度和 7,200 列 (36,000/5) 行纬度。

所以你想将经度/纬度转换为两个数组索引。这是一种方法:

  1. 将范围在 -90 到 90 之间的纬度数字加上 90。这会给你一个从 0 到 180 的数字。
  2. 乘以 100,然后四舍五入。这会给你一个从 0 到 18,000 的数字。
  3. 除以 5。

那是你的行索引。

对经度执行相同操作,但加上 180 以获得 0 到 360 之间的数字。这提供了您的列号。

例子:

德克萨斯州奥斯汀的位置纬度:30.267,经度:-97.743

30.267 + 90 = 120.267
120.267 * 100 = 12027 (rounded up)
12027 / 5 = 2405

-97.743 + 180 = 82.257
82.257 * 100 = 8226 (rounded up)
8226 / 5 = 1645

所以德克萨斯州奥斯汀将进入桶 (2450,1645)

当然,将索引转换回纬度和经度只是原始转换的逆过程。对于纬度,乘以 5,除以 100,然后减去 90。

编辑:更正了数学错误。

关于python - 分组/分桶经纬度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38115135/

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