2013-02-28 98 views
1
lat = json.getJsonArray("data").getJsonObject(i).getDouble("lat"); 
lon = json.getJsonArray("data").getJsonObject(i).getDouble("lon"); 
Point p = new Point(lat, lon); 
List<String> cells = GeocellManager.generateGeoCell(p); 

使用上面的代碼,我可以得到像下面這樣的單元格。Geocell和Google App Engine空間查詢

[9,9F,9ff的,9FFF,9fffe,9fffe1,9fffe13,9fffe136,9fffe1364,9fffe1364f,9fffe1364fb,9fffe1364fb7,9fffe1364fb76]

,並在最後一個元素 「9fffe1364fb76」,有多大該元素說明什麼?

現在我會告訴你我所知道的。

地球的地球大小爲510,072,000K平方公里。

和元素「9」意味着510,070,000平方公里/ 16。

和元件 「9F」 表示(510070000公里^ 2)/(16^2)

.. 的最後一個元素 「9fffe1364fb76」 是指(510070000公里^ 2)/(16^13)。

這就是我所知道的地理小區。這是正確的嗎?

否則,請說實話... zzZ

+0

也許添加標籤java – 2013-02-28 09:00:02

回答

2

這要看。地理單元將[-90,90] x [-180,180]緯度/經度空間分成幾部分。長度爲1的地理區域字符串將該區域分爲16個部分,每個維度分爲4部分。每個子字符再將每個維度除以4。用一串長度爲13(最長的),每個維度被分成13次,因子爲4,或4^13 = 67108864.因此,[-90,90]緯度間隔分爲180/67108864 = 2.68220901 E-6度,並且[-180,180]經度間隔區間被分爲360/67108864 = 5.36441802E-6度。

這個距離有多大取決於你在地球上的位置,因爲相同的度數轉換爲不同緯度的不同縱向距離。在赤道上,一個角度等於111.319 km,因此赤道上最高分辨率的地理單元尺寸爲0.597m×0.2985m,對應的表面積約爲0.18平方公尺。

在杆上,縱向長度收縮到零。其間,緯度爲60度,地質單元爲方形,尺寸爲0.2985m×0.2985m,表面積爲0.089平方公尺。