python-geohex
- 10. v2
? v1
? Level:0 1m
60cm Level:24 25
? 1:4
? 3 1311
- 11. GeoHex
? v1, v2, v3
?
? python-geohex v2
? v1
? v3 JavaScript
? ( v2 85
? v1, v2 v3
- 14. (function (win) { //
// namspace GeoHex;
if (!win.GeoHex) win.GeoHex = function(){};
// version: 2.03
GeoHex.version = "2.03";
// *** Share with all instances ***
var h_key =
"abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWX
YZ";
var h_base = 20037508.34;
var h_deg = Math.PI*(30/180);
var h_k = Math.tan(h_deg);
// private static
var _zoneCache = {};
- 15. var h_l = xy2loc(h_x - 2 * h_size, h_y).lon;
var h_r = xy2loc(h_x + 2 * h_size, h_y).lon;
var h_cl = xy2loc(h_x - 1 * h_size, h_y).lon;
var h_cr = xy2loc(h_x + 1 * h_size, h_y).lon;
return [
{lat: h_lat, lon: h_l},
{lat: h_top, lon: h_cl},
{lat: h_top, lon: h_cr},
{lat: h_lat, lon: h_r},
{lat: h_btm, lon: h_cr},
{lat: h_btm, lon: h_cl}
];
};
- 16. // var h_x_100000 = Math.?oor(h_x_abs/777600000);
var h_x_10000 = Math.?oor((h_x_abs%777600000)/12960000);
var h_x_1000 = Math.?oor((h_x_abs%12960000)/216000);
var h_x_100 = Math.?oor((h_x_abs%216000)/3600);
var h_x_10 = Math.?oor((h_x_abs%3600)/60);
var h_x_1 = Math.?oor((h_x_abs%3600)%60);
// var h_y_100000 = Math.?oor(h_y_abs/777600000);
var h_y_10000 = Math.?oor((h_y_abs%777600000)/12960000);
var h_y_1000 = Math.?oor((h_y_abs%12960000)/216000);
var h_y_100 = Math.?oor((h_y_abs%216000)/3600);
var h_y_10 = Math.?oor((h_y_abs%3600)/60);
var h_y_1 = Math.?oor((h_y_abs%3600)%60);
if(h_max >=60/2) h_code += h_key.charAt(h_x_10) + h_key.charAt(h_y_10);
h_code += h_key.charAt(h_x_1) + h_key.charAt(h_y_1);
if (!!_zoneCache[h_code]) return _zoneCache[h_code];
return (_zoneCache[h_code] = new Zone(z_loc_y, z_loc_x, h_x, h_y, h_code));
- 17. if (h_max >= 12960000 / 2) {
h_x = h_key.indexOf(code.charAt(1)) * 12960000 +
h_key.indexOf(code.charAt(3)) * 216000 +
h_key.indexOf(code.charAt(5)) * 3600 +
h_key.indexOf(code.charAt(7)) * 60 +
h_key.indexOf(code.charAt(9));
h_y = h_key.indexOf(code.charAt(2)) * 12960000 +
h_key.indexOf(code.charAt(4)) * 216000 +
h_key.indexOf(code.charAt(6)) * 3600 +
h_key.indexOf(code.charAt(8)) * 60 +
h_key.indexOf(code.charAt(10));
} else if (h_max >= 216000 / 2) {
h_x = h_key.indexOf(code.charAt(1)) * 216000 +
h_key.indexOf(code.charAt(3)) * 3600 +
h_key.indexOf(code.charAt(5)) * 60 +
h_key.indexOf(code.charAt(7));
h_y = h_key.indexOf(code.charAt(2)) * 216000 +
h_key.indexOf(code.charAt(4)) * 3600 +
h_key.indexOf(code.charAt(6)) * 60 +
h_key.indexOf(code.charAt(8));
- 28. de
class RandomZoneTest(unittest.TestCase):
def testLocationToCode(self):
for i in range(10000):
lat = 85 * random.random()
lon = 85 * random.random()
level = random.randint(0,24)
zone = geohex2.get_zone_by_location(lat, lon, level)
code_zone = geohex2.get_zone_by_code(zone.code)
self.assertEqual(zone, code_zone)
def testLocationToXY(self):
for i in range(10000):
lat = 90 * random.random()
lon = 90 * random.random()
level = random.randint(0,24)
zone = geohex2.get_zone_by_location(lat, lon, level)
xy_zone = geohex2.get_zone_by_xy(zone.x, zone.y, zone.level)
self.assertEqual(zone, xy_zone)