Skip to content
Browse files

first working map

  • Loading branch information...
1 parent 7ff55c3 commit 4fa58896470c841688e14f9d95c406fe074fee36 dwtkns committed Nov 1, 2012
Showing with 1,088 additions and 21 deletions.
  1. BIN .DS_Store
  2. +5 −1 README.md
  3. +160 −0 boundaries.json
  4. +107 −0 d3_dymaxion.js
  5. +23 −20 index.html
  6. +129 −0 land.json
  7. +664 −0 protovis_dymaxion.js
  8. BIN thumbnail.png
View
BIN .DS_Store
Binary file not shown.
View
6 README.md
@@ -1,4 +1,8 @@
d3_dymaxion
===========
-d3 dymaxion fiddling
+Fiddling with implementing Protovis' dymaxion projection in D3.
+
+Code hacked together from:
+http://mbostock.github.com/protovis/ex/dymax.html
+http://bl.ocks.org/3712397
View
160 boundaries.json
@@ -0,0 +1,160 @@
+{"type":"GeometryCollection","geometries":[
+{"type":"LineString","coordinates":[[-62.84648,-22.03499],[-63.98684,-21.99363],[-64.37702,-22.79811],[-64.96488,-22.07584],[-66.27334,-21.83231],[-67.10668,-22.73592],[-67.82818,-22.8729],[-68.21991,-21.49434],[-68.75717,-20.37267],[-68.44222,-19.40508],[-68.96682,-18.98166],[-69.10026,-18.26012],[-69.59042,-17.58002],[-68.95965,-16.50068],[-69.38977,-15.66012],[-69.16036,-15.32395],[-69.33953,-14.9532],[-68.94888,-14.45364],[-68.92923,-13.60267],[-68.88007,-12.89972],[-68.66509,-12.56131],[-69.52969,-10.9517],[-68.78616,-11.03636],[-68.27124,-11.0145],[-68.04819,-10.71207],[-67.1738,-10.30681],[-66.64691,-9.9313],[-65.33844,-9.76197],[-65.44484,-10.51142],[-65.32189,-10.89584],[-65.40227,-11.56629],[-64.31635,-12.462],[-63.1965,-12.62704],[-62.80305,-13.00067],[-62.12707,-13.19877],[-61.71322,-13.48921],[-61.08412,-13.47939],[-60.50331,-13.77597],[-60.4592,-14.35399],[-60.26433,-14.64596],[-60.25115,-15.07722],[-60.54296,-15.09391],[-60.15839,-16.25827],[-58.24121,-16.29956],[-58.38806,-16.87711],[-58.28081,-17.27169],[-57.73455,-17.55249],[-57.49838,-18.17419],[-57.676,-18.96185],[-57.95,-19.4],[-57.85379,-19.97001],[-58.16639,-20.17672],[-58.18347,-19.86842],[-59.11504,-19.35688],[-60.04357,-19.34273],[-61.78634,-19.63372],[-62.26596,-20.51375],[-62.29117,-21.05164],[-62.68505,-22.24903],[-62.84648,-22.03499]]},
+{"type":"LineString","coordinates":[[-130.53611,54.80278],[-129.98,55.285],[-130.00778,55.91583],[-131.70781,56.55212],[-132.73042,57.6929],[-133.35556,58.41028],[-134.27111,58.86111],[-134.945,59.27056],[-135.47583,59.78778],[-136.47972,59.46389],[-137.4525,58.905],[-138.34089,59.56211],[-139.039,60.0],[-140.013,60.27682],[-140.99778,60.30639],[-140.9925,66.00003],[-140.986,69.712]]},
+{"type":"LineString","coordinates":[[-117.12776,32.53534],[-115.99135,32.61239],[-114.72139,32.72083],[-114.815,32.52528],[-113.30498,32.03914],[-111.02361,31.33472],[-109.04339,31.33998],[-108.24194,31.34222],[-108.24,31.75485],[-106.50759,31.75452],[-106.1429,31.39995],[-105.63159,31.08383],[-105.03737,30.64402],[-104.70575,30.12173],[-104.45697,29.57196],[-103.94,29.27],[-103.11,28.97],[-102.48,29.76],[-101.6624,29.7793],[-100.9576,29.38071],[-100.45584,28.69612],[-100.11,28.11],[-99.52,27.54],[-99.3,26.84],[-99.02,26.37],[-98.24,26.06],[-97.53,25.84],[-97.14,25.87]]},
+{"type":"LineString","coordinates":[[-90.09555,13.73534],[-90.06467,13.88197],[-89.72193,14.13423],[-89.53423,14.24483],[-89.58734,14.3626],[-89.35334,14.42414],[-89.14553,14.67802],[-89.22523,14.8743],[-89.15481,15.06643],[-88.68069,15.34624],[-88.22501,15.72772]]},
+{"type":"LineString","coordinates":[[-92.22776,14.53883],[-92.20323,14.83011],[-92.08721,15.06459],[-92.22925,15.25144],[-91.74796,16.06658],[-90.46448,16.06956],[-90.43887,16.41012],[-90.60084,16.47077],[-90.71182,16.68748],[-91.08167,16.91847],[-91.45392,17.2522],[-91.00226,17.25465],[-91.00151,17.8176],[-90.06794,17.81932],[-89.14307,17.80831]]},
+{"type":"LineString","coordinates":[[-88.93062,15.88728],[-89.22913,15.88695],[-89.1508,17.01557],[-89.14307,17.80831],[-89.15091,17.95546],[-89.02985,18.00152],[-88.84834,17.8832],[-88.49012,18.48683],[-88.30002,18.49999]]},
+{"type":"LineString","coordinates":[[-89.35334,14.42414],[-89.0585,14.34002],[-88.84306,14.1405],[-88.54123,13.98016],[-88.50399,13.84549],[-88.06533,13.96463],[-87.85952,13.89331],[-87.72351,13.78506],[-87.79312,13.38448]]},
+{"type":"LineString","coordinates":[[-87.31665,12.98469],[-87.00576,13.02579],[-86.88057,13.25421],[-86.73383,13.26309],[-86.75509,13.75486],[-86.5207,13.77848],[-86.31214,13.77137],[-86.09625,14.03818],[-85.80129,13.83604],[-85.69867,13.96008],[-85.51441,14.07901],[-85.16536,14.35437],[-85.14875,14.56019],[-85.05278,14.55155],[-84.92449,14.79049],[-84.82004,14.81959],[-84.64959,14.6668],[-84.44934,14.62161],[-84.22835,14.74876],[-83.97573,14.74944],[-83.62858,14.88008],[-83.48998,15.01626],[-83.14723,14.99583]]},
+{"type":"LineString","coordinates":[[-82.96578,8.22505],[-82.91318,8.42353],[-82.82976,8.6263],[-82.86866,8.80726],[-82.71918,8.92572],[-82.92716,9.07433],[-82.93289,9.47682],[-82.5462,9.56616]]},
+{"type":"LineString","coordinates":[[-83.65562,10.93878],[-83.89506,10.72683],[-84.19019,10.79347],[-84.35594,10.99924],[-84.67308,11.08265],[-84.90301,10.9523],[-85.56185,11.21712],[-85.71254,11.08844]]},
+{"type":"LineString","coordinates":[[-77.35337,8.6705],[-77.47472,8.5243],[-77.24256,7.93528],[-77.43112,7.63806],[-77.75341,7.70984],[-77.88158,7.22378]]},
+{"type":"LineString","coordinates":[[-71.33159,11.77627],[-71.97392,11.60868],[-72.22758,11.10871],[-72.61466,10.82199],[-72.90527,10.45034],[-73.0276,9.73676],[-73.30496,9.152],[-72.78873,9.08504],[-72.6605,8.62528],[-72.43986,8.40527],[-72.3609,8.00263],[-72.47968,7.63249],[-72.4445,7.4238],[-72.19836,7.34044],[-71.96018,6.9916],[-70.67423,7.08779],[-70.09331,6.96038],[-69.38948,6.09986],[-68.98532,6.2068],[-68.26506,6.15328],[-67.69508,6.26731],[-67.34145,6.09546],[-67.52153,5.55688],[-67.7447,5.22112],[-67.82302,4.50394],[-67.62185,3.8395],[-67.33755,3.54234],[-67.30318,3.31846],[-67.80995,2.82066],[-67.4471,2.60028],[-67.1813,2.25064],[-66.87632,1.25336],[-67.06505,1.13013],[-67.26,1.72],[-67.5378,2.03717],[-67.86857,1.69244],[-69.81697,1.7148],[-69.80459,1.08907],[-69.21863,0.98567],[-69.25244,0.60267],[-69.4524,0.70613],[-70.01556,0.54143],[-70.02065,-0.18514],[-69.57707,-0.54999],[-69.42049,-1.12262],[-69.44409,-1.55629],[-69.89363,-4.29817],[-70.39405,-3.76657],[-70.69268,-3.74285],[-70.0477,-2.72518],[-70.81346,-2.25687],[-71.41363,-2.34281],[-71.77477,-2.1698],[-72.32578,-2.43421],[-73.0704,-2.30893],[-73.65951,-1.26049],[-74.1224,-1.00283],[-74.4416,-0.53081],[-75.10663,-0.05717],[-75.37323,-0.15202],[-75.80146,0.08478],[-76.29231,0.41604],[-76.57638,0.25692],[-77.42499,0.3957],[-77.66862,0.82591],[-77.85505,0.80991],[-78.85527,1.38093]]},
+{"type":"LineString","coordinates":[[-75.37323,-0.15202],[-75.23371,-0.9114],[-75.545,-1.56162],[-76.6354,-2.60868],[-77.83792,-3.003],[-78.4507,-3.87307],[-78.63989,-4.54779],[-79.20529,-4.95915],[-79.62498,-4.45418],[-80.02891,-4.34608],[-80.44225,-4.42574],[-80.46929,-4.0593],[-80.18401,-3.82114],[-80.30256,-3.40486]]},
+{"type":"LineString","coordinates":[[-69.52969,-10.9517],[-70.09376,-11.12396],[-70.5487,-11.00916],[-70.48189,-9.49009],[-71.30242,-10.07944],[-72.18489,-10.05359],[-72.56304,-9.52021],[-73.2267,-9.46221],[-73.01539,-9.03283],[-73.57105,-8.42442],[-73.98725,-7.5238],[-73.7234,-7.34099],[-73.72449,-6.91858],[-73.12002,-6.62995],[-73.21971,-6.08918],[-72.96451,-5.74126],[-72.89192,-5.27455],[-71.74841,-4.594],[-70.92885,-4.40161],[-70.79478,-4.25124],[-69.89363,-4.29817]]},
+{"type":"LineString","coordinates":[[-66.95992,-54.89681],[-67.56244,-54.87001],[-68.63335,-54.86949],[-68.63411,-52.63625]]},
+{"type":"LineString","coordinates":[[-68.63411,-52.29890],[-69.49835,-52.14277],[-71.9148,-52.00901],[-72.32939,-51.42596],[-72.30997,-50.67703],[-72.97574,-50.74144],[-73.32806,-50.37878],[-73.41543,-49.31844],[-72.64824,-48.87863],[-72.33116,-48.24422],[-72.44736,-47.73853],[-71.91726,-46.88486],[-71.552,-45.56071],[-71.65932,-44.97368],[-71.22278,-44.78423],[-71.32981,-44.40753],[-71.79361,-44.20717],[-71.46405,-43.7876],[-71.91543,-43.40859],[-72.14891,-42.25491],[-71.74681,-42.0514],[-71.91572,-40.83232],[-71.68075,-39.80817],[-71.41351,-38.91603],[-70.81466,-38.55301],[-71.11861,-37.57684],[-71.12188,-36.65814],[-70.36477,-36.00509],[-70.38804,-35.16968],[-69.81731,-34.19355],[-69.81479,-33.2739],[-70.0744,-33.09122],[-70.53506,-31.36499],[-69.91901,-30.33634],[-70.01355,-29.36791],[-69.65614,-28.45912],[-69.00125,-27.52118],[-68.29554,-26.89935],[-68.59479,-26.50689],[-68.38601,-26.18499],[-68.41764,-24.51857],[-67.32844,-24.02529],[-66.98524,-22.98633],[-67.10668,-22.73592]]},
+{"type":"LineString","coordinates":[[-58.42708,-33.90945],[-58.34962,-33.26317],[-58.13264,-33.04059],[-58.14244,-32.0445],[-57.87493,-31.01654],[-57.62512,-30.2163],[-56.97601,-30.10968],[-55.97323,-30.88306],[-55.60151,-30.85387],[-54.57245,-31.49453],[-53.78795,-32.04724],[-53.20959,-32.72765],[-53.65054,-33.20202],[-53.37365,-33.76836]]},
+{"type":"LineString","coordinates":[[-54.62529,-25.73927],[-54.78879,-26.62181],[-55.69585,-27.38783],[-56.48671,-27.54852],[-57.60976,-27.39588],[-58.61817,-27.12372],[-57.63366,-25.60367],[-57.77723,-25.16236],[-58.80713,-24.77146],[-60.02896,-24.0328],[-60.84657,-23.88073],[-62.68505,-22.24903]]},
+{"type":"LineString","coordinates":[[-57.85379,-19.97001],[-58.16639,-20.17672],[-57.87068,-20.73271],[-57.93715,-22.09017],[-56.8815,-22.28217],[-56.47333,-22.08629],[-55.79796,-22.35692],[-55.61068,-22.6556],[-55.51764,-23.57202],[-55.40074,-23.95695],[-55.02791,-24.00127],[-54.65283,-23.8396],[-54.29296,-24.02104],[-54.29347,-24.57081],[-54.42896,-25.1622],[-54.62529,-25.73927],[-54.13004,-25.54761],[-53.62834,-26.12487],[-53.64874,-26.9235],[-54.49072,-27.47473],[-55.16228,-27.88193],[-56.29089,-28.85276],[-57.62512,-30.2163]]},
+{"type":"LineString","coordinates":[[-59.7583,8.36702],[-60.55058,7.7796],[-60.63796,7.415],[-60.29567,7.04392],[-60.54399,6.85659],[-61.15935,6.69608],[-61.13941,6.23431],[-61.41031,5.95906],[-60.73358,5.20027],[-60.60117,4.91809],[-60.96689,4.53646],[-62.08542,4.16212],[-62.80454,4.00697],[-63.0932,3.77057],[-63.88835,4.02052],[-64.62866,4.14849],[-64.81608,4.05646],[-64.36849,3.79721],[-64.40882,3.12679],[-64.27,2.49699],[-63.42288,2.41108],[-63.36879,2.20091],[-64.0831,1.91637],[-64.19929,1.49286],[-64.61102,1.32873],[-65.35472,1.09527],[-65.54826,0.78927],[-66.32577,0.72448],[-66.87632,1.25336]]},
+{"type":"LineString","coordinates":[[-57.14745,5.97315],[-57.30724,5.07356],[-57.91429,4.81263],[-57.8602,4.5768],[-58.04469,4.06086],[-57.60157,3.33466],[-57.28144,3.33348],[-57.1501,2.76894],[-56.53939,1.89953],[-56.78272,1.86371],[-57.33583,1.94853],[-57.66098,1.6826],[-58.11345,1.5072],[-58.42949,1.46394],[-58.54001,1.26811],[-59.03087,1.31769],[-59.64605,1.7869],[-59.71853,2.24963],[-59.97453,2.75522],[-59.81542,3.60649],[-59.53805,3.9588],[-59.76741,4.4235],[-60.11101,4.57497],[-59.98095,5.01408],[-60.21368,5.24448],[-60.73358,5.20027]]},
+{"type":"LineString","coordinates":[[-53.95804,5.75655],[-54.47863,4.89676],[-54.39953,4.2126],[-54.00693,3.62005],[-54.18173,3.18978],[-54.2697,2.7324],[-54.52476,2.31184],[-55.0976,2.52374],[-55.56976,2.4215],[-55.97333,2.51036],[-56.07335,2.22079],[-55.90561,2.02199],[-55.9957,1.81768],[-56.53939,1.89953]]},
+{"type":"LineString","coordinates":[[-51.65779,4.15623],[-52.24933,3.24111],[-52.55642,2.50471],[-52.93965,2.12486],[-53.41845,2.05339],[-53.55485,2.33492],[-53.77853,2.3767],[-54.08807,2.10555],[-54.52476,2.31184]]},
+{"type":"LineString","coordinates":[[115.45071,5.44772],[115.40568,4.95523],[115.34746,4.31665],[114.86956,4.34832],[114.65957,4.00764],[114.20402,4.52587]]},
+{"type":"LineString","coordinates":[[46.14361,38.7412],[45.45775,38.87413],[44.9527,39.33577],[44.79398,39.71300],[45.002,39.74],[45.29817,39.47175],[45.74,39.474],[45.73536,39.31972],[46.14361,38.7412]]},
+{"type":"LineString","coordinates":[[-6.1979,53.86758],[-6.95373,54.07372],[-7.57215,54.05997],[-7.36601,54.59582],[-7.57215,55.13163]]},
+{"type":"LineString","coordinates":[[-16.71371,13.59496],[-15.62459,13.62358],[-15.39878,13.86036],[-15.08175,13.87649],[-14.687,13.63036],[-14.37672,13.62569],[-14.04699,13.79407],[-13.84498,13.50505],[-14.27771,13.28059],[-14.71219,13.2982],[-15.14116,13.5095],[-15.51181,13.27858],[-15.691,13.27036],[-15.9313,13.13029],[-16.84151,13.15138]]},
+{"type":"LineString","coordinates":[[35.54564,32.39399],[35.54522,31.78251],[35.39758,31.48909]]},
+{"type":"LineString","coordinates":[[28.97826,-28.95557],[29.32515,-29.25739],[29.0184,-29.74375],[28.84839,-30.07004],[28.29106,-30.22624],[28.10721,-30.54571],[27.74941,-30.64513],[26.99928,-29.87593],[27.5325,-29.24269],[28.07434,-28.85146],[28.5417,-28.6475],[28.97826,-28.95557]]},
+{"type":"LineString","coordinates":[[-8.66558,27.65642],[-8.66512,27.58947],[-8.6844,27.39574],[-8.6873,25.88107],[-11.96943,25.93337],[-11.93723,23.37461],[-12.87424,23.28482],[-13.11875,22.77124],[-12.9291,21.32709],[-16.84519,21.33332],[-17.06341,20.99976]]},
+{"type":"LineString","coordinates":[[-8.6844,27.39574],[-4.92332,24.97457],[-6.45376,24.95659],[-5.97114,20.64084],[-5.48853,16.32509],[-5.31528,16.20185],[-5.53775,15.5017],[-9.55021,15.48651],[-9.70028,15.26411],[-10.08685,15.33048],[-10.65078,15.13274],[-11.34911,15.41125],[-11.66609,15.38822],[-11.83421,14.79911],[-12.17074,14.61683],[-12.83064,15.3037],[-13.43575,16.03938],[-14.09952,16.30431],[-14.57735,16.59825],[-15.13572,16.58729],[-15.62365,16.36935],[-16.12067,16.45568],[-16.46309,16.13505]]},
+{"type":"LineString","coordinates":[[-12.17074,14.61683],[-12.12489,13.99472],[-11.92773,13.42209],[-11.5534,13.14122],[-11.46791,12.75453],[-11.51393,12.44298],[-11.6583,12.38659],[-12.20354,12.46564],[-12.27857,12.35444],[-12.49903,12.33209],[-13.2178,12.57588],[-13.70048,12.58619],[-15.54849,12.62818],[-15.81656,12.51558],[-16.14773,12.54776],[-16.67744,12.38487]]},
+{"type":"LineString","coordinates":[[-13.70048,12.58619],[-13.71874,12.24719],[-13.82829,12.14264],[-13.74317,11.81128],[-13.9008,11.67873],[-14.1214,11.67713],[-14.38219,11.50926],[-14.68568,11.52781],[-15.1303,11.04041]]},
+{"type":"LineString","coordinates":[[-11.51393,12.44298],[-11.45614,12.07682],[-11.29757,12.07796],[-11.03654,12.21126],[-10.87083,12.17789],[-10.59323,11.92399],[-10.16521,11.84409],[-9.89098,12.06048],[-9.5679,12.19423],[-9.3276,12.33429],[-9.12748,12.30807],[-8.90528,12.08836],[-8.78609,11.81257],[-8.37631,11.39364],[-8.58129,11.13625],[-8.62032,10.8109],[-8.4073,10.90927],[-8.28235,10.7926],[-8.33538,10.49482],[-8.02994,10.20653],[-8.22932,10.12902],[-8.30962,9.78954],[-8.07912,9.37623],[-7.83207,8.57572],[-8.20351,8.45546],[-8.29903,8.31644],[-8.2218,8.12334],[-8.28071,7.68719],[-8.43928,7.68605],[-8.72213,7.71166],[-8.92606,7.30904],[-9.20878,7.31391],[-9.40335,7.52691],[-9.33729,7.92853],[-9.75536,8.54106],[-10.01655,8.4285],[-10.23011,8.4062],[-10.50548,8.34889],[-10.49432,8.71553],[-10.65478,8.9772],[-10.6224,9.26792],[-10.83915,9.68824],[-11.11749,10.04588],[-11.91726,10.04697],[-12.15032,9.85858],[-12.42593,9.83584],[-12.59673,9.62019],[-12.71195,9.34271],[-13.24655,8.90305]]},
+{"type":"LineString","coordinates":[[-11.43878,6.78591],[-11.19977,7.10585],[-11.14671,7.39671],[-10.69558,7.93945],[-10.23011,8.4062]]},
+{"type":"LineString","coordinates":[[-8.43928,7.68605],[-8.48545,7.39522],[-8.38545,6.9118],[-8.60288,6.46758],[-8.31134,6.19305],[-7.99371,6.12618],[-7.57014,5.70735],[-7.53973,5.31334],[-7.63536,5.18815],[-7.71216,4.36456]]},
+{"type":"LineString","coordinates":[[8.42096,36.94642],[8.21781,36.43318],[8.37634,35.47988],[8.14097,34.65513],[7.52448,34.09737],[7.61263,33.34412],[8.43046,32.74833],[8.43909,32.50628],[9.0556,32.10269],[9.48217,30.30756],[9.80566,29.42463],[9.86,28.96],[9.68387,28.14419],[9.7561,27.68826],[9.62904,27.14095],[9.71629,26.5122],[9.31942,26.09431],[9.91069,25.36545],[9.94824,24.93696],[10.30386,24.37931],[10.77137,24.56252],[11.56067,24.0979],[11.99952,23.47166],[8.57291,21.56565],[5.67758,19.60121],[4.26743,19.15528],[3.15813,19.05737],[3.14666,19.69359],[2.68357,19.85623],[2.06101,20.14222],[1.82323,20.6108],[-1.55004,22.79269],[-4.92332,24.97457]]},
+{"type":"LineString","coordinates":[[11.48879,33.137],[11.43226,32.3689],[10.94482,32.0818],[10.63688,31.76142],[9.95021,31.37606],[10.0566,30.96184],[9.97001,30.53932],[9.48217,30.30756]]},
+{"type":"LineString","coordinates":[[25.16482,31.56915],[24.80287,31.08929],[24.95762,30.6616],[24.70007,30.04419],[25.0,29.23865],[25.0,25.68249],[25.0,22.0],[25.0,20.00304],[23.85,20.0],[23.83766,19.58047],[19.84926,21.49509],[15.86085,23.40972],[14.85129,22.86295],[14.14385,22.49128],[13.58145,23.04051],[11.99952,23.47166]]},
+{"type":"LineString","coordinates":[[4.26743,19.15528],[4.27021,16.85222],[3.72345,16.18428],[3.63825,15.56812],[2.75001,15.40952],[1.38553,15.32357],[1.01579,14.96817],[0.37489,14.92892],[-0.26626,14.92431],[-0.51584,15.11616],[-1.06638,14.97384],[-2.00103,14.55902],[-2.19183,14.24641],[-2.96768,13.79815],[-3.10372,13.54126],[-3.52281,13.33766],[-4.0064,13.47249],[-4.28041,13.22843],[-4.42716,12.54266],[-5.22095,11.71387],[-5.19784,11.37514],[-5.47057,10.95127],[-5.40434,10.37075],[-5.81694,10.22255],[-6.05044,10.09637],[-6.20521,10.52406],[-6.49396,10.41131],[-6.66646,10.43081],[-6.85051,10.13899],[-7.62275,10.14724],[-7.8996,10.29739],[-8.02994,10.20653]]},
+{"type":"LineString","coordinates":[[0.37489,14.92892],[0.29563,14.44424],[0.42991,13.98873],[0.99305,13.33575],[1.02411,12.85183],[2.17711,12.62502],[2.15446,11.94014],[1.93598,11.64116],[1.44715,11.54771],[1.24346,11.11051],[0.89955,10.99733],[0.02381,11.01868],[-0.43869,11.09834],[-0.76157,10.93693],[-1.20334,11.00981],[-2.9404,10.96268],[-2.9639,10.39535],[-2.82749,9.64246],[-3.51189,9.90033],[-3.98044,9.86236],[-4.33025,9.61085],[-4.7799,9.82199],[-4.95464,10.15272],[-5.40434,10.37075]]},
+{"type":"LineString","coordinates":[[-2.85612,4.99446],[-2.8107,5.38905],[-3.24434,6.25046],[-2.98358,7.3797],[-2.56216,8.21963],[-2.82749,9.64246]]},
+{"type":"LineString","coordinates":[[1.0601,5.92883],[0.83695,6.27999],[0.5704,6.91436],[0.49098,7.41176],[0.71202,8.31247],[0.4612,8.67723],[0.36591,9.465],[0.36758,10.19122],[-0.04979,10.70692],[0.02381,11.01868]]},
+{"type":"LineString","coordinates":[[0.89955,10.99733],[0.77235,10.4708],[1.07782,10.17562],[1.42506,9.8254],[1.46306,9.33461],[1.66449,9.12859],[1.61894,6.83203],[1.86521,6.14215]]},
+{"type":"LineString","coordinates":[[2.15446,11.94014],[2.49018,12.23306],[2.84867,12.23565],[3.61119,11.66018],[3.57221,11.32793],[3.7971,10.73476],[3.60006,10.33219],[3.70541,10.06321],[3.22035,9.44416],[2.91231,9.13761],[2.7238,8.50686],[2.74905,7.87074],[2.6917,6.25881]]},
+{"type":"LineString","coordinates":[[3.61119,11.66018],[3.68062,12.5529],[3.96728,12.95612],[4.10792,13.5312],[4.36836,13.74749],[5.44304,13.86592],[6.44541,13.49278],[6.82043,13.1151],[7.33074,13.09804],[7.80469,13.34354],[9.01493,12.82666],[9.52494,12.8511],[10.11481,13.27726],[10.70105,13.24692],[10.9896,13.38733],[11.52779,13.32898],[12.30206,13.03718],[13.08401,13.59615],[13.31871,13.55635],[13.99534,12.46155],[14.18133,12.48366],[14.57718,12.08536],[14.46816,11.90475],[14.41539,11.57239],[13.57295,10.79858],[13.30865,10.16037],[13.16761,9.64062],[12.95548,9.41777],[12.75368,8.71776],[12.21888,8.30583],[12.06394,7.79981],[11.83932,7.39704],[11.74579,6.98139],[11.05877,6.64443],[10.49737,7.05535],[10.11829,7.03877],[9.52268,6.45349],[9.23319,6.44449],[8.75751,5.47967],[8.50026,4.77198]]},
+{"type":"LineString","coordinates":[[36.86623,22.0],[32.9,22.0],[29.02,22.0],[25.0,22.0]]},
+{"type":"LineString","coordinates":[[14.85129,22.86295],[15.09689,21.30851],[15.47106,21.04845],[15.48713,20.73042],[15.90327,20.38761],[15.68573,19.9572],[15.30045,17.92795],[15.24775,16.62729],[13.97217,15.68437],[13.54039,14.36712],[13.95672,13.99669],[13.95446,13.35345],[14.5958,13.33043],[14.49577,12.8594],[14.21351,12.80203],[14.18133,12.48366]]},
+{"type":"LineString","coordinates":[[23.83766,19.58047],[23.88689,15.61085],[23.02458,15.68072],[22.56795,14.94429],[22.3035,14.32682],[22.51202,14.09318],[22.18329,13.78648],[22.29658,13.37232],[22.03759,12.95547],[21.93681,12.58818],[22.28801,12.64605],[22.49762,12.26024],[22.50869,11.67936],[22.87622,11.38462],[22.86417,11.1424],[22.23111,10.97189],[21.72383,10.56707],[21.00086,9.47598],[20.05966,9.0127],[19.09398,9.07486],[18.81198,8.98291],[18.91103,8.6309],[18.38957,8.28131],[17.96492,7.89093],[16.70599,7.50833],[16.45616,7.73477],[16.29055,7.75432],[16.10625,7.49708],[15.27947,7.42191],[15.43609,7.6928],[15.12088,8.38215],[14.98002,8.79611],[14.54445,8.96587],[13.95422,9.54948],[14.17146,10.02137],[14.62721,9.92092],[14.90937,9.99212],[15.46788,9.98233],[14.92359,10.89135],[14.96018,11.55558],[14.89336,12.21905],[14.49577,12.8594]]},
+{"type":"LineString","coordinates":[[15.27947,7.42191],[14.77656,6.40851],[14.53656,6.22695],[14.45941,5.45177],[14.55895,5.03059],[14.47836,4.73261],[14.95094,4.21039],[15.03625,3.85136],[15.40537,3.3353],[15.86272,3.01354],[15.90736,2.55739],[16.01286,2.26763],[15.94091,1.72768],[15.14634,1.964],[14.3378,2.22788],[13.07584,2.26712],[12.95134,2.3216],[12.35935,2.19282],[11.75168,2.32675],[11.27643,2.26105],[9.64918,2.28386]]},
+{"type":"LineString","coordinates":[[11.27643,2.26105],[11.28508,1.05765],[9.83029,1.06793],[9.49287,1.01011]]},
+{"type":"LineString","coordinates":[[13.07584,2.26712],[13.00313,1.83092],[13.28262,1.31421],[14.02664,1.39568],[14.27627,1.19691],[13.84335,0.03876],[14.31643,-0.55263],[14.42545,-1.33338],[14.29924,-1.99826],[13.99239,-2.47079],[13.10961,-2.42876],[12.57527,-1.94848],[12.49573,-2.39171],[11.82095,-2.51416],[11.47805,-2.76563],[11.8551,-3.42687],[11.09378,-3.97882]]},
+{"type":"LineString","coordinates":[[16.01286,2.26763],[16.53704,3.19825],[17.13304,3.7282],[17.80991,3.56019],[18.45307,3.50439],[18.39378,2.90045],[18.09428,2.36573],[17.89882,1.74184],[17.7742,0.85566],[17.82653,0.2889],[17.66356,-0.0581],[17.63862,-0.42485],[17.52371,-0.74382],[16.86531,-1.22581],[16.40709,-1.74093],[15.97283,-2.71237],[16.00632,-3.53516],[15.75353,-3.85515],[15.17102,-4.3435],[14.5826,-4.97022],[14.20903,-4.7931],[14.14494,-4.51],[13.60021,-4.5001],[13.25824,-4.88298],[12.99552,-4.78112]]},
+{"type":"LineString","coordinates":[[22.86417,11.1424],[22.97755,10.71447],[23.55429,10.08926],[23.55722,9.68122],[23.39475,9.26506],[23.45903,8.95429],[23.80582,8.66631],[24.56735,8.22918],[25.11492,7.82509],[25.12415,7.50008],[25.79665,6.9793],[26.21343,6.5466],[26.46594,5.94671],[27.21339,5.55097],[27.37424,5.23396],[27.04407,5.12785],[26.40273,5.15087],[25.65047,5.25609],[25.27879,5.1704],[25.12886,4.92725],[24.80504,4.89724],[24.41053,5.10879],[23.29722,4.60968],[22.84147,4.71013],[22.70413,4.63305],[22.40512,4.02916],[21.65912,4.22434],[20.9276,4.32279],[20.29066,4.69167],[19.46778,5.03153],[18.93233,4.7095],[18.54299,4.2018],[18.45307,3.50439]]},
+{"type":"LineString","coordinates":[[36.42951,14.42211],[37.59377,14.2131],[37.90607,14.95943],[38.51295,14.50547],[39.09939,14.74064],[39.34061,14.53156],[40.02625,14.51959],[40.8966,14.11864],[41.1552,13.77333],[41.59855,13.45209],[42.00975,12.86583],[42.35156,12.54223],[42.77962,12.45541],[43.08123,12.69966]]},
+{"type":"LineString","coordinates":[[43.14528,11.46205],[42.77683,10.92687],[42.55493,11.10511],[42.31413,11.0342],[41.75557,11.05091],[41.73959,11.35511],[41.66176,11.6312],[42.0,12.1],[42.35156,12.54223]]},
+{"type":"LineString","coordinates":[[29.57947,-1.3413],[29.82151,-1.4433],[30.4191,-1.13465],[30.76986,-1.01454],[31.86617,-1.02736],[33.90371,-0.95]]},
+{"type":"LineString","coordinates":[[30.4191,-1.13465],[30.81615,-1.69893],[30.75832,-2.28723],[30.46966,-2.41383],[29.93833,-2.3485],[29.63217,-2.91785],[29.0249,-2.83924]]},
+{"type":"LineString","coordinates":[[23.91222,-10.92684],[24.01787,-11.23729],[23.90415,-11.72226],[24.07989,-12.1913],[23.93091,-12.56585],[24.01612,-12.91104],[21.93391,-12.89845],[21.88784,-16.0803],[22.56249,-16.89846],[23.21505,-17.52314],[21.37717,-17.93064],[18.9562,-17.78908],[18.26332,-17.30996],[14.20971,-17.35312],[14.05853,-17.42338],[13.46235,-16.97121],[12.81407,-16.94132],[12.21548,-17.11165],[11.73423,-17.3019]]},
+{"type":"LineString","coordinates":[[23.21505,-17.52314],[24.03385,-17.29586],[24.68234,-17.35343],[25.07695,-17.57881],[25.08444,-17.66179],[24.52072,-17.88715],[24.21738,-17.88934],[23.57902,-18.28128],[23.19686,-17.86906],[21.65502,-18.21916],[20.91066,-18.25222],[20.88111,-21.8143],[19.89546,-21.84914],[19.89576,-24.76778],[19.89474,-28.46111],[19.00214,-28.97243],[18.4649,-29.04547],[17.83615,-28.85637],[17.38749,-28.78353],[17.21895,-28.35594],[16.82399,-28.08215],[16.34494,-28.57668]]},
+{"type":"LineString","coordinates":[[32.07167,-26.73381],[31.86804,-27.17792],[31.28278,-27.2859],[30.68596,-26.74383],[30.67659,-26.39808],[30.94966,-26.02262],[31.04409,-25.73146],[31.33314,-25.6602],[31.83775,-25.84335]]},
+{"type":"LineString","coordinates":[[25.26424,-17.73654],[25.64918,-18.53603],[25.85039,-18.7144],[26.1648,-19.2931],[27.29649,-20.39151],[27.72473,-20.49908],[27.72726,-20.85179],[28.02138,-21.48597],[28.79466,-21.63944],[29.43219,-22.09133],[28.01724,-22.82777],[27.11944,-23.5743],[26.7864,-24.24067],[26.48575,-24.61634],[25.94167,-24.69635],[25.76585,-25.17485],[25.66468,-25.4868],[25.02517,-25.71968],[24.21127,-25.67024],[23.73354,-25.39013],[23.3121,-25.26868],[22.82427,-25.50045],[22.57952,-25.97943],[22.10597,-26.28027],[21.60588,-26.72653],[20.88959,-26.82855],[20.66644,-26.47743],[20.75859,-25.86813],[20.16573,-24.91796],[19.89576,-24.76778]]},
+{"type":"LineString","coordinates":[[30.27425,-15.5078],[30.33898,-15.88086],[31.17306,-15.86095],[31.63651,-16.072],[31.85201,-16.31943],[32.32825,-16.39206],[32.84764,-16.71338],[32.84985,-17.97904],[32.65489,-18.67209],[32.61201,-19.41936],[32.77271,-19.7156],[32.65973,-20.30429],[32.50871,-20.39531],[32.24502,-21.1165],[31.19143,-22.25152],[30.65984,-22.15158],[30.32288,-22.2716],[29.83905,-22.1022],[29.43219,-22.09133]]},
+{"type":"LineString","coordinates":[[32.83013,-26.7422],[32.07167,-26.73381],[31.98577,-26.29178],[31.83775,-25.84335],[31.75244,-25.48426],[31.93058,-24.36944],[31.67037,-23.65894],[31.19143,-22.25152]]},
+{"type":"LineString","coordinates":[[-9.03483,41.88057],[-8.67193,42.13468],[-8.26387,42.28046],[-8.01317,41.79087],[-7.4225,41.79207],[-7.25131,41.91835],[-6.66859,41.88338],[-6.38908,41.3818],[-6.85111,41.11109],[-6.86402,40.33086],[-7.02643,40.18454],[-7.06659,39.7119],[-7.49865,39.62956],[-7.09801,39.03007],[-7.37408,38.37305],[-7.02928,38.07575],[-7.16652,37.8039],[-7.53711,37.42892],[-7.45373,37.0978]]},
+{"type":"LineString","coordinates":[[2.98597,42.473],[1.82677,42.34338],[0.70159,42.79572],[0.33805,42.57955],[-1.50278,43.03401],[-1.90135,43.4228]]},
+{"type":"LineString","coordinates":[[9.9219,54.98309],[9.28204,54.83087],[8.52621,54.96274]]},
+{"type":"LineString","coordinates":[[6.18629,49.46383],[6.65823,49.20195],[8.09928,49.01778],[7.59369,48.33301],[7.46677,47.62058],[7.19222,47.44975],[6.73658,47.54182],[6.76873,47.2877],[6.03739,46.72576],[6.02258,46.27298],[6.50008,46.42967],[6.8436,45.99114],[6.80234,45.70861],[7.09666,45.33309],[6.74997,45.02855],[7.00757,44.25476],[7.54958,44.12791],[7.43519,43.69385]]},
+{"type":"LineString","coordinates":[[14.11966,53.75702],[14.3533,53.24819],[14.07448,52.98128],[14.43763,52.62485],[14.685,52.08996],[14.60707,51.74519],[15.01697,51.10668],[14.57075,51.00234],[14.307,51.11727],[14.05623,50.92691],[13.3381,50.73323],[12.96684,50.48408],[12.2401,50.26632],[12.41519,49.96912],[12.52105,49.5474],[13.03131,49.30705],[13.59594,48.87717],[13.24333,48.4161],[12.88411,48.28917],[13.02586,47.63758],[12.93264,47.46763],[12.62076,47.67239],[12.14136,47.70307],[11.42644,47.52378],[10.54449,47.56639],[10.40207,47.30247],[9.89607,47.58022],[9.59423,47.52507],[8.52258,47.83082],[8.3173,47.61359],[7.46677,47.62058]]},
+{"type":"LineString","coordinates":[[9.59423,47.52507],[9.63293,47.34759],[9.47998,47.10282],[9.93248,46.92073],[10.44271,46.89355],[10.36339,46.48358],[9.92284,46.31491],[9.18289,46.44021],[8.9663,46.03696],[8.48995,46.00517],[8.31664,46.16368],[7.75599,45.82452],[7.27385,45.77693],[6.8436,45.99114]]},
+{"type":"LineString","coordinates":[[10.44271,46.89355],[11.04856,46.75135],[11.16484,46.94159],[12.15308,47.11539],[12.3765,46.76756],[13.80648,46.50929],[13.69809,46.01679],[13.93764,45.59103]]},
+{"type":"LineString","coordinates":[[19.66064,54.4261],[20.89224,54.31253],[22.73109,54.32755],[23.244,54.22058],[23.48412,53.9125],[23.52753,53.47011],[23.80493,53.08975],[23.7992,52.6911],[23.1995,52.48697],[23.50799,52.02365],[23.52707,51.57847],[24.02998,50.70541],[23.92275,50.42488],[23.4265,50.3085],[22.51842,49.47678],[22.7764,49.0274],[22.55816,49.08574],[21.6078,49.4701],[20.88796,49.32879],[20.41583,49.43146],[19.82504,49.21713],[19.3207,49.57157],[18.90957,49.43586],[18.85314,49.49623],[18.39289,49.98865],[17.64943,50.04904],[17.55457,50.36213],[16.86874,50.47399],[16.71949,50.21574],[16.17624,50.42263],[16.23863,50.69774],[15.49095,50.78474],[15.01697,51.10668]]},
+{"type":"LineString","coordinates":[[24.31284,57.79344],[25.16459,57.97015],[25.60279,57.84754],[26.46356,57.47638],[27.28818,57.47452],[27.77004,57.24424],[27.85529,56.75931],[28.17669,56.16914],[27.10248,55.7833],[26.49434,55.6151]]},
+{"type":"LineString","coordinates":[[27.98112,59.47537],[28.1317,59.30083],[27.42015,58.72457],[27.7167,57.79191],[27.28818,57.47452]]},
+{"type":"LineString","coordinates":[[28.17669,56.16914],[29.22953,55.91837],[29.37153,55.6701],[29.89631,55.78945],[30.87394,55.55101],[30.97185,55.08155],[30.75755,54.81177],[31.38449,54.15704],[31.79142,53.97463],[31.73128,53.79404],[32.40558,53.61806],[32.69366,53.35145],[32.30455,53.13273],[31.49764,53.16743],[31.30521,53.074],[31.54,52.74208],[31.78597,52.10168],[30.92758,52.04234],[30.61948,51.82282],[30.55511,51.31949],[30.15737,51.41614],[29.25494,51.36823],[28.99283,51.60205],[28.61761,51.4277],[28.24163,51.57223],[27.45409,51.59229],[26.33797,51.83227],[25.32782,51.91067],[24.55312,51.88848],[24.00509,51.61744],[23.52707,51.57847]]},
+{"type":"LineString","coordinates":[[6.90515,53.48217],[7.09207,53.14405],[6.84286,52.22843],[6.58939,51.85203],[5.98866,51.85161],[6.15666,50.80374],[5.60695,51.03731],[4.97397,51.47502],[4.04709,51.26726],[3.31495,51.34577]]},
+{"type":"LineString","coordinates":[[6.15666,50.80375],[6.04305,50.12805],[5.78239,50.09033],[5.67404,49.52948],[4.7992,49.9854],[4.28603,49.90752],[3.58818,50.37898],[3.12326,50.78036],[2.6584,50.79683],[2.5136,51.14851]]},
+{"type":"LineString","coordinates":[[6.04305,50.12805],[6.24272,49.90224],[6.18629,49.46383],[5.89774,49.44268],[5.67404,49.52948]]},
+{"type":"LineString","coordinates":[[21.26844,55.19048],[22.31571,55.01531],[22.75775,54.85657],[22.65102,54.58274],[22.73109,54.32755]]},
+{"type":"LineString","coordinates":[[21.05579,56.03109],[22.20114,56.33781],[23.87824,56.27366],[24.8607,56.37252],[25.00095,56.16455],[25.53306,56.10029],[26.49434,55.6151],[26.5883,55.16717],[25.76843,54.84696],[25.53637,54.28243],[24.45067,53.90569],[23.48412,53.9125]]},
+{"type":"LineString","coordinates":[[18.85314,49.49623],[18.555,49.495],[18.4,49.315],[18.1705,49.2715],[18.105,49.044],[17.9135,48.9965],[17.8865,48.9035],[17.545,48.8],[17.102,48.817],[16.9603,48.59697],[16.4993,48.78581],[16.02965,48.7339],[15.25341,49.03908],[14.90144,48.96439],[14.33888,48.5553],[13.59594,48.87717]]},
+{"type":"LineString","coordinates":[[16.9603,48.59697],[16.88,48.47],[16.97965,48.1235],[16.90376,47.71487],[16.34058,47.7129],[16.53427,47.49616],[16.20228,46.85238],[16.01167,46.6836],[15.13707,46.6587],[14.63249,46.43182],[13.80648,46.50929]]},
+{"type":"LineString","coordinates":[[22.08561,48.42226],[22.64079,48.15023],[22.71053,47.88218],[22.09976,47.67244],[21.62649,46.99423],[21.02196,46.31607],[20.2202,46.12746],[19.59602,46.17173],[18.82982,45.90888],[18.45606,45.75947],[17.63005,45.95177],[16.88253,46.38063],[16.56483,46.50376],[16.37048,46.84131],[16.20228,46.85238]]},
+{"type":"LineString","coordinates":[[18.45,42.48],[18.56,42.65],[17.6749,43.02857],[17.2974,43.44636],[16.91617,43.66771],[16.45644,44.04124],[16.23966,44.35113],[15.75003,44.81873],[15.95934,45.23376],[16.31815,45.00411],[16.53493,45.21163],[17.00213,45.23376],[17.86178,45.06775],[18.55324,45.08158],[19.00548,44.86023],[19.39046,45.23653],[19.07276,45.52152],[18.82982,45.90888]]},
+{"type":"LineString","coordinates":[[22.55816,49.08574],[22.28082,48.82542],[22.08561,48.42226],[21.87223,48.31997],[20.8013,48.62385],[20.47357,48.56285],[20.23904,48.32757],[19.76945,48.20268],[19.66136,48.26664],[19.17436,48.11139],[18.77704,48.08175],[18.69651,47.88097],[17.85715,47.75843],[17.48849,47.86748],[16.97965,48.1235]]},
+{"type":"LineString","coordinates":[[16.56483,46.50376],[15.76872,46.23814],[15.67154,45.83417],[15.32395,45.7318],[15.32769,45.45235],[14.93524,45.47171],[14.59512,45.63496],[14.41197,45.46618],[13.71506,45.50032]]},
+{"type":"LineString","coordinates":[[26.61932,48.22074],[26.92416,48.12328],[27.23386,47.82678],[27.55115,47.40511],[28.12806,46.81046],[28.16,46.37156],[28.05442,45.94458],[28.23353,45.48827]]},
+{"type":"LineString","coordinates":[[28.55808,43.70748],[27.97013,43.81247],[27.24237,44.17599],[26.06514,43.9435],[25.56929,43.68843],[24.10071,43.74104],[23.33229,43.89701],[22.94485,43.82377],[22.65712,44.23492],[22.47398,44.40923],[22.70571,44.57801],[22.45903,44.70252],[22.14507,44.47841],[21.562,44.76893],[21.48351,45.18119],[20.87428,45.41638],[20.76216,45.73457],[20.2202,46.12746]]},
+{"type":"LineString","coordinates":[[22.65712,44.23492],[22.41044,44.00804],[22.50014,43.64281],[22.98603,43.21118],[22.60479,42.89852],[22.4366,42.58033],[22.54499,42.46136],[22.38054,42.32025],[21.91707,42.30365],[21.57663,42.24522],[21.3527,42.2068],[20.76216,42.05186],[20.7173,41.84711],[20.59023,41.85541],[20.52295,42.21787],[20.28374,42.32025],[20.0707,42.58863],[19.80159,42.5001],[19.73805,42.68824],[19.30449,42.19574],[19.37177,41.87755]]},
+{"type":"LineString","coordinates":[[22.71053,47.88218],[23.14223,48.09633],[23.76098,47.98559],[24.40203,47.98188],[24.8663,47.73753],[25.20775,47.89106],[25.94593,47.98717],[26.19743,48.22087],[26.61932,48.22074],[26.85781,48.36821],[27.52251,48.46713],[28.25953,48.15556],[28.67089,48.11816],[29.12267,47.8491],[29.05087,47.51021],[29.41514,47.34664],[29.55968,46.92859],[29.90884,46.67438],[29.83824,46.52534],[30.02464,46.42395],[29.76,46.35],[29.17064,46.37926],[29.07208,46.51768],[28.863,46.43788],[28.93373,46.25885],[28.66,45.94],[28.48527,45.59691],[28.23353,45.48827],[28.67978,45.30403],[29.14971,45.46492],[29.60326,45.29332]]},
+{"type":"LineString","coordinates":[[31.78597,52.10168],[32.15944,52.06125],[32.41207,52.28871],[32.71576,52.23845],[33.75268,52.33508],[34.39175,51.76887],[34.14198,51.56643],[34.22481,51.25601],[35.0222,51.20759],[35.37791,50.77394],[35.35613,50.5772],[36.62615,50.22559],[37.39346,50.38397],[38.01064,49.91566],[38.59501,49.92646],[40.06904,49.60105],[40.08079,49.30744],[39.67465,48.78382],[39.89562,48.23241],[39.73828,47.89893],[38.77056,47.82562],[38.25511,47.54641],[38.22356,47.10219]]},
+{"type":"LineString","coordinates":[[27.99673,42.00737],[27.13571,42.14149],[26.11706,41.82689],[26.10613,41.32889],[25.1972,41.23448],[24.49264,41.5839],[23.69208,41.30908],[22.95239,41.33801],[22.88138,41.99929],[22.38054,42.32025]]},
+{"type":"LineString","coordinates":[[22.95239,41.33801],[22.76177,41.3048],[22.59732,41.13049],[22.05537,41.14986],[21.67413,40.93128],[21.02005,40.84274],[20.60518,41.08622],[20.46315,41.51509],[20.59023,41.85541]]},
+{"type":"LineString","coordinates":[[26.11706,41.82689],[26.60418,41.56213],[26.29461,40.93625],[26.0569,40.82413]]},
+{"type":"LineString","coordinates":[[21.02005,40.84274],[21.0,40.58],[20.675,40.435],[20.615,40.11],[20.15,39.625]]},
+{"type":"LineString","coordinates":[[41.55407,41.53565],[42.61958,41.58318],[43.58274,41.09214],[43.75265,40.7402],[43.65642,40.25357],[44.4,40.005],[44.79398,39.71300],[44.10924,39.42815],[44.42142,38.28127],[44.22574,37.9716],[44.77267,37.17045],[44.29346,37.0015],[43.94225,37.25623],[42.7791,37.38527],[42.34957,37.22988],[41.21212,37.07436],[40.67326,37.09127],[39.52255,36.71605],[38.69985,36.71293],[38.16774,36.90121],[37.06675,36.62304],[36.73948,36.81752],[36.6854,36.25969],[36.41758,36.04062],[36.14976,35.82155]]},
+{"type":"LineString","coordinates":[[39.955,43.435],[40.07694,43.55309],[40.92219,43.38215],[42.3944,43.2203],[43.75598,42.74084],[43.93121,42.55496],[44.53763,42.712],[45.47026,42.50277],[45.7764,42.09244],[46.40498,41.86068],[46.1454,41.7228],[46.63794,41.18167],[46.50164,41.06444],[45.9626,41.12388],[45.21744,41.41145],[44.97248,41.24812],[43.58274,41.09214]]},
+{"type":"LineString","coordinates":[[28.59193,69.06479],[28.44595,68.36464],[29.97743,67.69829],[29.0546,66.94428],[30.21765,65.80598],[29.54444,64.94867],[30.4447,64.20445],[30.03587,63.55282],[31.5161,62.86768],[31.14001,62.35769],[30.21111,61.78003],[28.07,60.50352]]},
+{"type":"LineString","coordinates":[[46.50573,38.7706],[47.68508,39.50836],[48.06008,39.58225],[48.35551,39.28876],[48.01074,38.79402],[48.63435,38.27038],[48.88327,38.32026]]},
+{"type":"LineString","coordinates":[[35.71993,32.7092],[35.54564,32.39399],[35.18395,32.53252],[34.97467,31.86658],[35.2259,31.75433],[34.97052,31.61679],[34.92743,31.35344],[35.39758,31.48909],[35.42093,31.10005],[34.9226,29.50133],[34.26544,31.21936]]},
+{"type":"LineString","coordinates":[[38.79235,33.37868],[39.1955,32.161],[39.00486,32.01021],[37.00218,31.50841],[37.99883,30.5085],[37.66815,30.33867],[37.50361,30.00378],[36.7405,29.86529],[36.50122,29.50525],[36.06896,29.19751],[34.95603,29.35657]]},
+{"type":"LineString","coordinates":[[47.97453,29.97581],[47.30261,30.05907],[46.56871,29.09902],[44.7095,29.17888],[41.89,31.19],[40.4,31.89],[39.1955,32.161]]},
+{"type":"LineString","coordinates":[[48.56798,29.92679],[48.01456,30.45245],[48.00468,30.98514],[47.68526,30.98486],[47.84919,31.70919],[47.33466,32.46915],[46.10933,33.01729],[45.4167,33.96781],[45.64845,34.74813],[46.1518,35.09326],[46.07634,35.67738],[45.4206,35.97758],[44.77267,37.17045]]},
+{"type":"LineString","coordinates":[[53.92157,37.19892],[54.80032,37.39244],[55.5116,37.96412],[56.18036,37.93512],[56.61938,38.12139],[57.33044,38.02923],[58.43613,37.5223],[59.23473,37.41299],[60.37766,36.5274],[61.12308,36.4916],[61.2108,35.65008],[60.8032,34.40409],[60.52841,33.67645],[60.96369,33.52884],[60.53608,32.98127],[60.86364,32.18291],[60.94197,31.54808],[61.6993,31.37951],[61.78124,30.73585],[60.87424,29.82925],[61.36928,29.30327],[61.77184,28.69934],[62.72782,28.25965],[62.75544,27.37893],[63.23391,27.21704],[63.31665,26.75654],[61.87417,26.23997],[61.49739,25.07824]]},
+{"type":"LineString","coordinates":[[53.10858,16.65107],[52.78217,17.34973],[52.0,19.0],[55.0,20.0],[55.66666,22.0],[55.20833,22.70833]]},
+{"type":"LineString","coordinates":[[42.77934,16.34791],[43.21839,16.6669],[43.11579,17.08844],[43.3808,17.57999],[43.79151,17.31999],[44.0626,17.41036],[45.21667,17.43333],[45.4,17.33333],[46.36667,17.23333],[46.75,17.28333],[47.0,16.95],[47.46667,17.11667],[48.18333,18.16667],[49.11667,18.61667],[52.0,19.0]]},
+{"type":"LineString","coordinates":[[20.64559,69.10625],[21.97851,68.61685],[23.53949,67.93601],[23.56587,66.39607],[23.90337,66.00692]]},
+{"type":"LineString","coordinates":[[48.41612,28.55203],[47.70882,28.52605],[47.45981,29.00252],[46.56871,29.09902]]},
+{"type":"LineString","coordinates":[[51.38959,24.62738],[51.11243,24.55634],[50.81012,24.75475]]},
+{"type":"LineString","coordinates":[[56.07084,26.05546],[56.26104,25.71461]]},
+{"type":"LineString","coordinates":[[56.39685,24.92474],[55.88623,24.92083],[55.80412,24.26961],[55.98124,24.13055],[55.5286,23.9336],[55.52583,23.52488],[55.23447,23.11098],[55.20833,22.70833],[55.00683,22.49694],[52.00071,23.00114],[51.61772,24.01422],[51.57951,24.24549]]},
+{"type":"LineString","coordinates":[[49.10116,46.39933],[48.59325,46.56104],[48.69473,47.07562],[48.05725,47.74377],[47.31524,47.71585],[46.46645,48.39417],[47.04363,49.15207],[46.75157,49.356],[47.5495,50.45469],[48.57785,49.87476],[48.70235,50.60513],[50.76664,51.69278],[52.32875,51.71867],[54.53289,51.02623],[55.71694,50.62171],[56.77798,51.04356],[58.36332,51.06364],[59.64227,50.54545],[59.93282,50.8422],[61.33742,50.79905],[61.58798,51.27266],[59.96754,51.96042],[60.92724,52.44755],[60.74,52.72],[61.7,52.98],[60.97806,53.66501],[61.4366,54.00625],[65.17853,54.35423],[65.66687,54.60125],[68.16908,54.9704],[69.06817,55.38526],[70.86525,55.16974],[71.18015,54.1333],[72.22413,54.37665],[73.50854,54.03561],[73.42569,53.4898],[74.38482,53.54685],[76.89111,54.49052],[76.52521,54.17703],[77.80091,53.40441],[80.03556,50.86476],[80.56847,51.38836],[81.94597,50.81221],[83.383,51.06919],[83.93511,50.88925],[84.41639,50.31142],[85.11557,50.11731],[85.54128,49.69286],[86.82935,49.82668],[87.36,49.215],[86.59879,48.54917],[85.76823,48.45577],[85.7205,47.45298],[85.16428,47.00096],[83.18047,47.33003],[82.45894,45.53964],[81.94706,45.31702],[79.96611,44.91754],[80.86617,43.18039],[80.18012,42.92007],[80.26,42.35],[79.64365,42.49668],[79.1422,42.85609],[77.65841,42.96069],[76.00033,42.98801],[75.63696,42.87789],[74.21287,43.29833],[73.6453,43.09128],[73.48974,42.5009],[71.84461,42.8454],[71.18628,42.70429],[70.96231,42.26615],[70.38895,42.08132],[69.07001,41.38425],[68.63249,40.66867],[68.2599,40.66233],[67.98585,41.13599],[66.71406,41.16843],[66.51066,41.98764],[66.02336,41.99464],[66.09801,42.99766],[64.90082,43.72806],[63.18579,43.65008],[62.01328,43.50449],[61.05833,44.40583],[60.24,44.78404],[58.69,45.5],[58.50312,45.5868],[55.92894,44.99585],[55.9682,41.30864],[55.45522,41.25987],[54.75535,42.04397],[54.07943,42.3241],[52.9443,42.11605],[52.50246,41.78333]]},
+{"type":"LineString","coordinates":[[70.96231,42.26615],[71.25922,42.16772],[70.42,41.52],[71.15786,41.14358],[71.8701,41.3929],[73.05544,40.86602],[71.77488,40.14585],[71.01422,40.24436],[70.6014,40.21853],[70.45817,40.49651],[70.66661,40.96021],[69.3295,40.72783],[69.01162,40.08615],[68.53641,39.53344],[67.70144,39.58048],[67.44223,39.14015],[68.17602,38.90156],[68.39202,38.15702],[67.83,37.145],[67.07577,37.35614],[66.51862,37.36277],[66.54612,37.97471],[65.216,38.40269],[64.17024,38.89242],[63.51804,39.36327],[62.37425,40.05389],[61.88271,41.08485],[61.54718,41.26638],[60.46596,41.22034],[60.08334,41.42515],[59.97642,42.22308],[58.629,42.75154],[57.78651,42.17054],[56.93221,41.82603],[57.09642,41.32231],[55.9682,41.30864]]},
+{"type":"LineString","coordinates":[[66.51862,37.36277],[66.21737,37.39381],[65.74565,37.66118],[65.58894,37.30523],[64.74612,37.11181],[64.5465,36.31208],[63.98288,36.00795],[63.19352,35.85717],[62.98468,35.40405],[62.23067,35.27067],[61.2108,35.65008]]},
+{"type":"LineString","coordinates":[[67.83,37.145],[68.13557,37.02311],[68.85944,37.34435],[69.19628,37.15115],[69.51881,37.60899],[70.11657,37.58822],[70.27058,37.73516],[70.37629,38.13839],[70.80681,38.48628],[71.34814,38.25889],[71.23939,37.95327],[71.54191,37.90579],[71.4487,37.06565],[71.84461,36.73816],[72.19302,36.94829],[72.6369,37.04755],[73.26004,37.49525],[73.94868,37.42156],[74.98,37.42],[75.15802,37.13304],[74.5759,37.02084],[74.06757,36.83617],[72.92,36.72],[71.84627,36.50995],[71.26237,36.07438],[71.49877,35.65056],[71.61308,35.1532],[71.11501,34.73311],[71.15677,34.34892],[70.88181,33.98885],[69.93053,34.02012],[70.32358,33.35852],[69.68714,33.1055],[69.26252,32.50193],[69.31775,31.9014],[68.92665,31.62018],[68.55692,31.71332],[67.79271,31.58294],[67.68339,31.30314],[66.93889,31.3049],[66.38146,30.73891],[66.34645,29.88794],[65.04687,29.4722],[64.35044,29.56004],[64.14801,29.34081],[63.55024,29.46834],[62.54986,29.31857],[60.87424,29.82925]]},
+{"type":"LineString","coordinates":[[80.26,42.35],[80.11944,42.12395],[78.54369,41.58224],[78.1872,41.18531],[76.90446,41.06648],[76.52636,40.42796],[75.46783,40.56207],[74.77684,40.36643],[73.82225,39.89397],[73.96,39.66],[73.67538,39.43125],[71.78468,39.27946],[70.54915,39.60421],[69.46489,39.52669],[69.5596,40.10321],[70.64805,39.93576],[71.01422,40.24436]]},
+{"type":"LineString","coordinates":[[73.67538,39.43125],[73.92886,38.50583],[74.25751,38.6065],[74.86484,38.37885],[74.83,37.99],[74.98,37.42]]},
+{"type":"LineString","coordinates":[[75.15802,37.13304],[75.89691,36.66681],[76.19284,35.8984],[77.83746,35.49402],[76.87174,34.65355],[75.75705,34.50493],[74.2402,34.74888],[73.74992,34.3177],[74.1043,33.44146],[74.45157,32.7649],[75.25864,32.27111],[74.4059,31.69264],[74.42137,30.97982],[73.45067,29.97642],[72.82374,28.96158],[71.77769,27.91318],[70.61647,27.9892],[69.51439,26.94097],[70.16894,26.49189],[70.2829,25.72223],[70.84468,25.2151],[71.04327,24.35653],[68.8426,24.35914],[68.17665,23.69197]]},
+{"type":"LineString","coordinates":[[77.83746,35.49402],[78.91228,34.32193],[78.81109,33.50619],[79.20889,32.99441],[79.17612,32.48378],[78.45843,32.61818],[78.7389,31.5159],[79.72135,30.88273],[81.11123,30.18349],[80.47674,29.72985],[80.08844,28.79446],[81.0572,28.41611],[82.0,27.92549],[83.30422,27.36451],[84.67502,27.2349],[85.25176,26.72619],[86.0244,26.63098],[87.2275,26.3979],[88.06024,26.41463],[88.17483,26.81042],[88.0431,27.44582],[88.12045,27.87655],[88.7303,28.08689],[88.81426,27.29932],[88.83562,27.09896],[89.74455,26.71941],[90.37326,26.87572],[91.21752,26.80865],[92.03347,26.83831],[92.10371,27.45261],[91.69668,27.77175],[92.50312,27.89688],[93.41332,28.64066],[94.566,29.27745],[95.40481,29.03172],[96.11768,29.4528],[96.58659,28.83097],[96.24883,28.41103],[97.32714,28.26159],[97.4026,27.88252],[97.052,27.69906],[97.13399,27.08376],[96.41934,27.26458],[95.12475,26.57357],[95.15511,26.00132],[94.60324,25.16251],[94.55264,24.67524],[94.10677,23.85073],[93.3252,24.07856],[93.28635,23.04365],[93.06032,22.70312],[93.16609,22.27846],[92.67272,22.04124],[92.14605,23.62749],[91.86994,23.62436],[91.70648,22.98527],[91.15896,23.50352],[91.46773,24.07265],[91.91509,24.13041],[92.37621,24.9767],[91.79959,25.14743],[90.8722,25.1326],[89.92068,25.26975],[89.83251,25.96509],[89.35512,26.0144],[88.56306,26.44652],[88.20978,25.76807],[88.93153,25.23869],[88.30637,24.86608],[88.08441,24.50166],[88.69994,24.2337],[88.52977,23.63114],[88.8763,22.87914],[89.03197,22.0557]]},
+{"type":"LineString","coordinates":[[88.12045,27.87655],[86.95448,27.97425],[85.82335,28.20358],[85.01164,28.64277],[84.23459,28.83988],[83.89896,29.32023],[83.33711,29.46373],[82.3275,30.11528],[81.52582,30.42271],[81.11123,30.18349]]},
+{"type":"LineString","coordinates":[[88.81426,27.29932],[89.47578,28.04276],[90.01585,28.29644],[90.7305,28.06494],[91.25888,28.04061],[91.69668,27.77175]]},
+{"type":"LineString","coordinates":[[92.36853,20.67087],[92.30327,21.47549],[92.65226,21.32405],[92.67272,22.04124]]},
+{"type":"LineString","coordinates":[[97.32714,28.26159],[97.91196,28.33593],[98.24622,27.74724],[98.6827,27.50882],[98.71209,26.74355],[98.67181,25.9187],[97.7246,25.08365],[97.60473,23.89739],[98.66029,24.06329],[98.89876,23.14273],[99.532,22.94904],[99.24093,22.11832],[99.98348,21.74294],[100.41653,21.55885],[101.15,21.85],[101.17999,21.43656],[100.32915,20.78611],[100.11595,20.41785],[99.54328,20.18659],[98.95967,19.75298],[98.25373,19.70821],[97.79776,18.62709],[97.3759,18.44543],[97.85912,17.56795],[98.49374,16.83784],[98.90334,16.17783],[98.53734,15.30849],[98.19208,15.1237],[98.43083,14.62202],[99.09781,13.82751],[99.21199,13.26929],[99.19635,12.80476],[99.58729,11.89277],[99.0381,10.96054],[98.55355,9.93296]]},
+{"type":"LineString","coordinates":[[100.11595,20.41785],[100.54888,20.10923],[100.60629,19.50834],[101.28203,19.46258],[101.03595,18.40894],[101.05955,17.5125],[102.11357,18.10911],[102.41305,17.93278],[102.99873,17.9617],[103.20018,18.30964],[103.95649,18.24096],[104.71691,17.42886],[104.77932,16.44186],[105.58901,15.57032],[105.54432,14.72394],[105.21877,14.27322],[104.28142,14.41673],[102.98842,14.22573],[102.34808,13.39425],[102.58494,12.1866]]},
+{"type":"LineString","coordinates":[[101.17999,21.43656],[101.27001,21.20165],[101.80314,21.17437],[101.652,22.31819],[102.17046,22.46475],[102.75488,21.67514],[103.20385,20.76657],[104.43502,20.75873],[104.82263,19.88666],[104.18338,19.62467],[103.8965,19.26517],[105.09456,18.66697],[105.9258,17.48531],[106.556,16.6043],[107.3127,15.90855],[107.56452,15.20217],[107.38273,14.20243],[106.49635,14.57058],[106.04395,13.88109],[105.21877,14.27322]]},
+{"type":"LineString","coordinates":[[107.38273,14.20243],[107.61453,13.53555],[107.49141,12.33721],[105.81052,11.56762],[106.24964,10.96181],[105.19992,10.8893],[104.33436,10.48654]]},
+{"type":"LineString","coordinates":[[102.17046,22.46475],[102.70698,22.7088],[103.50454,22.70375],[104.47685,22.81915],[105.32923,23.35206],[105.81121,22.97689],[106.72542,22.79427],[106.56728,22.2182],[107.04341,21.8119],[108.05021,21.55237]]},
+{"type":"LineString","coordinates":[[102.14118,6.22163],[101.81431,5.8108],[101.15421,5.69138],[101.07548,6.20487],[100.25959,6.64283],[100.08576,6.46449]]},
+{"type":"LineString","coordinates":[[117.882,4.13755],[117.01522,4.30611],[115.86547,4.30657],[115.51906,3.16923],[115.13404,2.82149],[114.62135,1.43069],[113.80586,1.21755],[112.85979,1.49779],[112.38028,1.41012],[111.79753,0.90443],[111.15914,0.9765],[110.51404,0.77312],[109.83022,1.33813],[109.66326,2.00648]]},
+{"type":"LineString","coordinates":[[87.36,49.215],[87.75129,49.2972],[88.01382,48.59948],[88.85429,48.06908],[90.28085,47.69355],[90.9708,46.88813],[90.58577,45.71972],[90.94553,45.28606],[92.1339,45.11508],[93.4807,44.97548],[94.68895,44.35233],[95.30689,44.24132],[95.7625,43.31945],[96.34939,42.72563],[97.45175,42.74889],[99.51584,42.52469],[100.84584,42.66382],[101.83305,42.51488],[103.31231,41.90748],[104.52228,41.90836],[104.96501,41.59742],[106.12932,42.13433],[107.74477,42.48152],[109.24363,42.51945],[110.41212,42.87123],[111.12969,43.40684],[111.82961,43.74313],[111.6677,44.07318],[111.34839,44.45747],[111.87333,45.10208],[112.43609,45.01165],[113.46392,44.80891],[114.46035,45.33984],[115.98511,45.72722],[116.71786,46.3882],[117.42174,46.67273],[118.87431,46.80541],[119.66326,46.69268],[119.77282,47.04807],[118.86663,47.74705],[118.06414,48.06673],[117.29552,47.69771],[116.30894,47.85341],[115.74286,47.72655],[115.48532,48.13538],[116.19178,49.1346],[116.67878,49.88856],[117.87924,49.511],[119.28843,50.14288],[119.27939,50.58292],[120.18208,51.64355],[120.7382,51.96411],[120.72577,52.51624],[120.1771,52.75391],[121.00307,53.2514],[122.24576,53.43173],[123.57147,53.4588],[125.06821,53.16105],[125.94638,52.79281],[126.56443,51.78426],[126.93915,51.35389],[127.28745,50.73981],[127.6574,49.76028],[129.39782,49.4406],[130.58229,48.7297],[130.98726,47.79013],[132.50669,47.78896],[133.37357,48.18344],[135.02632,48.47824],[134.50081,47.57845],[134.11235,47.21249],[133.76966,46.11692],[133.09712,45.14409],[131.88343,45.32117],[131.02518,44.96796],[131.28858,44.11151],[131.14471,42.92999],[130.63386,42.90301],[130.64,42.395]]},
+{"type":"LineString","coordinates":[[87.75129,49.2972],[88.80554,49.47055],[90.71365,50.3318],[92.23469,50.80218],[93.10421,50.49529],[94.14757,50.48053],[94.81598,50.01342],[95.81402,49.97747],[97.25976,49.72605],[98.23173,50.42239],[97.82573,51.01101],[98.86146,52.04738],[99.98176,51.63401],[100.8895,51.51685],[102.06521,51.25992],[102.25589,50.51056],[103.67654,50.08997],[104.62158,50.27532],[105.88661,50.40603],[106.88883,50.27429],[107.86819,49.79372],[108.47518,49.28255],[109.40245,49.29296],[110.66199,49.13015],[111.58124,49.37796],[112.89773,49.54357],[114.36249,50.2483],[114.9621,50.14027],[115.48571,49.80517],[116.67878,49.88856]]},
+{"type":"LineString","coordinates":[[124.26566,39.9285],[125.07996,40.56981],[126.18203,41.10734],[126.86907,41.81656],[127.34382,41.50314],[128.20847,41.46677],[128.05222,41.99428],[129.59664,42.42499],[129.99421,42.9854],[130.64,42.395],[130.78,42.22]]},
+{"type":"LineString","coordinates":[[128.3497,38.61225],[128.20572,38.37039],[127.78007,38.30453],[127.07328,38.25611],[126.68371,37.80476],[126.23733,37.84038],[126.17475,37.7497]]},
+{"type":"LineString","coordinates":[[124.96869,-8.89277],[125.07,-9.09],[125.08854,-9.39317]]},
+{"type":"LineString","coordinates":[[141.00021,-2.60016],[141.01705,-5.85902],[141.03385,-9.11789]]},
+{"type":"LineString","coordinates":[[11.91494,-5.03796],[12.3186,-4.60621],[12.62076,-4.43803],[12.99552,-4.78112],[12.63162,-4.99126],[12.468,-5.24835],[12.43667,-5.68429],[12.18233,-5.78994]]},
+{"type":"LineString","coordinates":[[19.00548,44.86023],[19.36803,44.863],[19.11761,44.42307],[19.59976,44.03847],[19.454,43.56811],[19.21852,43.52384],[19.03165,43.43253],[18.70648,43.20011],[18.56,42.65]]},
+{"type":"LineString","coordinates":[[48.58437,41.80888],[47.98728,41.40582],[47.81566,41.15141],[47.37333,41.21974],[46.68607,41.82713],[46.40498,41.86068]]},
+{"type":"LineString","coordinates":[[42.34957,37.22988],[41.83708,36.60586],[41.28972,36.3588],[41.38399,35.62833],[41.00617,34.41938],[38.79235,33.37868],[36.83406,32.31293],[35.71993,32.7092],[35.70079,32.71601],[35.83641,32.86811],[35.82107,33.27743],[36.06646,33.8249],[36.61178,34.20179],[36.44818,34.59394],[35.99841,34.64492]]},
+{"type":"LineString","coordinates":[[35.82107,33.27743],[35.55278,33.26427],[35.46069,33.08904],[35.12605,33.09091]]},
+{"type":"LineString","coordinates":[[32.73178,35.14002],[32.91957,35.08783],[33.19097,35.17312],[33.38383,35.16271],[33.45592,35.10142],[33.47581,35.00034],[33.52568,35.03868],[33.67539,35.01786],[33.86643,35.09359],[33.97361,35.05850]]},
+{"type":"LineString","coordinates":[[19.21852,43.52384],[19.48389,43.35229],[19.63,43.21377],[19.95857,43.10604],[20.3398,42.89852],[20.25758,42.81275],[20.0707,42.58863]]},
+{"type":"LineString","coordinates":[[44.97248,41.24812],[45.17947,40.98537],[45.56032,40.81229],[45.35919,40.56149],[45.89191,40.21848],[45.61,39.9],[46.03452,39.62802],[46.48351,39.46415],[46.50573,38.7706],[46.14361,38.7412]]},
+{"type":"LineString","coordinates":[[-122.84,49.0],[-120.0,49.0],[-117.03121,49.0],[-116.04818,49.0],[-113.0,49.0],[-110.05,49.0],[-107.05,49.0],[-104.04826,48.99986],[-100.65,49.0],[-97.22872,49.0007],[-95.15906,49.0],[-95.15609,49.38425],[-94.81758,49.38905],[-94.64,48.84],[-94.32914,48.67074],[-93.63087,48.60926],[-92.61,48.45],[-91.64,48.14],[-90.83,48.27],[-89.6,48.01],[-89.27291,48.01980],[-88.37811,48.30291],[-87.43979,47.94],[-86.46199,47.55333],[-85.65236,47.22021],[-84.87607,46.90008],[-84.77923,46.63710],[-84.54374,46.53868],[-84.6049,46.4396],[-84.3367,46.40877],[-84.14211,46.51222],[-84.09185,46.27541],[-83.89076,46.11692],[-83.61613,46.11692],[-83.46955,45.99468],[-83.59285,45.81689],[-82.55092,45.34751],[-82.33776,44.44],[-82.13764,43.57108],[-82.43,42.98],[-82.9,42.43],[-83.12,42.08],[-83.14199,41.97568],[-83.02981,41.83279],[-82.69008,41.67510],[-82.43927,41.67510],[-81.27774,42.20902],[-80.24744,42.36619],[-78.93936,42.86361],[-78.92,42.965],[-79.01,43.27],[-79.17167,43.46633],[-78.72027,43.62508],[-77.73788,43.62905],[-76.82003,43.62878],[-76.5,44.01845],[-76.375,44.09631],[-75.31821,44.81645],[-74.867,45.00048],[-73.34783,45.00738],[-71.50506,45.0082],[-71.405,45.255],[-71.08482,45.30524],[-70.66,45.46],[-70.305,45.915],[-69.99997,46.69307],[-69.23721,47.44778],[-68.905,47.185],[-68.23444,47.35486],[-67.79046,47.06636],[-67.79134,45.70281],[-67.13741,45.13753]]},
+{"type":"LineString","coordinates":[[38.41008,17.9983],[37.90399,17.42754],[37.16747,17.26315],[36.85253,16.95655],[36.75389,16.29186],[36.32322,14.82249],[36.42951,14.42211],[36.27022,13.56333],[35.86363,12.57828],[35.26049,12.08286],[34.83163,11.31896],[34.73115,10.91017],[34.25745,10.63009],[33.96162,9.58359],[33.97498,8.68456],[33.8255,8.37917],[33.29479,8.35458],[32.95418,7.78497],[33.56829,7.71334],[34.0751,7.22595],[34.25032,6.82607],[34.70702,6.59422],[35.29800,5.506],[34.62019,4.84712],[34.005,4.24988],[33.39,3.79],[32.68642,3.79233],[31.88145,3.55827],[31.24556,3.7819],[30.83385,3.50917],[29.95349,4.1737],[29.716,4.60079],[29.15908,4.38927],[28.69668,4.45509],[28.429,4.28716],[27.97999,4.40841],[27.37424,5.23396]]},
+{"type":"LineString","coordinates":[[42.77683,10.92687],[42.55876,10.57258],[42.92812,10.02194],[43.29699,9.54048],[43.67875,9.18358],[46.94834,7.99688],[47.78942,8.003],[44.9636,5.00162],[43.66087,4.95755],[42.76967,4.2526],[42.12861,4.23413],[41.85508,3.91891],[40.98105,2.78452],[40.993,-0.85829],[41.58513,-1.68325]]},
+{"type":"LineString","coordinates":[[41.85508,3.91891],[41.1718,3.91909],[40.76848,4.25702],[39.85494,3.83879],[39.55938,3.42206],[38.89251,3.50074],[38.67114,3.61607],[38.43697,3.58851],[38.12091,3.59860],[36.85509,4.44786],[36.15907,4.44786],[35.81744,4.77696],[35.81744,5.33823],[35.29800,5.506]]},
+{"type":"LineString","coordinates":[[39.20222,-4.67677],[37.7669,-3.67712],[37.69869,-3.09699],[34.07262,-1.05982],[33.90371,-0.95],[33.89356,0.10981],[34.18,0.515],[34.6721,1.17694],[35.03599,1.90584],[34.59607,3.05374],[34.47913,3.5556],[34.005,4.24988]]},
+{"type":"LineString","coordinates":[[-2.1699,35.16841],[-1.79299,34.52791],[-1.73346,33.91971],[-1.38804,32.86402],[-1.12453,32.65153],[-1.30788,32.26288],[-2.61662,32.09434],[-3.06899,31.7245],[-3.64749,31.63731],[-3.69043,30.89696],[-4.85964,30.50119],[-5.24213,30.00044],[-6.06063,29.7317],[-7.05922,29.57924],[-8.67411,28.8413],[-8.66558,27.65642],[-8.81782,27.65642],[-8.79488,27.12069],[-9.41303,27.08847],[-9.73534,26.86094],[-10.18942,26.86094],[-10.55126,26.99080],[-11.39255,26.88342],[-11.71821,26.10409],[-12.03075,26.03086],[-12.50096,24.77011],[-13.89111,23.69100],[-14.22116,22.31016],[-14.63083,21.86093],[-14.75095,21.50060],[-17.00296,21.42073]]},
+{"type":"LineString","coordinates":[[11.02737,58.85617],[11.46824,59.4324],[12.30039,60.11794],[12.63116,61.29359],[11.99206,61.80037],[11.93056,63.12832],[12.57993,64.06625],[13.57193,64.04912],[13.91991,64.44543],[13.55569,64.78703],[15.10842,66.19387],[16.10868,67.30243],[16.76889,68.01393],[17.72916,68.01055],[17.99386,68.56741],[19.87857,68.40721],[20.02523,69.06514],[20.64559,69.10625],[21.24494,69.37046],[22.35623,68.84174],[23.66206,68.89124],[24.73568,68.64957],[25.68922,69.09213],[26.1796,69.82528],[27.73229,70.16419],[29.01555,69.76649],[28.59193,69.06479],[29.39955,69.15692],[31.10108,69.55811]]},
+{"type":"LineString","coordinates":[[40.31659,-10.3171],[39.521,-10.89688],[38.42757,-11.28519],[37.82764,-11.26878],[37.47128,-11.56876],[36.77513,-11.59455],[36.51405,-11.72093],[35.3124,-11.43914],[34.55998,-11.52002],[34.28,-10.16],[33.94083,-9.69367],[33.73972,-9.41715],[32.75937,-9.23061],[32.19187,-8.93035],[31.55637,-8.76204],[31.15775,-8.59457],[30.74,-8.34]]},
+{"type":"LineString","coordinates":[[32.75937,-9.23061],[33.23139,-9.67671],[33.4857,-10.52557],[33.3153,-10.79654],[33.11428,-11.60721],[33.30639,-12.43577],[32.99175,-12.78386],[32.68817,-13.71284],[33.21402,-13.97188],[30.1795,-14.79609],[30.27425,-15.5078],[29.51684,-15.6447],[28.94748,-16.04305],[28.82586,-16.38974],[28.46792,-16.46841],[27.59824,-17.29083],[27.04444,-17.93805],[26.70678,-17.96125],[26.38192,-17.84602],[25.26424,-17.73654],[25.08444,-17.66179]]},
+{"type":"LineString","coordinates":[[34.56,-11.52],[34.28,-12.28],[34.56,-13.58],[34.90713,-13.56543],[35.26796,-13.88784],[35.68682,-14.61102],[35.77191,-15.89683],[35.33908,-16.10746],[35.03381,-16.8013],[34.38129,-16.18355],[34.30728,-15.47862],[34.51767,-15.01371],[34.45963,-14.61298],[34.06483,-14.35994],[33.7897,-14.45184],[33.21402,-13.97188]]},
+{"type":"LineString","coordinates":[[30.83385,3.50917],[30.77332,2.33989],[31.17417,2.20447],[30.85268,1.8494],[30.4685,1.58381],[30.08617,1.06232],[29.87578,0.5974],[29.8195,-0.2053],[29.58784,-0.58737],[29.57947,-1.3413],[29.2919,-1.62004],[29.25482,-2.21512],[29.11749,-2.29219],[29.0249,-2.83924],[29.27637,-3.29389],[29.34,-4.5],[29.52,-5.42],[29.42,-5.94],[29.62,-6.52],[30.2,-7.08],[30.74,-8.34],[30.34608,-8.23823],[29.00288,-8.40703],[28.73485,-8.52655],[28.44988,-9.16492],[28.67368,-9.60594],[28.49604,-10.78991],[28.37226,-11.79367],[28.64242,-11.97155],[29.34156,-12.36072],[29.61602,-12.1789],[29.69962,-13.25722],[28.93428,-13.24895],[28.52355,-12.69862],[28.15508,-12.27247],[27.38879,-12.13277],[27.1644,-11.60876],[26.55307,-11.92442],[25.75231,-11.78496],[25.41812,-11.33091],[24.78316,-11.23867],[24.31452,-11.26281],[24.25712,-10.952],[23.91222,-10.92684],[23.45677,-10.86787],[22.83734,-11.0176],[22.40282,-10.99308],[22.15528,-11.08478],[22.20877,-9.89479],[21.87518,-9.52372],[21.80181,-8.9087],[21.94915,-8.30592],[21.74644,-7.92007],[21.72812,-7.29086],[20.51476,-7.2996],[20.60181,-6.93933],[20.09164,-6.94307],[20.03774,-7.11634],[19.41752,-7.1554],[19.16661,-7.73816],[19.01674,-7.98824],[18.46417,-7.84699],[18.13424,-7.9877],[17.47296,-8.06856],[17.09,-7.5457],[16.86016,-7.2223],[16.57318,-6.62266],[16.32651,-5.87748],[13.37561,-5.86425],[13.02485,-5.98436],[12.73515,-5.9657],[12.32245,-6.10011]]},
+{"type":"LineString","coordinates":[[30.46966,-2.41383],[30.52766,-2.80762],[30.74301,-3.0343],[30.75224,-3.3593],[30.50554,-3.56858],[30.11632,-4.09012],[29.75352,-4.45239],[29.34,-4.5]]},
+{"type":"LineString","coordinates":[[20.25758,42.81275],[20.49679,42.88469],[20.63508,43.21671],[20.81448,43.27205],[20.95651,43.13094],[21.14339,43.06868],[21.27421,42.90959],[21.43866,42.86255],[21.63302,42.67717],[21.77505,42.6827],[21.66292,42.43922],[21.54332,42.32025],[21.57663,42.24522]]},
+{"type":"LineString","coordinates":[[-71.70831,18.045],[-71.68773,18.31665],[-71.94511,18.6169],[-71.70131,18.78544],[-71.62488,19.16985],[-71.71237,19.71444]]},
+{"type":"LineString","coordinates":[[48.94820,11.41062],[48.94200,11.39426],[48.93849,10.98232],[48.93823,9.97350],[48.93812,9.45174],[48.48673,8.83762],[47.78942,8.003]]}
+]}
View
107 d3_dymaxion.js
@@ -0,0 +1,107 @@
+(function() {
+ var ε = 1e-6,
+ π = Math.PI,
+ sqrtπ = Math.sqrt(π);
+
+ var robinsonConstants = [
+ [1.0000, 0.0000],
+ [0.9986, 0.0620],
+ [0.9954, 0.1240],
+ [0.9900, 0.1860],
+ [0.9822, 0.2480],
+ [0.9730, 0.3100],
+ [0.9600, 0.3720],
+ [0.9427, 0.4340],
+ [0.9216, 0.4958],
+ [0.8962, 0.5571],
+ [0.8679, 0.6176],
+ [0.8350, 0.6769],
+ [0.7986, 0.7346],
+ [0.7597, 0.7903],
+ [0.7186, 0.8435],
+ [0.6732, 0.8936],
+ [0.6213, 0.9394],
+ [0.5722, 0.9761],
+ [0.5322, 1.0000]
+ ];
+
+ function sinci(x) {
+ return x ? x / Math.sin(x) : 1;
+ }
+
+ function sgn(x) {
+ return x > 0 ? 1 : x < 0 ? -1 : 0;
+ }
+
+ function asqrt(x) {
+ return x > 0 ? Math.sqrt(x) : 0;
+ }
+
+ // Calculate F(φ+iψ|m).
+ // See Abramowitz and Stegun, 17.4.11.
+ function ellipticFi(φ, ψ, m) {
+ var r = Math.abs(φ),
+ i = Math.abs(ψ),
+ sinhψ = .5 * ((sinhψ = Math.exp(i)) - 1 / sinhψ);
+ if (r) {
+ var cscφ = 1 / Math.sin(r),
+ cotφ2 = (cotφ2 = Math.cos(r) * cscφ) * cotφ2,
+ b = -(cotφ2 + m * (sinhψ * sinhψ * cscφ * cscφ + 1) - 1),
+ cotλ2 = .5 * (-b + Math.sqrt(b * b - 4 * (m - 1) * cotφ2));
+ return [
+ ellipticF(Math.atan(1 / Math.sqrt(cotλ2)), m) * sgn(φ),
+ ellipticF(Math.atan(Math.sqrt(Math.max(0, cotλ2 / cotφ2 - 1) / m)), 1 - m) * sgn(ψ)
+ ];
+ }
+ return [
+ 0,
+ ellipticF(Math.atan(sinhψ), 1 - m) * sgn(ψ)
+ ];
+ }
+
+ // Calculate F(φ|m) where m = k² = sin²α.
+ // See Abramowitz and Stegun, 17.6.7.
+ function ellipticF(φ, m) {
+ var a = 1,
+ b = Math.sqrt(1 - m),
+ c = Math.sqrt(m);
+ for (var i = 0; Math.abs(c) > ε; i++) {
+ if% π) {
+ var= Math.atan(b * Math.tan(φ) / a);
+ if (dφ < 0) dφ += π;
+ φ +=+ ~~/ π) * π;
+ } else φ += φ;
+ c = (a + b) / 2;
+ b = Math.sqrt(a * b);
+ c = ((a = c) - b) / 2;
+ }
+ return φ / (Math.pow(2, i) * a);
+ }
+
+//---
+
+
+function dymaxion(λ, φ) {
+ // var α = Math.sqrt(4 - 3 * Math.sin(Math.abs(φ)));
+ // return [
+ // 2 / Math.sqrt(6 * π) * λ * α,
+ // sgn(φ) * Math.sqrt(2 * π / 3) * (2 - α)
+ // ];
+ var cartesian = convert_s_t_p(λ,φ);
+ return [
+ cartesian.x
+ ,
+ cartesian.y
+ ]
+ }
+
+
+//---
+
+
+ var projection = d3.geo.projection,
+ projectionMutator = d3.geo.projectionMutator;
+
+ d3.geo.dymaxion = function() { return projection(dymaxion); };
+
+})();
View
43 index.html
@@ -12,15 +12,15 @@
stroke-width: 1.5px;
}
-.graticule {
+/*.graticule {
fill: none;
- stroke: #fff;
+ stroke: #000;
stroke-width: .5px;
}
.graticule:nth-child(2n) {
stroke-dasharray: 2,2;
-}
+}*/
.land {
fill: #d7c7ad;
@@ -36,13 +36,16 @@
<body>
<script src="http://d3js.org/d3.v3.min.js"></script>
<script src="https://raw.github.com/d3/d3-plugins/master/geo/projection/projection.js"></script>
+<script src="/protovis_dymaxion.js"></script>
+<script src="/d3_dymaxion.js"></script>
+
<script>
var width = 960,
height = 500;
-var projection = d3.geo.hammer()
- .translate([width / 2 - .5, height / 2 - .5]);
+var projection = d3.geo.dymaxion()
+ .translate([width/3, height/6])
var path = d3.geo.path()
.projection(projection);
@@ -53,30 +56,30 @@
.attr("width", width)
.attr("height", height);
-svg.append("path")
- .datum(graticule.outline)
- .attr("class", "background")
- .attr("d", path);
+// svg.append("path")
+// .datum(graticule.outline)
+// .attr("class", "background")
+// .attr("d", path);
-svg.selectAll(".graticule")
- .data(graticule.lines)
- .enter().append("path")
- .attr("class", "graticule")
- .attr("d", path);
+// svg.selectAll(".graticule")
+// .data(graticule.lines)
+// .enter().append("path")
+// .attr("class", "graticule")
+// .attr("d", path);
-svg.append("path")
- .datum(graticule.outline)
- .attr("class", "foreground")
- .attr("d", path);
+// svg.append("path")
+// .datum(graticule.outline)
+// .attr("class", "foreground")
+// .attr("d", path);
-d3.json("/d/3682676/readme-boundaries.json", function(error, collection) {
+d3.json("boundaries.json", function(error, collection) {
svg.insert("path", ".graticule")
.datum(collection)
.attr("class", "boundary")
.attr("d", path);
});
-d3.json("/d/3682676/readme-land.json", function(error, collection) {
+d3.json("/land.json", function(error, collection) {
svg.insert("path", ".graticule,.boundary")
.datum(collection)
.attr("class", "land")
View
129 land.json
129 additions, 0 deletions not shown because the diff is too large. Please use a local Git client to view these changes.
View
664 protovis_dymaxion.js
@@ -0,0 +1,664 @@
+/************************************************************************/
+/* NOTE: in C, array indexing starts with element zero(0). I choose */
+/* to start my array indexing with elemennt one(1) so all arrays */
+/* are defined one element longer than they need to be. */
+/************************************************************************/
+
+/************************************************************************/
+/* global variables accessable to all procedures */
+/************************************************************************/
+
+const SQRT_3 = Math.sqrt(3);
+const SQRT_5 = Math.sqrt(5);
+const SQRT_8 = Math.sqrt(8);
+const SQRT_10 = Math.sqrt(10);
+const SQRT_15 = Math.sqrt(15);
+
+var v_x = new Array(13);
+var v_y = new Array(13);
+var v_z = new Array(13);
+var center_x = new Array(21);
+var center_y = new Array(21);
+var center_z = new Array(21);
+var garc, gt, gdve, gel;
+
+
+/****************************************/
+/* function definitions */
+/****************************************/
+var last_lng = 100000;
+var last_lat = 100000;
+var last_point;
+function convert_s_t_p_cache(lng, lat) {
+ if(last_lng == lng && last_lat == lat) {
+ return last_point;
+ } else {
+ last_lng = lng;
+ last_lat = lat;
+ last_point = convert_s_t_p(lng, lat);
+ return last_point;
+ }
+}
+
+function convert_s_t_p(lng, lat) {
+ /***********************************************************/
+ /* This is the main control procedure. */
+ /***********************************************************/
+
+ /* Convert the given(long.,lat.) coordinate into spherical */
+ /* polar coordinates(r, theta, phi) with radius=1. */
+ /* Angles are given in radians, NOT degrees. */
+
+ // var sc = conv_ll_t_sc(lng, lat);
+ var sc = recalc_radians(lng,lat);
+
+ // var sc = new Object();
+ // var π = Math.PI;
+ // sc.theta = (π/2) - lat;
+ // sc.phi = lng;
+
+
+ /* convert the spherical polar coordinates into cartesian */
+ /* (x, y, z) coordinates. */
+
+ var h = s_to_c(sc.theta, sc.phi);
+
+ /* determine which of the 20 spherical icosahedron triangles */
+ /* the given point is in and the LCD triangle. */
+
+ var info = s_tri_info(h.x, h.y, h.z);
+
+ /* Determine the corresponding Fuller map plane(x, y) point */
+ return dymax_point(info.tri, info.hlcd, h.x, h.y, h.z);
+}
+
+
+function convert_i_t_p(i, t) {
+ var x = 0;
+ var y = 0;
+ var z = 0;
+
+ // We need to 'nudge' the point a little bit into the triangle
+ // Hence we do a weighted average with point i having a massive weight
+ for(var j = 0; j < 3; j++) {
+ if(t[j] == i) {
+ x += v_x[i] * 0.9999;
+ y += v_y[i] * 0.9999;
+ z += v_z[i] * 0.9999;
+ } else {
+ x += v_x[t[j]] * 0.00005;
+ y += v_y[t[j]] * 0.00005;
+ z += v_z[t[j]] * 0.00005;
+ }
+ }
+
+ var info = s_tri_info(x, y, z);
+ /* Determine the corresponding Fuller map plane(x, y) point */
+
+ return dymax_point(info.tri, info.hlcd, x, y, z);
+}
+
+
+function conv_ll_t_sc(lng, lat) {
+ /* convert(long., lat.) point into spherical polar coordinates */
+ /* with r=radius=1. Angles are given in radians. */
+ var sc = new Object();
+ var h_theta, h_phi;
+
+ h_theta = 90.0 - lat ;
+ h_phi = lng;
+ if(lng < 0.0) {h_phi = lng + 360.0;}
+ sc.theta = radians(h_theta);
+ sc.phi = radians(h_phi);
+
+ return sc;
+} /* end conv_ll_t_sc */
+
+function recalc_radians(λ, φ) {
+ /* convert(long., lat.) point into spherical polar coordinates */
+ /* with r=radius=1. Angles are given in radians. */
+ var sc = new Object();
+ sc.theta = (Math.PI/2) - φ;
+ sc.phi = λ;
+
+ return sc;
+} /* end conv_ll_t_sc */
+
+function radians(degrees) {
+ /* convert angles in degrees into angles in radians */
+ return(Math.PI * degrees / 180);
+} /* end of radians function */
+
+
+function init_stuff() {
+ /* initializes the global variables which includes the */
+ /* vertix coordinates and mid-face coordinates. */
+
+ var i, hold_x, hold_y, hold_z, magn;
+ var theta, phi;
+
+ /* Cartesian coordinates for the 12 vertices of icosahedron */
+
+ v_x[1] = 0.420152426708710003;
+ v_y[1] = 0.078145249402782959;
+ v_z[1] = 0.904082550615019298;
+ v_x[2] = 0.995009439436241649;
+ v_y[2] = -0.091347795276427931;
+ v_z[2] = 0.040147175877166645;
+ v_x[3] = 0.518836730327364437;
+ v_y[3] = 0.835420380378235850;
+ v_z[3] = 0.181331837557262454;
+ v_x[4] = -0.414682225320335218;
+ v_y[4] = 0.655962405434800777;
+ v_z[4] = 0.630675807891475371;
+ v_x[5] = -0.515455959944041808;
+ v_y[5] = -0.381716898287133011;
+ v_z[5] = 0.767200992517747538;
+ v_x[6] = 0.355781402532944713;
+ v_y[6] = -0.843580002466178147;
+ v_z[6] = 0.402234226602925571;
+ v_x[7] = 0.414682225320335218;
+ v_y[7] = -0.655962405434800777;
+ v_z[7] = -0.630675807891475371;
+ v_x[8] = 0.515455959944041808;
+ v_y[8] = 0.381716898287133011;
+ v_z[8] = -0.767200992517747538;
+ v_x[9] = -0.355781402532944713;
+ v_y[9] = 0.843580002466178147;
+ v_z[9] = -0.402234226602925571;
+ v_x[10] = -0.995009439436241649;
+ v_y[10] = 0.091347795276427931;
+ v_z[10] = -0.040147175877166645;
+ v_x[11] = -0.518836730327364437;
+ v_y[11] = -0.835420380378235850;
+ v_z[11] = -0.181331837557262454;
+ v_x[12] = -0.420152426708710003;
+ v_y[12] = -0.078145249402782959;
+ v_z[12] = -0.904082550615019298;
+
+ /* now calculate mid face coordinates */
+
+ hold_x = (v_x[1] + v_x[2] + v_x[3]) / 3.0 ;
+ hold_y = (v_y[1] + v_y[2] + v_y[3]) / 3.0 ;
+ hold_z = (v_z[1] + v_z[2] + v_z[3]) / 3.0 ;
+ magn = Math.sqrt(hold_x * hold_x + hold_y * hold_y + hold_z * hold_z);
+ center_x[1] = hold_x / magn;
+ center_y[1] = hold_y / magn;
+ center_z[1] = hold_z / magn;
+
+ hold_x = (v_x[1] + v_x[3] + v_x[4]) / 3.0 ;
+ hold_y = (v_y[1] + v_y[3] + v_y[4]) / 3.0 ;
+ hold_z = (v_z[1] + v_z[3] + v_z[4]) / 3.0 ;
+ magn = Math.sqrt(hold_x * hold_x + hold_y * hold_y + hold_z * hold_z);
+ center_x[2] = hold_x / magn;
+ center_y[2] = hold_y / magn;
+ center_z[2] = hold_z / magn;
+
+ hold_x = (v_x[1] + v_x[4] + v_x[5]) / 3.0 ;
+ hold_y = (v_y[1] + v_y[4] + v_y[5]) / 3.0 ;
+ hold_z = (v_z[1] + v_z[4] + v_z[5]) / 3.0 ;
+ magn = Math.sqrt(hold_x * hold_x + hold_y * hold_y + hold_z * hold_z);
+ center_x[3] = hold_x / magn;
+ center_y[3] = hold_y / magn;
+ center_z[3] = hold_z / magn;
+
+ hold_x = (v_x[1] + v_x[5] + v_x[6]) / 3.0 ;
+ hold_y = (v_y[1] + v_y[5] + v_y[6]) / 3.0 ;
+ hold_z = (v_z[1] + v_z[5] + v_z[6]) / 3.0 ;
+ magn = Math.sqrt(hold_x * hold_x + hold_y * hold_y + hold_z * hold_z);
+ center_x[4] = hold_x / magn;
+ center_y[4] = hold_y / magn;
+ center_z[4] = hold_z / magn;
+
+ hold_x = (v_x[1] + v_x[2] + v_x[6]) / 3.0 ;
+ hold_y = (v_y[1] + v_y[2] + v_y[6]) / 3.0 ;
+ hold_z = (v_z[1] + v_z[2] + v_z[6]) / 3.0 ;
+ magn = Math.sqrt(hold_x * hold_x + hold_y * hold_y + hold_z * hold_z);
+ center_x[5] = hold_x / magn;
+ center_y[5] = hold_y / magn;
+ center_z[5] = hold_z / magn;
+
+ hold_x = (v_x[2] + v_x[3] + v_x[8]) / 3.0 ;
+ hold_y = (v_y[2] + v_y[3] + v_y[8]) / 3.0 ;
+ hold_z = (v_z[2] + v_z[3] + v_z[8]) / 3.0 ;
+ magn = Math.sqrt(hold_x * hold_x + hold_y * hold_y + hold_z * hold_z);
+ center_x[6] = hold_x / magn;
+ center_y[6] = hold_y / magn;
+ center_z[6] = hold_z / magn;
+
+ hold_x = (v_x[8] + v_x[3] + v_x[9]) / 3.0 ;
+ hold_y = (v_y[8] + v_y[3] + v_y[9]) / 3.0 ;
+ hold_z = (v_z[8] + v_z[3] + v_z[9]) / 3.0 ;
+ magn = Math.sqrt(hold_x * hold_x + hold_y * hold_y + hold_z * hold_z);
+ center_x[7] = hold_x / magn;
+ center_y[7] = hold_y / magn;
+ center_z[7] = hold_z / magn;
+
+ hold_x = (v_x[9] + v_x[3] + v_x[4]) / 3.0 ;
+ hold_y = (v_y[9] + v_y[3] + v_y[4]) / 3.0 ;
+ hold_z = (v_z[9] + v_z[3] + v_z[4]) / 3.0 ;
+ magn = Math.sqrt(hold_x * hold_x + hold_y * hold_y + hold_z * hold_z);
+ center_x[8] = hold_x / magn;
+ center_y[8] = hold_y / magn;
+ center_z[8] = hold_z / magn;
+
+ hold_x = (v_x[10] + v_x[9] + v_x[4]) / 3.0 ;
+ hold_y = (v_y[10] + v_y[9] + v_y[4]) / 3.0 ;
+ hold_z = (v_z[10] + v_z[9] + v_z[4]) / 3.0 ;
+ magn = Math.sqrt(hold_x * hold_x + hold_y * hold_y + hold_z * hold_z);
+ center_x[9] = hold_x / magn;
+ center_y[9] = hold_y / magn;
+ center_z[9] = hold_z / magn;
+
+ hold_x = (v_x[5] + v_x[10] + v_x[4]) / 3.0 ;
+ hold_y = (v_y[5] + v_y[10] + v_y[4]) / 3.0 ;
+ hold_z = (v_z[5] + v_z[10] + v_z[4]) / 3.0 ;
+ magn = Math.sqrt(hold_x * hold_x + hold_y * hold_y + hold_z * hold_z);
+ center_x[10] = hold_x / magn;
+ center_y[10] = hold_y / magn;
+ center_z[10] = hold_z / magn;
+
+ hold_x = (v_x[5] + v_x[11] + v_x[10]) / 3.0 ;
+ hold_y = (v_y[5] + v_y[11] + v_y[10]) / 3.0 ;
+ hold_z = (v_z[5] + v_z[11] + v_z[10]) / 3.0 ;
+ magn = Math.sqrt(hold_x * hold_x + hold_y * hold_y + hold_z * hold_z);
+ center_x[11] = hold_x / magn;
+ center_y[11] = hold_y / magn;
+ center_z[11] = hold_z / magn;
+
+ hold_x = (v_x[5] + v_x[6] + v_x[11]) / 3.0 ;
+ hold_y = (v_y[5] + v_y[6] + v_y[11]) / 3.0 ;
+ hold_z = (v_z[5] + v_z[6] + v_z[11]) / 3.0 ;
+ magn = Math.sqrt(hold_x * hold_x + hold_y * hold_y + hold_z * hold_z);
+ center_x[12] = hold_x / magn;
+ center_y[12] = hold_y / magn;
+ center_z[12] = hold_z / magn;
+
+ hold_x = (v_x[11] + v_x[6] + v_x[7]) / 3.0 ;
+ hold_y = (v_y[11] + v_y[6] + v_y[7]) / 3.0 ;
+ hold_z = (v_z[11] + v_z[6] + v_z[7]) / 3.0 ;
+ magn = Math.sqrt(hold_x * hold_x + hold_y * hold_y + hold_z * hold_z);
+ center_x[13] = hold_x / magn;
+ center_y[13] = hold_y / magn;
+ center_z[13] = hold_z / magn;
+
+ hold_x = (v_x[7] + v_x[6] + v_x[2]) / 3.0 ;
+ hold_y = (v_y[7] + v_y[6] + v_y[2]) / 3.0 ;
+ hold_z = (v_z[7] + v_z[6] + v_z[2]) / 3.0 ;
+ magn = Math.sqrt(hold_x * hold_x + hold_y * hold_y + hold_z * hold_z);
+ center_x[14] = hold_x / magn;
+ center_y[14] = hold_y / magn;
+ center_z[14] = hold_z / magn;
+
+ hold_x = (v_x[8] + v_x[7] + v_x[2]) / 3.0 ;
+ hold_y = (v_y[8] + v_y[7] + v_y[2]) / 3.0 ;
+ hold_z = (v_z[8] + v_z[7] + v_z[2]) / 3.0 ;
+ magn = Math.sqrt(hold_x * hold_x + hold_y * hold_y + hold_z * hold_z);
+ center_x[15] = hold_x / magn;
+ center_y[15] = hold_y / magn;
+ center_z[15] = hold_z / magn;
+
+ hold_x = (v_x[12] + v_x[9] + v_x[8]) / 3.0 ;
+ hold_y = (v_y[12] + v_y[9] + v_y[8]) / 3.0 ;
+ hold_z = (v_z[12] + v_z[9] + v_z[8]) / 3.0 ;
+ magn = Math.sqrt(hold_x * hold_x + hold_y * hold_y + hold_z * hold_z);
+ center_x[16] = hold_x / magn;
+ center_y[16] = hold_y / magn;
+ center_z[16] = hold_z / magn;
+
+ hold_x = (v_x[12] + v_x[9] + v_x[10]) / 3.0 ;
+ hold_y = (v_y[12] + v_y[9] + v_y[10]) / 3.0 ;
+ hold_z = (v_z[12] + v_z[9] + v_z[10]) / 3.0 ;
+ magn = Math.sqrt(hold_x * hold_x + hold_y * hold_y + hold_z * hold_z);
+ center_x[17] = hold_x / magn;
+ center_y[17] = hold_y / magn;
+ center_z[17] = hold_z / magn;
+
+ hold_x = (v_x[12] + v_x[11] + v_x[10]) / 3.0 ;
+ hold_y = (v_y[12] + v_y[11] + v_y[10]) / 3.0 ;
+ hold_z = (v_z[12] + v_z[11] + v_z[10]) / 3.0 ;
+ magn = Math.sqrt(hold_x * hold_x + hold_y * hold_y + hold_z * hold_z);
+ center_x[18] = hold_x / magn;
+ center_y[18] = hold_y / magn;
+ center_z[18] = hold_z / magn;
+
+ hold_x = (v_x[12] + v_x[11] + v_x[7]) / 3.0 ;
+ hold_y = (v_y[12] + v_y[11] + v_y[7]) / 3.0 ;
+ hold_z = (v_z[12] + v_z[11] + v_z[7]) / 3.0 ;
+ magn = Math.sqrt(hold_x * hold_x + hold_y * hold_y + hold_z * hold_z);
+ center_x[19] = hold_x / magn;
+ center_y[19] = hold_y / magn;
+ center_z[19] = hold_z / magn;
+
+ hold_x = (v_x[12] + v_x[8] + v_x[7]) / 3.0 ;
+ hold_y = (v_y[12] + v_y[8] + v_y[7]) / 3.0 ;
+ hold_z = (v_z[12] + v_z[8] + v_z[7]) / 3.0 ;
+ magn = Math.sqrt(hold_x * hold_x + hold_y * hold_y + hold_z * hold_z);
+ center_x[20] = hold_x / magn;
+ center_y[20] = hold_y / magn;
+ center_z[20] = hold_z / magn;
+
+ garc = 2.0 * Math.asin( Math.sqrt( 5 - SQRT_5) / SQRT_10 );
+ gt = garc / 2.0;
+
+ gdve = Math.sqrt( 3 + SQRT_5 ) / Math.sqrt( 5 + SQRT_5 );
+ gel = SQRT_8 / Math.sqrt(5 + SQRT_5);
+} /* end of int_stuff procedure */
+
+
+function s_to_c(theta, phi) {
+ /* Covert spherical polar coordinates to cartesian coordinates. */
+ /* The angles are given in radians. */
+ var c = new Object();
+ c.x = Math.sin(theta) * Math.cos(phi);
+ c.y = Math.sin(theta) * Math.sin(phi);
+ c.z = Math.cos(theta);
+
+ return c;
+ } /* end s_to_c */
+
+
+function c_to_s(x, y, z) {
+ /* convert cartesian coordinates into spherical polar coordinates. */
+ /* The angles are given in radians. */
+ var s = new Object();
+ var a;
+
+ if(x>0.0 && y>0.0) {a = radians(0.0);}
+ if(x<0.0 && y>0.0) {a = radians(180.0);}
+ if(x<0.0 && y<0.0) {a = radians(180.0);}
+ if(x>0.0 && y<0.0) {a = radians(360.0);}
+ s.lat = Math.acos(z);
+ if(x==0.0 && y>0.0) {s.lng = radians(90.0);}
+ if(x==0.0 && y<0.0) {s.lng = radians(270.0);}
+ if(x>0.0 && y==0.0) {s.lng = radians(0.0);}
+ if(x<0.0 && y==0.0) {s.lng = radians(180.0);}
+ if(x!=0.0 && y!=0.0){s.lng = Math.atan(y/x) + a;}
+
+ return s;
+} /* end c_to_s */
+
+
+function s_tri_info(x, y, z) {
+ /* Determine which triangle and LCD triangle the point is in. */
+
+ var h_dist1, h_dist2, h_dist3, h1, h2, h3; // double
+ var i, h_tri, h_lcd ; //int
+ var v1, v2, v3; // int
+
+ var info = new Object();
+
+ h_tri = 0;
+ h_dist1 = 9999.0;
+
+ /* Which triangle face center is the closest to the given point */
+ /* is the triangle in which the given point is in. */
+
+ for(i = 1; i <=20; i = i + 1) {
+ h1 = center_x[i] - x;
+ h2 = center_y[i] - y;
+ h3 = center_z[i] - z;
+ h_dist2 = Math.sqrt(h1 * h1 + h2 * h2 + h3 * h3);
+ if(h_dist2 < h_dist1) {
+ h_tri = i;
+ h_dist1 = h_dist2;
+ } /* end the if statement */
+ } /* end the for statement */
+
+ info.tri = h_tri;
+
+ /* Now the LCD triangle is determined. */
+
+ switch(h_tri)
+ {
+ case 1: v1 = 1; v2 = 3; v3 = 2; break;
+ case 2: v1 = 1; v2 = 4; v3 = 3; break;
+ case 3: v1 = 1; v2 = 5; v3 = 4; break;
+ case 4: v1 = 1; v2 = 6; v3 = 5; break;
+ case 5: v1 = 1; v2 = 2; v3 = 6; break;
+ case 6: v1 = 2; v2 = 3; v3 = 8; break;
+ case 7: v1 = 3; v2 = 9; v3 = 8; break;
+ case 8: v1 = 3; v2 = 4; v3 = 9; break;
+ case 9: v1 = 4; v2 = 10; v3 = 9; break;
+ case 10: v1 = 4; v2 = 5; v3 = 10; break;
+ case 11: v1 = 5; v2 = 11; v3 = 10; break;
+ case 12: v1 = 5; v2 = 6; v3 = 11; break;
+ case 13: v1 = 6; v2 = 7; v3 = 11; break;
+ case 14: v1 = 2; v2 = 7; v3 = 6; break;
+ case 15: v1 = 2; v2 = 8; v3 = 7; break;
+ case 16: v1 = 8; v2 = 9; v3 = 12; break;
+ case 17: v1 = 9; v2 = 10; v3 = 12; break;
+ case 18: v1 = 10; v2 = 11; v3 = 12; break;
+ case 19: v1 = 11; v2 = 7; v3 = 12; break;
+ case 20: v1 = 8; v2 = 12; v3 = 7; break;
+ } /* end of switch statement */
+
+ h1 = x - v_x[v1];
+ h2 = y - v_y[v1];
+ h3 = z - v_z[v1];
+ h_dist1 = Math.sqrt(h1 * h1 + h2 * h2 + h3 * h3);
+
+ h1 = x - v_x[v2];
+ h2 = y - v_y[v2];
+ h3 = z - v_z[v2];
+ h_dist2 = Math.sqrt(h1 * h1 + h2 * h2 + h3 * h3);
+
+ h1 = x - v_x[v3];
+ h2 = y - v_y[v3];
+ h3 = z - v_z[v3];
+ h_dist3 = Math.sqrt(h1 * h1 + h2 * h2 + h3 * h3);
+
+ if( (h_dist1 <= h_dist2) && (h_dist2 <= h_dist3) ) {h_lcd = 1; }
+ if( (h_dist1 <= h_dist3) && (h_dist3 <= h_dist2) ) {h_lcd = 6; }
+ if( (h_dist2 <= h_dist1) && (h_dist1 <= h_dist3) ) {h_lcd = 2; }
+ if( (h_dist2 <= h_dist3) && (h_dist3 <= h_dist1) ) {h_lcd = 3; }
+ if( (h_dist3 <= h_dist1) && (h_dist1 <= h_dist2) ) {h_lcd = 5; }
+ if( (h_dist3 <= h_dist2) && (h_dist2 <= h_dist1) ) {h_lcd = 4; }
+
+ info.hlcd = h_lcd;
+
+ return info;
+} /* end s_tri_info */
+
+
+function dymax_point(tri, lcd, x, y, z) {
+ var axis, v1; // int
+ var h;
+
+ var gs; // double
+ var gx, gy, gz, ga1,ga2,ga3,ga1p,ga2p,ga3p,gxp,gyp,gzp; // double
+
+ /* In order to rotate the given point into the template spherical */
+ /* triangle, we need the spherical polar coordinates of the center */
+ /* of the face and one of the face vertices. So set up which vertex */
+ /* to use. */
+
+ switch(tri)
+ {
+ case 1: v1 = 1; break;
+ case 2: v1 = 1; break;
+ case 3: v1 = 1; break;
+ case 4: v1 = 1; break;
+ case 5: v1 = 1; break;
+ case 6: v1 = 2; break;
+ case 7: v1 = 3; break;
+ case 8: v1 = 3; break;
+ case 9: v1 = 4; break;
+ case 10: v1 = 4; break;
+ case 11: v1 = 5; break;
+ case 12: v1 = 5; break;
+ case 13: v1 = 6; break;
+ case 14: v1 = 2; break;
+ case 15: v1 = 2; break;
+ case 16: v1 = 8; break;
+ case 17: v1 = 9; break;
+ case 18: v1 = 10; break;
+ case 19: v1 = 11; break;
+ case 20: v1 = 8; break;
+ } /* end of switch statement */
+
+ var h0 = new Object();
+ h0.x = x;
+ h0.y = y;
+ h0.z = z;
+
+ var h1 = new Object();
+ h1.x = v_x[v1];
+ h1.y = v_y[v1];
+ h1.z = v_z[v1];
+
+ h = c_to_s(center_x[tri], center_y[tri], center_z[tri]);
+
+ axis = 3;
+ rotate3d(axis,h.lng,h0);
+ rotate3d(axis,h.lng,h1);
+
+ axis = 2;
+ rotate3d(axis,h.lat,h0);
+ rotate3d(axis,h.lat,h1);
+
+ h = c_to_s(h1.x,h1.y,h1.z);
+ h.lng = h.lng - radians(90.0);
+
+ axis = 3;
+ rotate3d(axis,h.lng,h0);
+
+ /* exact transformation equations */
+
+ gz = Math.sqrt(1 - h0.x * h0.x - h0.y * h0.y);
+ gs = Math.sqrt( 5 + 2 * SQRT_5 ) / ( gz * SQRT_15 );
+
+ gxp = h0.x * gs ;
+ gyp = h0.y * gs ;
+
+ ga1p = 2.0 * gyp / SQRT_3 + (gel / 3.0) ;
+ ga2p = gxp - (gyp / SQRT_3) + (gel / 3.0) ;
+ ga3p = (gel / 3.0) - gxp - (gyp / SQRT_3);
+
+ ga1 = gt + Math.atan( (ga1p - 0.5 * gel) / gdve);
+ ga2 = gt + Math.atan( (ga2p - 0.5 * gel) / gdve);
+ ga3 = gt + Math.atan( (ga3p - 0.5 * gel) / gdve);
+
+ gx = 0.5 * (ga2 - ga3) ;
+
+ gy = (1.0 / (2.0 * SQRT_3) ) * (2 * ga1 - ga2 - ga3);
+
+ /* Re-scale so plane triangle edge length is 1. */
+
+ var pt = new Object();
+ pt.x = gx / garc;
+ pt.y = gy / garc;
+
+ /* rotate and translate to correct position */
+ var point2d = new Object();
+
+ switch(tri)
+ {
+ case 1: rotate2d(240.0,pt);
+ point2d.x = pt.x + 2.0; point2d.y = pt.y + 7.0 / (2.0 * SQRT_3) ; break;
+ case 2: rotate2d(300.0, pt); point2d.x = pt.x + 2.0;
+ point2d.y = pt.y + 5.0 / (2.0 * SQRT_3) ; break;
+ case 3: rotate2d(0.0, pt);
+ point2d.x = pt.x + 2.5; point2d.y = pt.y + 2.0 / SQRT_3; break;
+ case 4: rotate2d(60.0, pt);
+ point2d.x = pt.x + 3.0; point2d.y = pt.y + 5.0 / (2.0 * SQRT_3) ; break;
+ case 5: rotate2d(180.0, pt);
+ point2d.x = pt.x + 2.5; point2d.y = pt.y + 4.0 * SQRT_3 / 3.0; break;
+ case 6: rotate2d(300.0, pt);
+ point2d.x = pt.x + 1.5; point2d.y = pt.y + 4.0 * SQRT_3 / 3.0; break;
+ case 7: rotate2d(300.0, pt);
+ point2d.x = pt.x + 1.0; point2d.y = pt.y + 5.0 / (2.0 * SQRT_3) ; break;
+ case 8: rotate2d(0.0, pt);
+ point2d.x = pt.x + 1.5; point2d.y = pt.y + 2.0 / SQRT_3; break;
+ case 9: if(lcd > 2)
+ {
+ rotate2d(300.0, pt);
+ point2d.x = pt.x + 1.5; point2d.y = pt.y + 1.0 / SQRT_3;
+ }
+ else
+ {
+ rotate2d(0.0, pt);
+ point2d.x = pt.x + 2.0; point2d.y = pt.y + 1.0 / (2.0 * SQRT_3);
+ }
+ break;
+
+ case 10: rotate2d(60.0, pt);
+ point2d.x = pt.x + 2.5; point2d.y = pt.y + 1.0 / SQRT_3; break;
+ case 11: rotate2d(60.0, pt);
+ point2d.x = pt.x + 3.5; point2d.y = pt.y + 1.0 / SQRT_3; break;
+ case 12: rotate2d(120.0, pt);
+ point2d.x = pt.x + 3.5; point2d.y = pt.y + 2.0 / SQRT_3; break;
+ case 13: rotate2d(60.0, pt);
+ point2d.x = pt.x + 4.0; point2d.y = pt.y + 5.0 / (2.0 * SQRT_3); break;
+ case 14: rotate2d(0.0, pt);
+ point2d.x = pt.x + 4.0; point2d.y = pt.y + 7.0 / (2.0 * SQRT_3) ; break;
+ case 15: rotate2d(0.0, pt);
+ point2d.x = pt.x + 5.0; point2d.y = pt.y + 7.0 / (2.0 * SQRT_3) ; break;
+ case 16: if(lcd < 4)
+ {
+ rotate2d(60.0, pt);
+ point2d.x = pt.x + 0.5; point2d.y = pt.y + 1.0 / SQRT_3;
+ }
+ else
+ {
+ rotate2d(0.0, pt);
+ point2d.x = pt.x + 5.5; point2d.y = pt.y + 2.0 / SQRT_3;
+ }
+ break;
+ case 17: rotate2d(0.0, pt);
+ point2d.x = pt.x + 1.0; point2d.y = pt.y + 1.0 / (2.0 * SQRT_3); break;
+ case 18: rotate2d(120.0, pt);
+ point2d.x = pt.x + 4.0; point2d.y = pt.y + 1.0 / (2.0 * SQRT_3); break;
+ case 19: rotate2d(120.0, pt);
+ point2d.x = pt.x + 4.5; point2d.y = pt.y + 2.0 / SQRT_3; break;
+ case 20: rotate2d(300.0, pt);
+ point2d.x = pt.x + 5.0; point2d.y = pt.y + 5.0 / (2.0 * SQRT_3); break;
+
+ } /* end switch statement */
+
+ return point2d;
+} /* end of dymax_point */
+
+
+function rotate2d(angle, point2d) {
+ /* Rotate the point to correct orientation in XY-plane. */
+
+ var ha, hx, hy; // double
+
+ ha = radians(angle);
+ hx = point2d.x;
+ hy = point2d.y;
+ point2d.x = hx * Math.cos(ha) - hy * Math.sin(ha);
+ point2d.y = hx * Math.sin(ha) + hy * Math.cos(ha);
+
+ return point2d;
+} /* end rotate procedure */
+
+
+function rotate3d(axis, alpha, point3d) {
+ /* Rotate a 3-D point about the specified axis. */
+
+ var a = point3d.x;
+ var b = point3d.y;
+ var c = point3d.z;
+
+ if(axis == 1) {
+ point3d.y = b * Math.cos(alpha) + c * Math.sin(alpha);
+ point3d.z = c * Math.cos(alpha) - b * Math.sin(alpha);
+ }
+
+ if(axis == 2) {
+ point3d.x = a * Math.cos(alpha) - c * Math.sin(alpha);
+ point3d.z = a * Math.sin(alpha) + c * Math.cos(alpha);
+ }
+
+ if(axis == 3) {
+ point3d.x = a * Math.cos(alpha) + b * Math.sin(alpha);
+ point3d.y = b * Math.cos(alpha) - a * Math.sin(alpha);
+ }
+
+ return point3d;
+} /* end of r2 */
+
+
+init_stuff();
View
BIN thumbnail.png
Deleted file not rendered

0 comments on commit 4fa5889

Please sign in to comment.
Something went wrong with that request. Please try again.