這比邏輯問題更爲合理。所以請求你們不要標記它。分組/經銷緯度和經度
我想用python編寫一個方法,它需要兩個參數 - >緯度和經度。此方法應該返回組/存儲桶。分組應基於0.05度完成。
def get_bucket(lat,lng):
#body
例如:
get_bucket(1.05,1.05) - > B1 get_bucket(1.05,1.03) - > B1
所以它像假設地球表明在0.05度網格方塊劃分並且在這個方格中的任何緯度/長度共享同一個水桶。
這比邏輯問題更爲合理。所以請求你們不要標記它。分組/經銷緯度和經度
我想用python編寫一個方法,它需要兩個參數 - >緯度和經度。此方法應該返回組/存儲桶。分組應基於0.05度完成。
def get_bucket(lat,lng):
#body
例如:
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之間的數字。這就提供了你的列號。
例子:
奧斯汀的位置,TX是緯度:30.267,經度:-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.
最初的想法是僅僅分割和落地,但例如「0.15/0.05」不是3。乘以100和地板除以5也許? –
由於地球不平坦,當你接近極點時,你的水桶會逐漸變得更加三角形。這就是說,粗略地說,你們最大的桶會出現在有更多人的地方,如果你的問題領域完全受到人口的影響,這可能是非常糟糕的。(當然,如果你只對一小塊地球感興趣,那麼這並不重要,特別是當貼片靠近赤道時。) – rici
那麼你的問題是什麼?你有沒有嘗試過任何東西?如果您想根據將它們除以2得到的結果將0到1000之間的所有整數存入桶中,您需要多少個桶?如果你能解決這個問題,那麼你可以解決這個問題。 –