Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
python-geohex                 aita (twitter id: @ryoaita)2011   7   13
• aita (twitter id: @ryoaita)                • tokibito2011   7   13
python-geohex                • GeoHex v2 Python                • aita                • https://bitbucket.org/__aita__/pyth...
Geohex2011   7   13
GeoHex                • twitter id: @sa2da                • JavaScript                • aita                 v2   JavaScri...
2011   7   13
2011   7   13
GeoHex                •       Hex                • Hex                • Hex2011   7   13
http://geohex.net/2011   7   13
v2                •                 v1                •                                 Level:0         1m                ...
GeoHex                •                   v1, v2, v3                •                •   python-geohex      v2            ...
http://geogames.net/2011   7   13
JS                •                •                •                • namespace2011   7   13
(function (win) { //                // namspace GeoHex;                if (!win.GeoHex) win.GeoHex = function(){};        ...
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_x_100000 = Math.floor(h_x_abs/777600000);                  var h_x_10000 = Math.floor((h_x_abs%777600000)/12960000)...
if (h_max >= 12960000 / 2) {                   h_x = h_key.indexOf(code.charAt(1)) * 12960000 +                       h_ke...
JSer   desune2011   7   13
aita2011   7   13
2011   7   13
python-geohex2011   7   13
python-geohex                • Python                • Apache License                • JavaScript                •        ...
•                •   geodjango                •                •2011   7   13
python-geohex                •   aita   GeoHex                •                •   __eq__                •2011   7   13
#flagboy2011   7   13
><2011   7   13
de                class RandomZoneTest(unittest.TestCase):                    def testLocationToCode(self):               ...
2011   7   13
Upcoming SlideShare
Loading in …5
×

python-geohex

1,437 views

Published on

Published in: Technology
  • Be the first to comment

python-geohex

  1. 1. python-geohex aita (twitter id: @ryoaita)2011 7 13
  2. 2. • aita (twitter id: @ryoaita) • tokibito2011 7 13
  3. 3. python-geohex • GeoHex v2 Python • aita • https://bitbucket.org/__aita__/python- geohex • PyPI ......2011 7 13
  4. 4. Geohex2011 7 13
  5. 5. GeoHex • twitter id: @sa2da • JavaScript • aita v2 JavaScript • •2011 7 13
  6. 6. 2011 7 13
  7. 7. 2011 7 13
  8. 8. GeoHex • Hex • Hex • Hex2011 7 13
  9. 9. http://geohex.net/2011 7 13
  10. 10. v2 • v1 • Level:0 1m 60cm Level:24 25 • 1:4 • 3 13112011 7 13
  11. 11. GeoHex • v1, v2, v3 • • python-geohex v2 • v1 • v3 JavaScript • ( v2 85 • v1, v2 v32011 7 13
  12. 12. http://geogames.net/2011 7 13
  13. 13. JS • • • • namespace2011 7 13
  14. 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 = {};2011 7 13
  15. 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} ]; };2011 7 13
  16. 16. // var h_x_100000 = Math.floor(h_x_abs/777600000); var h_x_10000 = Math.floor((h_x_abs%777600000)/12960000); var h_x_1000 = Math.floor((h_x_abs%12960000)/216000); var h_x_100 = Math.floor((h_x_abs%216000)/3600); var h_x_10 = Math.floor((h_x_abs%3600)/60); var h_x_1 = Math.floor((h_x_abs%3600)%60); // var h_y_100000 = Math.floor(h_y_abs/777600000); var h_y_10000 = Math.floor((h_y_abs%777600000)/12960000); var h_y_1000 = Math.floor((h_y_abs%12960000)/216000); var h_y_100 = Math.floor((h_y_abs%216000)/3600); var h_y_10 = Math.floor((h_y_abs%3600)/60); var h_y_1 = Math.floor((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));2011 7 13
  17. 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));2011 7 13
  18. 18. JSer desune2011 7 13
  19. 19. aita2011 7 13
  20. 20. 2011 7 13
  21. 21. python-geohex2011 7 13
  22. 22. python-geohex • Python • Apache License • JavaScript • GeoHex2011 7 13
  23. 23. • • geodjango • •2011 7 13
  24. 24. python-geohex • aita GeoHex • • __eq__ •2011 7 13
  25. 25. #flagboy2011 7 13
  26. 26. ><2011 7 13
  27. 27. 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)2011 7 13
  28. 28. 2011 7 13

×