SlideShare ist ein Scribd-Unternehmen logo
1 von 29
python-geohex
 aita (twitter id: @ryoaita)
• aita (twitter id: @ryoaita)
python-geohex
• GeoHex v2 Python
• aita
• https://bitbucket.org/__aita__/python-
  geohex

• PyPI                      ......
Geohex
GeoHex
• twitter id: @sa2da
• JavaScript
• aita                 v2   JavaScript

•
•
GeoHex

•       Hex

•
• Hex
• Hex
http://geohex.net/
v2

•                 v1

•                                 Level:0         1m
    60cm          Level:24   25

•                                           1:4



•      3   1311
GeoHex
•                   v1, v2, v3

•
•   python-geohex      v2

•   v1

•   v3       JavaScript

•                                ( v2   85

•   v1, v2   v3
http://geogames.net/
JS



•
•

•
• namespace
(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 = {};
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}
   ];
};
// 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));
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));
JSer   desune
aita
#flagboy
><
python-geohex
python-geohex
• Python
• Apache License
• JavaScript
•            GeoHex
•

•   geodjango



•
•
python-geohex


• aita   GeoHex



•
• __eq__
•
#flagboy
><
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)
python-geohex

Weitere ähnliche Inhalte

Was ist angesagt?

Was ist angesagt? (18)

Img 0004
Img 0004Img 0004
Img 0004
 
Programación funcional en Haskell
Programación funcional en HaskellProgramación funcional en Haskell
Programación funcional en Haskell
 
Gauss jordan
Gauss jordanGauss jordan
Gauss jordan
 
Pruebabfs
PruebabfsPruebabfs
Pruebabfs
 
Clear all
Clear allClear all
Clear all
 
openFrameworks 動きを生みだす様々なアルゴリズム - 多摩美メディアアートII
openFrameworks 動きを生みだす様々なアルゴリズム - 多摩美メディアアートIIopenFrameworks 動きを生みだす様々なアルゴリズム - 多摩美メディアアートII
openFrameworks 動きを生みだす様々なアルゴリズム - 多摩美メディアアートII
 
Vcs12
Vcs12Vcs12
Vcs12
 
openFrameworks基礎 動きを生みだす、アニメーション入門 - 芸大グラフィックスプログラミング演習B
openFrameworks基礎 動きを生みだす、アニメーション入門 - 芸大グラフィックスプログラミング演習BopenFrameworks基礎 動きを生みだす、アニメーション入門 - 芸大グラフィックスプログラミング演習B
openFrameworks基礎 動きを生みだす、アニメーション入門 - 芸大グラフィックスプログラミング演習B
 
1
11
1
 
Programs
ProgramsPrograms
Programs
 
Python codigo graficas
Python codigo graficasPython codigo graficas
Python codigo graficas
 
Assignment
AssignmentAssignment
Assignment
 
Vcs21
Vcs21Vcs21
Vcs21
 
Cg lab cse-vii
Cg lab cse-viiCg lab cse-vii
Cg lab cse-vii
 
Scanfill polygon
Scanfill polygonScanfill polygon
Scanfill polygon
 
Play fair cipher
Play fair cipherPlay fair cipher
Play fair cipher
 
Absolute Loader
Absolute LoaderAbsolute Loader
Absolute Loader
 
Daniel snake
Daniel snakeDaniel snake
Daniel snake
 

Andere mochten auch

How you can become a hacker with no security experience
How you can become a hacker with no security experienceHow you can become a hacker with no security experience
How you can become a hacker with no security experienceAvădănei Andrei
 
2010 Amco Clear Catalog
2010 Amco Clear Catalog2010 Amco Clear Catalog
2010 Amco Clear Catalogjcrow14
 
Virtual Anonimity – What? Why? When? How?
Virtual Anonimity – What? Why? When? How?Virtual Anonimity – What? Why? When? How?
Virtual Anonimity – What? Why? When? How?Avădănei Andrei
 

Andere mochten auch (8)

Inserimento valuta
Inserimento valutaInserimento valuta
Inserimento valuta
 
DefCamp 2012 @Bucharest
DefCamp 2012 @BucharestDefCamp 2012 @Bucharest
DefCamp 2012 @Bucharest
 
python-geohex
python-geohexpython-geohex
python-geohex
 
How you can become a hacker with no security experience
How you can become a hacker with no security experienceHow you can become a hacker with no security experience
How you can become a hacker with no security experience
 
Wordpress Plugins Scanner
Wordpress Plugins ScannerWordpress Plugins Scanner
Wordpress Plugins Scanner
 
SmartFender
SmartFenderSmartFender
SmartFender
 
2010 Amco Clear Catalog
2010 Amco Clear Catalog2010 Amco Clear Catalog
2010 Amco Clear Catalog
 
Virtual Anonimity – What? Why? When? How?
Virtual Anonimity – What? Why? When? How?Virtual Anonimity – What? Why? When? How?
Virtual Anonimity – What? Why? When? How?
 

python-geohex

  • 2. • aita (twitter id: @ryoaita)
  • 3. python-geohex • GeoHex v2 Python • aita • https://bitbucket.org/__aita__/python- geohex • PyPI ......
  • 5. GeoHex • twitter id: @sa2da • JavaScript • aita v2 JavaScript • •
  • 6.
  • 7.
  • 8. GeoHex • Hex • • Hex • Hex
  • 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.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));
  • 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));
  • 18. JSer desune
  • 19. aita
  • 21. ><
  • 23. python-geohex • Python • Apache License • JavaScript • GeoHex
  • 24. • • geodjango • •
  • 25. python-geohex • aita GeoHex • • __eq__ •
  • 27. ><
  • 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)

Hinweis der Redaktion

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n