2013-02-28 100 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平方公尺。