libgd-gis 0.1.0 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (436) hide show
  1. checksums.yaml +4 -4
  2. data/examples/a-world_peaks.rb +42 -0
  3. data/examples/fonts/DejaVu Fonts License.txt +97 -0
  4. data/examples/fonts/DejaVuSans-Bold.ttf +0 -0
  5. data/examples/fonts/DejaVuSans-BoldOblique.ttf +0 -0
  6. data/examples/fonts/DejaVuSans-ExtraLight.ttf +0 -0
  7. data/examples/fonts/DejaVuSans-Oblique.ttf +0 -0
  8. data/examples/fonts/DejaVuSans.ttf +0 -0
  9. data/examples/fonts/DejaVuSansCondensed-Bold.ttf +0 -0
  10. data/examples/fonts/DejaVuSansCondensed-BoldOblique.ttf +0 -0
  11. data/examples/fonts/DejaVuSansCondensed-Oblique.ttf +0 -0
  12. data/examples/fonts/DejaVuSansCondensed.ttf +0 -0
  13. data/examples/montanas.rb +118 -0
  14. data/examples/output/world_peaks-s.png +0 -0
  15. data/examples/output/world_peaks.png +0 -0
  16. data/examples/peak.png +0 -0
  17. data/examples/picks.json +50 -0
  18. data/examples/tmp/tiles/4_0_13.png +0 -0
  19. data/examples/tmp/tiles/4_0_14.png +0 -0
  20. data/examples/tmp/tiles/4_0_15.png +0 -0
  21. data/examples/tmp/tiles/4_0_3.png +0 -0
  22. data/examples/tmp/tiles/4_0_4.png +0 -0
  23. data/examples/tmp/tiles/4_0_5.png +0 -0
  24. data/examples/tmp/tiles/4_0_8.png +0 -0
  25. data/examples/tmp/tiles/4_10_1.png +0 -0
  26. data/examples/tmp/tiles/4_10_11.png +0 -0
  27. data/examples/tmp/tiles/4_10_12.png +0 -0
  28. data/examples/tmp/tiles/4_10_13.png +0 -0
  29. data/examples/tmp/tiles/4_10_14.png +0 -0
  30. data/examples/tmp/tiles/4_10_15.png +0 -0
  31. data/examples/tmp/tiles/4_10_2.png +0 -0
  32. data/examples/tmp/tiles/4_10_3.png +0 -0
  33. data/examples/tmp/tiles/4_10_4.png +0 -0
  34. data/examples/tmp/tiles/4_10_5.png +0 -0
  35. data/examples/tmp/tiles/4_10_6.png +0 -0
  36. data/examples/tmp/tiles/4_10_7.png +0 -0
  37. data/examples/tmp/tiles/4_10_8.png +0 -0
  38. data/examples/tmp/tiles/4_10_9.png +0 -0
  39. data/examples/tmp/tiles/4_11_1.png +0 -0
  40. data/examples/tmp/tiles/4_11_10.png +0 -0
  41. data/examples/tmp/tiles/4_11_12.png +0 -0
  42. data/examples/tmp/tiles/4_11_13.png +0 -0
  43. data/examples/tmp/tiles/4_11_14.png +0 -0
  44. data/examples/tmp/tiles/4_11_15.png +0 -0
  45. data/examples/tmp/tiles/4_11_2.png +0 -0
  46. data/examples/tmp/tiles/4_11_3.png +0 -0
  47. data/examples/tmp/tiles/4_11_4.png +0 -0
  48. data/examples/tmp/tiles/4_11_5.png +0 -0
  49. data/examples/tmp/tiles/4_11_6.png +0 -0
  50. data/examples/tmp/tiles/4_11_7.png +0 -0
  51. data/examples/tmp/tiles/4_12_1.png +0 -0
  52. data/examples/tmp/tiles/4_12_11.png +0 -0
  53. data/examples/tmp/tiles/4_12_12.png +0 -0
  54. data/examples/tmp/tiles/4_12_13.png +0 -0
  55. data/examples/tmp/tiles/4_12_14.png +0 -0
  56. data/examples/tmp/tiles/4_12_15.png +0 -0
  57. data/examples/tmp/tiles/4_12_2.png +0 -0
  58. data/examples/tmp/tiles/4_12_3.png +0 -0
  59. data/examples/tmp/tiles/4_12_4.png +0 -0
  60. data/examples/tmp/tiles/4_12_5.png +0 -0
  61. data/examples/tmp/tiles/4_12_6.png +0 -0
  62. data/examples/tmp/tiles/4_12_7.png +0 -0
  63. data/examples/tmp/tiles/4_12_8.png +0 -0
  64. data/examples/tmp/tiles/4_13_11.png +0 -0
  65. data/examples/tmp/tiles/4_13_12.png +0 -0
  66. data/examples/tmp/tiles/4_13_13.png +0 -0
  67. data/examples/tmp/tiles/4_13_14.png +0 -0
  68. data/examples/tmp/tiles/4_13_15.png +0 -0
  69. data/examples/tmp/tiles/4_13_2.png +0 -0
  70. data/examples/tmp/tiles/4_13_3.png +0 -0
  71. data/examples/tmp/tiles/4_13_4.png +0 -0
  72. data/examples/tmp/tiles/4_13_5.png +0 -0
  73. data/examples/tmp/tiles/4_13_6.png +0 -0
  74. data/examples/tmp/tiles/4_13_7.png +0 -0
  75. data/examples/tmp/tiles/4_13_8.png +0 -0
  76. data/examples/tmp/tiles/4_13_9.png +0 -0
  77. data/examples/tmp/tiles/4_14_10.png +0 -0
  78. data/examples/tmp/tiles/4_14_11.png +0 -0
  79. data/examples/tmp/tiles/4_14_12.png +0 -0
  80. data/examples/tmp/tiles/4_14_13.png +0 -0
  81. data/examples/tmp/tiles/4_14_14.png +0 -0
  82. data/examples/tmp/tiles/4_14_15.png +0 -0
  83. data/examples/tmp/tiles/4_14_2.png +0 -0
  84. data/examples/tmp/tiles/4_14_3.png +0 -0
  85. data/examples/tmp/tiles/4_14_4.png +0 -0
  86. data/examples/tmp/tiles/4_14_5.png +0 -0
  87. data/examples/tmp/tiles/4_14_6.png +0 -0
  88. data/examples/tmp/tiles/4_14_8.png +0 -0
  89. data/examples/tmp/tiles/4_14_9.png +0 -0
  90. data/examples/tmp/tiles/4_15_10.png +0 -0
  91. data/examples/tmp/tiles/4_15_12.png +0 -0
  92. data/examples/tmp/tiles/4_15_13.png +0 -0
  93. data/examples/tmp/tiles/4_15_14.png +0 -0
  94. data/examples/tmp/tiles/4_15_15.png +0 -0
  95. data/examples/tmp/tiles/4_15_3.png +0 -0
  96. data/examples/tmp/tiles/4_15_4.png +0 -0
  97. data/examples/tmp/tiles/4_15_5.png +0 -0
  98. data/examples/tmp/tiles/4_15_8.png +0 -0
  99. data/examples/tmp/tiles/4_15_9.png +0 -0
  100. data/examples/tmp/tiles/4_1_13.png +0 -0
  101. data/examples/tmp/tiles/4_1_14.png +0 -0
  102. data/examples/tmp/tiles/4_1_15.png +0 -0
  103. data/examples/tmp/tiles/4_1_3.png +0 -0
  104. data/examples/tmp/tiles/4_1_4.png +0 -0
  105. data/examples/tmp/tiles/4_1_7.png +0 -0
  106. data/examples/tmp/tiles/4_2_0.png +0 -0
  107. data/examples/tmp/tiles/4_2_1.png +0 -0
  108. data/examples/tmp/tiles/4_2_10.png +0 -0
  109. data/examples/tmp/tiles/4_2_11.png +0 -0
  110. data/examples/tmp/tiles/4_2_12.png +0 -0
  111. data/examples/tmp/tiles/4_2_13.png +0 -0
  112. data/examples/tmp/tiles/4_2_14.png +0 -0
  113. data/examples/tmp/tiles/4_2_15.png +0 -0
  114. data/examples/tmp/tiles/4_2_2.png +0 -0
  115. data/examples/tmp/tiles/4_2_3.png +0 -0
  116. data/examples/tmp/tiles/4_2_4.png +0 -0
  117. data/examples/tmp/tiles/4_2_5.png +0 -0
  118. data/examples/tmp/tiles/4_2_6.png +0 -0
  119. data/examples/tmp/tiles/4_2_7.png +0 -0
  120. data/examples/tmp/tiles/4_2_8.png +0 -0
  121. data/examples/tmp/tiles/4_2_9.png +0 -0
  122. data/examples/tmp/tiles/4_3_0.png +0 -0
  123. data/examples/tmp/tiles/4_3_1.png +0 -0
  124. data/examples/tmp/tiles/4_3_10.png +0 -0
  125. data/examples/tmp/tiles/4_3_11.png +0 -0
  126. data/examples/tmp/tiles/4_3_12.png +0 -0
  127. data/examples/tmp/tiles/4_3_13.png +0 -0
  128. data/examples/tmp/tiles/4_3_14.png +0 -0
  129. data/examples/tmp/tiles/4_3_15.png +0 -0
  130. data/examples/tmp/tiles/4_3_2.png +0 -0
  131. data/examples/tmp/tiles/4_3_3.png +0 -0
  132. data/examples/tmp/tiles/4_3_4.png +0 -0
  133. data/examples/tmp/tiles/4_3_5.png +0 -0
  134. data/examples/tmp/tiles/4_3_6.png +0 -0
  135. data/examples/tmp/tiles/4_3_7.png +0 -0
  136. data/examples/tmp/tiles/4_3_8.png +0 -0
  137. data/examples/tmp/tiles/4_3_9.png +0 -0
  138. data/examples/tmp/tiles/4_4_0.png +0 -0
  139. data/examples/tmp/tiles/4_4_1.png +0 -0
  140. data/examples/tmp/tiles/4_4_10.png +0 -0
  141. data/examples/tmp/tiles/4_4_11.png +0 -0
  142. data/examples/tmp/tiles/4_4_12.png +0 -0
  143. data/examples/tmp/tiles/4_4_13.png +0 -0
  144. data/examples/tmp/tiles/4_4_14.png +0 -0
  145. data/examples/tmp/tiles/4_4_15.png +0 -0
  146. data/examples/tmp/tiles/4_4_2.png +0 -0
  147. data/examples/tmp/tiles/4_4_3.png +0 -0
  148. data/examples/tmp/tiles/4_4_4.png +0 -0
  149. data/examples/tmp/tiles/4_4_5.png +0 -0
  150. data/examples/tmp/tiles/4_4_6.png +0 -0
  151. data/examples/tmp/tiles/4_4_7.png +0 -0
  152. data/examples/tmp/tiles/4_4_8.png +0 -0
  153. data/examples/tmp/tiles/4_4_9.png +0 -0
  154. data/examples/tmp/tiles/4_5_0.png +0 -0
  155. data/examples/tmp/tiles/4_5_1.png +0 -0
  156. data/examples/tmp/tiles/4_5_10.png +0 -0
  157. data/examples/tmp/tiles/4_5_11.png +0 -0
  158. data/examples/tmp/tiles/4_5_12.png +0 -0
  159. data/examples/tmp/tiles/4_5_13.png +0 -0
  160. data/examples/tmp/tiles/4_5_14.png +0 -0
  161. data/examples/tmp/tiles/4_5_15.png +0 -0
  162. data/examples/tmp/tiles/4_5_2.png +0 -0
  163. data/examples/tmp/tiles/4_5_3.png +0 -0
  164. data/examples/tmp/tiles/4_5_4.png +0 -0
  165. data/examples/tmp/tiles/4_5_5.png +0 -0
  166. data/examples/tmp/tiles/4_5_6.png +0 -0
  167. data/examples/tmp/tiles/4_5_7.png +0 -0
  168. data/examples/tmp/tiles/4_5_8.png +0 -0
  169. data/examples/tmp/tiles/4_5_9.png +0 -0
  170. data/examples/tmp/tiles/4_6_0.png +0 -0
  171. data/examples/tmp/tiles/4_6_1.png +0 -0
  172. data/examples/tmp/tiles/4_6_10.png +0 -0
  173. data/examples/tmp/tiles/4_6_11.png +0 -0
  174. data/examples/tmp/tiles/4_6_12.png +0 -0
  175. data/examples/tmp/tiles/4_6_13.png +0 -0
  176. data/examples/tmp/tiles/4_6_14.png +0 -0
  177. data/examples/tmp/tiles/4_6_15.png +0 -0
  178. data/examples/tmp/tiles/4_6_2.png +0 -0
  179. data/examples/tmp/tiles/4_6_3.png +0 -0
  180. data/examples/tmp/tiles/4_6_4.png +0 -0
  181. data/examples/tmp/tiles/4_6_5.png +0 -0
  182. data/examples/tmp/tiles/4_6_6.png +0 -0
  183. data/examples/tmp/tiles/4_6_7.png +0 -0
  184. data/examples/tmp/tiles/4_6_8.png +0 -0
  185. data/examples/tmp/tiles/4_6_9.png +0 -0
  186. data/examples/tmp/tiles/4_7_0.png +0 -0
  187. data/examples/tmp/tiles/4_7_1.png +0 -0
  188. data/examples/tmp/tiles/4_7_10.png +0 -0
  189. data/examples/tmp/tiles/4_7_11.png +0 -0
  190. data/examples/tmp/tiles/4_7_12.png +0 -0
  191. data/examples/tmp/tiles/4_7_13.png +0 -0
  192. data/examples/tmp/tiles/4_7_14.png +0 -0
  193. data/examples/tmp/tiles/4_7_15.png +0 -0
  194. data/examples/tmp/tiles/4_7_2.png +0 -0
  195. data/examples/tmp/tiles/4_7_3.png +0 -0
  196. data/examples/tmp/tiles/4_7_4.png +0 -0
  197. data/examples/tmp/tiles/4_7_5.png +0 -0
  198. data/examples/tmp/tiles/4_7_6.png +0 -0
  199. data/examples/tmp/tiles/4_7_7.png +0 -0
  200. data/examples/tmp/tiles/4_7_8.png +0 -0
  201. data/examples/tmp/tiles/4_7_9.png +0 -0
  202. data/examples/tmp/tiles/4_8_0.png +0 -0
  203. data/examples/tmp/tiles/4_8_1.png +0 -0
  204. data/examples/tmp/tiles/4_8_10.png +0 -0
  205. data/examples/tmp/tiles/4_8_11.png +0 -0
  206. data/examples/tmp/tiles/4_8_12.png +0 -0
  207. data/examples/tmp/tiles/4_8_13.png +0 -0
  208. data/examples/tmp/tiles/4_8_14.png +0 -0
  209. data/examples/tmp/tiles/4_8_15.png +0 -0
  210. data/examples/tmp/tiles/4_8_2.png +0 -0
  211. data/examples/tmp/tiles/4_8_3.png +0 -0
  212. data/examples/tmp/tiles/4_8_4.png +0 -0
  213. data/examples/tmp/tiles/4_8_5.png +0 -0
  214. data/examples/tmp/tiles/4_8_6.png +0 -0
  215. data/examples/tmp/tiles/4_8_7.png +0 -0
  216. data/examples/tmp/tiles/4_8_8.png +0 -0
  217. data/examples/tmp/tiles/4_8_9.png +0 -0
  218. data/examples/tmp/tiles/4_9_0.png +0 -0
  219. data/examples/tmp/tiles/4_9_1.png +0 -0
  220. data/examples/tmp/tiles/4_9_10.png +0 -0
  221. data/examples/tmp/tiles/4_9_11.png +0 -0
  222. data/examples/tmp/tiles/4_9_12.png +0 -0
  223. data/examples/tmp/tiles/4_9_13.png +0 -0
  224. data/examples/tmp/tiles/4_9_14.png +0 -0
  225. data/examples/tmp/tiles/4_9_15.png +0 -0
  226. data/examples/tmp/tiles/4_9_2.png +0 -0
  227. data/examples/tmp/tiles/4_9_3.png +0 -0
  228. data/examples/tmp/tiles/4_9_4.png +0 -0
  229. data/examples/tmp/tiles/4_9_5.png +0 -0
  230. data/examples/tmp/tiles/4_9_6.png +0 -0
  231. data/examples/tmp/tiles/4_9_7.png +0 -0
  232. data/examples/tmp/tiles/4_9_8.png +0 -0
  233. data/examples/tmp/tiles/4_9_9.png +0 -0
  234. data/lib/gd/gis/basemap.rb +12 -2
  235. data/lib/gd/gis/layer_points.rb +29 -3
  236. data/lib/gd/gis/map.rb +23 -3
  237. metadata +283 -204
  238. data/examples/tmp/tiles/7_27_43.png +0 -0
  239. data/examples/tmp/tiles/7_27_44.png +0 -0
  240. data/examples/tmp/tiles/7_27_45.png +0 -0
  241. data/examples/tmp/tiles/7_27_46.png +0 -0
  242. data/examples/tmp/tiles/7_27_47.png +0 -0
  243. data/examples/tmp/tiles/7_27_48.png +0 -0
  244. data/examples/tmp/tiles/7_27_49.png +0 -0
  245. data/examples/tmp/tiles/7_27_50.png +0 -0
  246. data/examples/tmp/tiles/7_28_43.png +0 -0
  247. data/examples/tmp/tiles/7_28_44.png +0 -0
  248. data/examples/tmp/tiles/7_28_45.png +0 -0
  249. data/examples/tmp/tiles/7_28_46.png +0 -0
  250. data/examples/tmp/tiles/7_28_47.png +0 -0
  251. data/examples/tmp/tiles/7_28_48.png +0 -0
  252. data/examples/tmp/tiles/7_28_49.png +0 -0
  253. data/examples/tmp/tiles/7_28_50.png +0 -0
  254. data/examples/tmp/tiles/7_29_43.png +0 -0
  255. data/examples/tmp/tiles/7_29_44.png +0 -0
  256. data/examples/tmp/tiles/7_29_45.png +0 -0
  257. data/examples/tmp/tiles/7_29_46.png +0 -0
  258. data/examples/tmp/tiles/7_29_47.png +0 -0
  259. data/examples/tmp/tiles/7_29_48.png +0 -0
  260. data/examples/tmp/tiles/7_29_49.png +0 -0
  261. data/examples/tmp/tiles/7_29_50.png +0 -0
  262. data/examples/tmp/tiles/7_30_43.png +0 -0
  263. data/examples/tmp/tiles/7_30_44.png +0 -0
  264. data/examples/tmp/tiles/7_30_45.png +0 -0
  265. data/examples/tmp/tiles/7_30_46.png +0 -0
  266. data/examples/tmp/tiles/7_30_47.png +0 -0
  267. data/examples/tmp/tiles/7_30_48.png +0 -0
  268. data/examples/tmp/tiles/7_30_49.png +0 -0
  269. data/examples/tmp/tiles/7_30_50.png +0 -0
  270. data/examples/tmp/tiles/7_31_43.png +0 -0
  271. data/examples/tmp/tiles/7_31_44.png +0 -0
  272. data/examples/tmp/tiles/7_31_45.png +0 -0
  273. data/examples/tmp/tiles/7_31_46.png +0 -0
  274. data/examples/tmp/tiles/7_31_47.png +0 -0
  275. data/examples/tmp/tiles/7_31_48.png +0 -0
  276. data/examples/tmp/tiles/7_31_49.png +0 -0
  277. data/examples/tmp/tiles/7_31_50.png +0 -0
  278. data/examples/tmp/tiles/7_32_43.png +0 -0
  279. data/examples/tmp/tiles/7_32_44.png +0 -0
  280. data/examples/tmp/tiles/7_32_45.png +0 -0
  281. data/examples/tmp/tiles/7_32_46.png +0 -0
  282. data/examples/tmp/tiles/7_32_47.png +0 -0
  283. data/examples/tmp/tiles/7_32_48.png +0 -0
  284. data/examples/tmp/tiles/7_32_49.png +0 -0
  285. data/examples/tmp/tiles/7_32_50.png +0 -0
  286. data/examples/tmp/tiles/7_37_78.png +0 -0
  287. data/examples/tmp/tiles/7_37_79.png +0 -0
  288. data/examples/tmp/tiles/7_37_80.png +0 -0
  289. data/examples/tmp/tiles/7_37_81.png +0 -0
  290. data/examples/tmp/tiles/7_37_82.png +0 -0
  291. data/examples/tmp/tiles/7_37_83.png +0 -0
  292. data/examples/tmp/tiles/7_37_84.png +0 -0
  293. data/examples/tmp/tiles/7_37_85.png +0 -0
  294. data/examples/tmp/tiles/7_37_86.png +0 -0
  295. data/examples/tmp/tiles/7_38_71.png +0 -0
  296. data/examples/tmp/tiles/7_38_72.png +0 -0
  297. data/examples/tmp/tiles/7_38_73.png +0 -0
  298. data/examples/tmp/tiles/7_38_74.png +0 -0
  299. data/examples/tmp/tiles/7_38_75.png +0 -0
  300. data/examples/tmp/tiles/7_38_76.png +0 -0
  301. data/examples/tmp/tiles/7_38_77.png +0 -0
  302. data/examples/tmp/tiles/7_38_78.png +0 -0
  303. data/examples/tmp/tiles/7_38_79.png +0 -0
  304. data/examples/tmp/tiles/7_38_80.png +0 -0
  305. data/examples/tmp/tiles/7_38_81.png +0 -0
  306. data/examples/tmp/tiles/7_38_82.png +0 -0
  307. data/examples/tmp/tiles/7_38_83.png +0 -0
  308. data/examples/tmp/tiles/7_38_84.png +0 -0
  309. data/examples/tmp/tiles/7_38_85.png +0 -0
  310. data/examples/tmp/tiles/7_38_86.png +0 -0
  311. data/examples/tmp/tiles/7_38_87.png +0 -0
  312. data/examples/tmp/tiles/7_39_71.png +0 -0
  313. data/examples/tmp/tiles/7_39_72.png +0 -0
  314. data/examples/tmp/tiles/7_39_73.png +0 -0
  315. data/examples/tmp/tiles/7_39_74.png +0 -0
  316. data/examples/tmp/tiles/7_39_75.png +0 -0
  317. data/examples/tmp/tiles/7_39_76.png +0 -0
  318. data/examples/tmp/tiles/7_39_77.png +0 -0
  319. data/examples/tmp/tiles/7_39_78.png +0 -0
  320. data/examples/tmp/tiles/7_39_79.png +0 -0
  321. data/examples/tmp/tiles/7_39_80.png +0 -0
  322. data/examples/tmp/tiles/7_39_81.png +0 -0
  323. data/examples/tmp/tiles/7_39_82.png +0 -0
  324. data/examples/tmp/tiles/7_39_83.png +0 -0
  325. data/examples/tmp/tiles/7_39_84.png +0 -0
  326. data/examples/tmp/tiles/7_39_85.png +0 -0
  327. data/examples/tmp/tiles/7_39_86.png +0 -0
  328. data/examples/tmp/tiles/7_39_87.png +0 -0
  329. data/examples/tmp/tiles/7_40_71.png +0 -0
  330. data/examples/tmp/tiles/7_40_72.png +0 -0
  331. data/examples/tmp/tiles/7_40_73.png +0 -0
  332. data/examples/tmp/tiles/7_40_74.png +0 -0
  333. data/examples/tmp/tiles/7_40_75.png +0 -0
  334. data/examples/tmp/tiles/7_40_76.png +0 -0
  335. data/examples/tmp/tiles/7_40_77.png +0 -0
  336. data/examples/tmp/tiles/7_40_78.png +0 -0
  337. data/examples/tmp/tiles/7_40_79.png +0 -0
  338. data/examples/tmp/tiles/7_40_80.png +0 -0
  339. data/examples/tmp/tiles/7_40_81.png +0 -0
  340. data/examples/tmp/tiles/7_40_82.png +0 -0
  341. data/examples/tmp/tiles/7_40_83.png +0 -0
  342. data/examples/tmp/tiles/7_40_86.png +0 -0
  343. data/examples/tmp/tiles/7_40_87.png +0 -0
  344. data/examples/tmp/tiles/7_41_71.png +0 -0
  345. data/examples/tmp/tiles/7_41_72.png +0 -0
  346. data/examples/tmp/tiles/7_41_73.png +0 -0
  347. data/examples/tmp/tiles/7_41_74.png +0 -0
  348. data/examples/tmp/tiles/7_41_75.png +0 -0
  349. data/examples/tmp/tiles/7_41_76.png +0 -0
  350. data/examples/tmp/tiles/7_41_77.png +0 -0
  351. data/examples/tmp/tiles/7_41_78.png +0 -0
  352. data/examples/tmp/tiles/7_41_79.png +0 -0
  353. data/examples/tmp/tiles/7_41_80.png +0 -0
  354. data/examples/tmp/tiles/7_41_81.png +0 -0
  355. data/examples/tmp/tiles/7_41_87.png +0 -0
  356. data/examples/tmp/tiles/7_42_71.png +0 -0
  357. data/examples/tmp/tiles/7_42_72.png +0 -0
  358. data/examples/tmp/tiles/7_42_73.png +0 -0
  359. data/examples/tmp/tiles/7_42_74.png +0 -0
  360. data/examples/tmp/tiles/7_42_75.png +0 -0
  361. data/examples/tmp/tiles/7_42_76.png +0 -0
  362. data/examples/tmp/tiles/7_42_77.png +0 -0
  363. data/examples/tmp/tiles/7_42_78.png +0 -0
  364. data/examples/tmp/tiles/7_42_79.png +0 -0
  365. data/examples/tmp/tiles/7_42_85.png +0 -0
  366. data/examples/tmp/tiles/7_43_71.png +0 -0
  367. data/examples/tmp/tiles/7_43_72.png +0 -0
  368. data/examples/tmp/tiles/7_43_73.png +0 -0
  369. data/examples/tmp/tiles/7_43_74.png +0 -0
  370. data/examples/tmp/tiles/7_43_75.png +0 -0
  371. data/examples/tmp/tiles/7_43_76.png +0 -0
  372. data/examples/tmp/tiles/7_43_77.png +0 -0
  373. data/examples/tmp/tiles/7_43_78.png +0 -0
  374. data/examples/tmp/tiles/7_43_85.png +0 -0
  375. data/examples/tmp/tiles/7_44_71.png +0 -0
  376. data/examples/tmp/tiles/7_44_72.png +0 -0
  377. data/examples/tmp/tiles/7_44_73.png +0 -0
  378. data/examples/tmp/tiles/7_44_74.png +0 -0
  379. data/examples/tmp/tiles/7_44_75.png +0 -0
  380. data/examples/tmp/tiles/7_44_76.png +0 -0
  381. data/examples/tmp/tiles/7_44_77.png +0 -0
  382. data/examples/tmp/tiles/7_75_64.png +0 -0
  383. data/examples/tmp/tiles/7_75_65.png +0 -0
  384. data/examples/tmp/tiles/7_75_66.png +0 -0
  385. data/examples/tmp/tiles/7_75_67.png +0 -0
  386. data/examples/tmp/tiles/7_75_68.png +0 -0
  387. data/examples/tmp/tiles/7_76_64.png +0 -0
  388. data/examples/tmp/tiles/7_76_65.png +0 -0
  389. data/examples/tmp/tiles/7_76_66.png +0 -0
  390. data/examples/tmp/tiles/7_76_67.png +0 -0
  391. data/examples/tmp/tiles/7_76_68.png +0 -0
  392. data/examples/tmp/tiles/7_77_64.png +0 -0
  393. data/examples/tmp/tiles/7_77_65.png +0 -0
  394. data/examples/tmp/tiles/7_77_66.png +0 -0
  395. data/examples/tmp/tiles/7_77_67.png +0 -0
  396. data/examples/tmp/tiles/7_77_68.png +0 -0
  397. /data/examples/tmp/tiles/{7_37_71.png → 4_0_0.png} +0 -0
  398. /data/examples/tmp/tiles/{7_37_72.png → 4_0_1.png} +0 -0
  399. /data/examples/tmp/tiles/{7_37_73.png → 4_0_10.png} +0 -0
  400. /data/examples/tmp/tiles/{7_37_74.png → 4_0_11.png} +0 -0
  401. /data/examples/tmp/tiles/{7_37_75.png → 4_0_12.png} +0 -0
  402. /data/examples/tmp/tiles/{7_37_76.png → 4_0_2.png} +0 -0
  403. /data/examples/tmp/tiles/{7_37_77.png → 4_0_6.png} +0 -0
  404. /data/examples/tmp/tiles/{7_37_87.png → 4_0_7.png} +0 -0
  405. /data/examples/tmp/tiles/{7_40_84.png → 4_0_9.png} +0 -0
  406. /data/examples/tmp/tiles/{7_40_85.png → 4_10_0.png} +0 -0
  407. /data/examples/tmp/tiles/{7_41_82.png → 4_10_10.png} +0 -0
  408. /data/examples/tmp/tiles/{7_41_83.png → 4_11_0.png} +0 -0
  409. /data/examples/tmp/tiles/{7_41_84.png → 4_11_11.png} +0 -0
  410. /data/examples/tmp/tiles/{7_41_85.png → 4_11_8.png} +0 -0
  411. /data/examples/tmp/tiles/{7_41_86.png → 4_11_9.png} +0 -0
  412. /data/examples/tmp/tiles/{7_42_80.png → 4_12_0.png} +0 -0
  413. /data/examples/tmp/tiles/{7_42_81.png → 4_12_10.png} +0 -0
  414. /data/examples/tmp/tiles/{7_42_82.png → 4_12_9.png} +0 -0
  415. /data/examples/tmp/tiles/{7_42_83.png → 4_13_0.png} +0 -0
  416. /data/examples/tmp/tiles/{7_42_84.png → 4_13_1.png} +0 -0
  417. /data/examples/tmp/tiles/{7_42_86.png → 4_13_10.png} +0 -0
  418. /data/examples/tmp/tiles/{7_42_87.png → 4_14_0.png} +0 -0
  419. /data/examples/tmp/tiles/{7_43_79.png → 4_14_1.png} +0 -0
  420. /data/examples/tmp/tiles/{7_43_80.png → 4_14_7.png} +0 -0
  421. /data/examples/tmp/tiles/{7_43_81.png → 4_15_0.png} +0 -0
  422. /data/examples/tmp/tiles/{7_43_82.png → 4_15_1.png} +0 -0
  423. /data/examples/tmp/tiles/{7_43_83.png → 4_15_11.png} +0 -0
  424. /data/examples/tmp/tiles/{7_43_84.png → 4_15_2.png} +0 -0
  425. /data/examples/tmp/tiles/{7_43_86.png → 4_15_6.png} +0 -0
  426. /data/examples/tmp/tiles/{7_43_87.png → 4_15_7.png} +0 -0
  427. /data/examples/tmp/tiles/{7_44_78.png → 4_1_0.png} +0 -0
  428. /data/examples/tmp/tiles/{7_44_79.png → 4_1_1.png} +0 -0
  429. /data/examples/tmp/tiles/{7_44_80.png → 4_1_10.png} +0 -0
  430. /data/examples/tmp/tiles/{7_44_81.png → 4_1_11.png} +0 -0
  431. /data/examples/tmp/tiles/{7_44_82.png → 4_1_12.png} +0 -0
  432. /data/examples/tmp/tiles/{7_44_83.png → 4_1_2.png} +0 -0
  433. /data/examples/tmp/tiles/{7_44_84.png → 4_1_5.png} +0 -0
  434. /data/examples/tmp/tiles/{7_44_85.png → 4_1_6.png} +0 -0
  435. /data/examples/tmp/tiles/{7_44_86.png → 4_1_8.png} +0 -0
  436. /data/examples/tmp/tiles/{7_44_87.png → 4_1_9.png} +0 -0
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -13,7 +13,7 @@ module GD
13
13
  end
14
14
 
15
15
  def url(z,x,y)
16
- "https://basemaps.cartocdn.com/light_all/#{z}/#{x}/#{y}.png"
16
+ "https://tile.openstreetmap.org/#{z}/#{x}/#{y}.png"
17
17
  end
18
18
 
19
19
  def lon2tile(lon)
@@ -45,10 +45,20 @@ module GD
45
45
  path = "tmp/tiles/#{@zoom}_#{x}_#{y}.png"
46
46
  unless File.exist?(path)
47
47
  uri = URI(url(@zoom,x,y))
48
+
48
49
  Net::HTTP.start(uri.host, uri.port, use_ssl: true) do |http|
49
- res = http.get(uri.path)
50
+ req = Net::HTTP::Get.new(uri)
51
+ req["User-Agent"] = "libgd-gis/0.1 (Ruby)"
52
+
53
+ res = http.request(req)
54
+
55
+ unless res.code == "200"
56
+ raise "Tile fetch failed #{res.code}"
57
+ end
58
+
50
59
  File.binwrite(path, res.body)
51
60
  end
61
+
52
62
  end
53
63
  tiles << [x,y,path]
54
64
  end
@@ -1,14 +1,22 @@
1
1
  module GD
2
2
  module GIS
3
3
  class PointsLayer
4
- def initialize(data, lon:, lat:, icon:)
4
+ def initialize(data, lon:, lat:, icon:, label: nil, font: nil, size: 12, color: [0,0,0])
5
5
  @data = data
6
6
  @lon = lon
7
7
  @lat = lat
8
8
  @icon = GD::Image.open(icon)
9
+
10
+ @label = label
11
+ @font = font
12
+ @size = size
13
+ @color = color
14
+
15
+ @icon.alpha_blending = true
16
+ @icon.save_alpha = true
9
17
  end
10
18
 
11
- def render!(img, projection)
19
+ def render!(img, projector)
12
20
  w = @icon.width
13
21
  h = @icon.height
14
22
 
@@ -16,8 +24,26 @@ module GD
16
24
  lon = @lon.call(row)
17
25
  lat = @lat.call(row)
18
26
 
19
- x,y = projection.call(lon,lat)
27
+ x,y = projector.call(lon,lat)
28
+
29
+ # icono
20
30
  img.copy(@icon, x - w/2, y - h/2, 0,0,w,h)
31
+
32
+ # etiqueta opcional
33
+ if @label && @font
34
+ text = @label.call(row)
35
+ unless text.nil? || text.strip.empty?
36
+ font_h = @size * 1.1
37
+
38
+ img.text(text,
39
+ x: x + w/2 + 4,
40
+ y: y + font_h/2,
41
+ size: @size,
42
+ color: @color,
43
+ font: @font
44
+ )
45
+ end
46
+ end
21
47
  end
22
48
  end
23
49
  end
data/lib/gd/gis/map.rb CHANGED
@@ -13,13 +13,25 @@ module GD
13
13
  @layers = []
14
14
  end
15
15
 
16
- def add_points(data, lon:, lat:, icon:)
17
- @layers << PointsLayer.new(data, lon: lon, lat: lat, icon: icon)
16
+ def add_points(data, lon:, lat:, icon:, label: nil, font: nil, size: 12, color: [0,0,0])
17
+ @layers << PointsLayer.new(
18
+ data,
19
+ lon: lon,
20
+ lat: lat,
21
+ icon: icon,
22
+ label: label,
23
+ font: font,
24
+ size: size,
25
+ color: color
26
+ )
18
27
  end
19
28
 
20
29
  def render
21
30
  tiles, x_min, y_min = @basemap.fetch_tiles
22
31
 
32
+ x0 = x_min * 256
33
+ y0 = y_min * 256
34
+
23
35
  cols = tiles.map{|t| t[0]}.uniq.size
24
36
  rows = tiles.map{|t| t[1]}.uniq.size
25
37
 
@@ -27,6 +39,8 @@ module GD
27
39
  height = rows * 256
28
40
 
29
41
  @img = GD::Image.new(width,height)
42
+ @img.alpha_blending = true
43
+ @img.save_alpha = true
30
44
 
31
45
  tiles.each do |x,y,path|
32
46
  tile = GD::Image.open(path)
@@ -42,7 +56,11 @@ module GD
42
56
  max_y = Projection.mercator_y(@bbox[3])
43
57
 
44
58
  projector = ->(lon,lat) {
45
- Projection.lonlat_to_pixel(lon,lat,min_x,max_x,min_y,max_y,width,height)
59
+ px = ((lon + 180.0) / 360.0 * (2 ** @zoom) * 256)
60
+ rad = lat * Math::PI / 180.0
61
+ py = ((1 - Math.log(Math.tan(rad) + 1 / Math.cos(rad)) / Math::PI) / 2 * (2 ** @zoom) * 256)
62
+
63
+ [ (px - x0).to_i, (py - y0).to_i ]
46
64
  }
47
65
 
48
66
  @layers.each { |l| l.render!(@img, projector) }
@@ -96,6 +114,8 @@ module GD
96
114
 
97
115
  # recortar al tamaño exacto del tile
98
116
  img = GD::Image.new(256,256)
117
+ img.alpha_blending = true
118
+ img.save_alpha = true
99
119
  img.copy(submap.instance_variable_get(:@img), 0,0,0,0,256,256)
100
120
  img
101
121
  end