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);
使用上面的代码,我可以获得如下的单元格。
[9,9f,9ff,9fff,9fffe,9fffe1,9fffe13,9fffe136,9fffe1364,9fffe1364f,9fffe1364fb,9fffe1364fb7,9fffe1364fb76]
在最后一个元素“9fffe1364fb76”中,该元素表示多大?
现在我会告诉你我所知道的事情。
地球的地球大小为510,072,000Km ^ 2.
,元素“9”表示510,070,000km ^ 2/16。
,元素“9f”表示(510,070,000km ^ 2)/(16 ^ 2)
.. 最后一个元素“9fffe1364fb76”表示(510,070,000km ^ 2)/(16 ^ 13)。
这就是我对geocell的了解。这是对的吗?
否则,请告诉我真相...... zzZ
答案 0 :(得分:2)
这取决于。 Geocells将[-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.36441802 E-6度。
距离的大小取决于你在地球上的位置,因为相同的度数会转换为不同纬度的不同纵向距离。在赤道上,两个方向上的一度等于111.319 km,因此赤道上最高分辨率的土工格室为0.597m×0.2985m,相当于大约0.18平方公尺的表面积。
在杆上,纵向长度缩小到零。在此之间,在60度的纬度,土工格室为方形,尺寸为0.2985m×0.2985m,表面积为0.089平方公尺。