我想要在常規的緯度/經度網格上排列分佈在全球的數據。 我可以查看所有數據,並檢查它們所屬的網格單元格,然後將它們附加到每個單元格的列表中。這種做法在我看來很長並且效率不高。將隨機分佈的數據排序到規則網格
我相信這不是一個新問題,但我一直無法在網上找到解決方案。有沒有人有建議,或可以指向我的例子或教程?
我想要在常規的緯度/經度網格上排列分佈在全球的數據。 我可以查看所有數據,並檢查它們所屬的網格單元格,然後將它們附加到每個單元格的列表中。這種做法在我看來很長並且效率不高。將隨機分佈的數據排序到規則網格
我相信這不是一個新問題,但我一直無法在網上找到解決方案。有沒有人有建議,或可以指向我的例子或教程?
我相信地球散射會很有用,在這種情況下您可以使用Morton number。這個名爲"Spatial Keys – Memory Efficient Geohashes"的博客有一個示例實現,它是用Java編寫的,但是Python版本沒有多大區別。
long hash = 0;
double minLat = minLatI;
double maxLat = maxLatI;
double minLon = minLonI;
double maxLon = maxLonI;
int i = 0;
while (true) {
if (minLat midLat) {
hash |= 1;
minLat = midLat;
} else
maxLat = midLat;
}
hash <<= 1;
if (minLon midLon) {
hash |= 1;
minLon = midLon;
} else
maxLon = midLon;
}
i++;
if (i < iterations)
hash <<= 1;
else
break;
}
return hash;
莫頓碼的優點在於,可以計算出更大的網格較少的位(高於較少迭代),對於更精細的網格更多的比特。或者計算出細粒度的代碼,並使用較大網格的前綴。
感謝這個答案,我會試一試,讓你知道它是如何工作:) – 2013-03-13 11:44:48
數據集有多大?根據規模的不同,這可以是Python數據結構練習,也可以是更深入的大數據。另外,你能舉出一個數據的例子,以便更容易看到你想要達到的目標。 – ferrix 2013-03-12 16:29:53
數據集可能相當大,如果需要,它可以進入百萬。數據將是lat,lon,data1,data2,...也是可調整的。我目前在numpy數組中有數據,每個變量都在一個單獨的數組中,但它們也可以組合使用。 – 2013-03-13 11:43:54