这比技术问题更具逻辑性问题。所以请你们请不要举报。
我想在python中编写一个方法,它接受两个参数 - >纬度和经度。此方法应返回group / bucket。分组应基于0.05度进行。
def get_bucket(lat,lng):
#body
例如:
get_bucket(1.05,1.05) - > B1 get_bucket(1.05,1.03) - > B1
所以它假设地球被划分为0.05度网格平方,并且任何纬度/长度落在这个方格中共享同一个桶。
答案 0 :(得分:5)
通常有180度纬度(-90到90度)和360度经度(-180到180度)。
因此纬度增量为18,000个百分位(即-90.00,-89.99,... 89.99,90.00),经度增量为36,000个百分位。
假设你把它放在一个二维数组中。如果你想要.05度增量,纬度需要3,600(18,000 / 5)行,纬度需要7,200列(36,000 / 5)行。
因此,您希望将经度/纬度转换为两个数组索引。这是一种方式:
那是你的行索引。
使用经度进行相同操作,但添加180以获得0到360之间的数字。这会提供您的列号。
示例:
德克萨斯州奥斯汀的位置是纬度: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
德克萨斯州奥斯汀将陷入困境(2450,1645)
当然,将索引转换回纬度和经度只是原始转换的逆转。对于纬度,乘以5,除以1,000,然后减去90。
答案 1 :(得分:0)
这是一个实现:
def get_bucket(lat,lng):
int(lng/0.05)*(whatever the highest possible lat is)/0.05 + int(lat/0.05)