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度网格正方形,而落在该正方形中的任何经/纬度共享同一桶。
通常有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)行。
因此,您想将经度/纬度转换为两个数组索引。这是一种方法:
那就是你的行索引。
对经度执行相同的操作,但是加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。