分组/装箱纬度和经度

Juv*_*nik 0 python algorithm geography geo latitude-longitude

这比技术上的问题更具逻辑性。因此,请您不要对其进行标记。

我想在python中编写一个方法,该方法需要两个参数->纬度和经度。此方法应返回组/存储桶。分组应基于0.05度进行。

def get_bucket(lat,lng):
  #body
Run Code Online (Sandbox Code Playgroud)

例如:

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

因此,就像假设地球被划分为0.05度网格正方形,而落在该正方形中的任何经/纬度共享同一桶。

Jim*_*hel 5

通常有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之间的数字。这将提供您的列号。

例:

德克萨斯州奥斯丁的位置是:lat:30.267,lng:-97.743

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

-97.743 + 180 = 82.257
82.257 * 1000 = 8226 (rounded up)
8226 / 5 = 1645
Run Code Online (Sandbox Code Playgroud)

因此,德克萨斯州奥斯汀市将陷入困境(2450,1645)

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