libgd-gis 0.1.2 → 0.1.3

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 (341) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +78 -31
  3. data/examples/{a-world_peaks.rb → america-peaks.rb} +4 -4
  4. data/examples/asia-peaks.rb +42 -0
  5. data/examples/av_ramirez.rb +34 -0
  6. data/examples/europe-peaks.rb +42 -0
  7. data/examples/heladerias.json +47 -0
  8. data/examples/heladerias.rb +40 -0
  9. data/examples/ice-cream.jpg +0 -0
  10. data/examples/ice-cream.png +0 -0
  11. data/examples/output/america.png +0 -0
  12. data/examples/output/asia.png +0 -0
  13. data/examples/output/europe.png +0 -0
  14. data/examples/output/heladerias_parana.png +0 -0
  15. data/examples/output/museos_parana.png +0 -0
  16. data/examples/output/world_peaks-s.png +0 -0
  17. data/examples/parana_museos.rb +49 -0
  18. data/examples/street/1.osm +207517 -0
  19. data/examples/street/av-ramirez.osm +207517 -0
  20. data/examples/street/av-ramirez.png +0 -0
  21. data/examples/street/av_ramirez-0.1346843780815251.png +0 -0
  22. data/examples/street/av_ramirez-3.png +0 -0
  23. data/examples/street/av_ramirez.png +0 -0
  24. data/examples/street/av_ramirez.rb +46 -0
  25. data/examples/street/avramirez.geojson +9 -0
  26. data/examples/street/dot.png +0 -0
  27. data/examples/street/download.sh +18 -0
  28. data/examples/street/draw.rb +46 -0
  29. data/examples/street/map.osm +9158 -0
  30. data/examples/street/mark.png +0 -0
  31. data/examples/street/parana.json +100 -0
  32. data/examples/street/parana.rb +30 -0
  33. data/examples/street/parana_areas.png +0 -0
  34. data/examples/street/query.overpass +8 -0
  35. data/examples/street/ramirez.geojson +355 -0
  36. data/examples/street/ramirez_big.geojson +9959 -0
  37. data/examples/street/ramirez_full.geojson +76 -0
  38. data/examples/street/ramirez_full.png +0 -0
  39. data/examples/street/ramirez_gis.png +0 -0
  40. data/examples/street/ramirez_osm.png +0 -0
  41. data/examples/street/ramirez_osm_full.png +0 -0
  42. data/examples/street/ramirez_polyline.png +0 -0
  43. data/examples/street/ramirez_road.png +0 -0
  44. data/examples/street/test_carto_dark.png +0 -0
  45. data/examples/street/test_osm_fr.png +0 -0
  46. data/examples/street/test_polygon.png +0 -0
  47. data/examples/street/tmp/tiles/carto_dark_15_10874_19433.png +0 -0
  48. data/examples/street/tmp/tiles/carto_dark_15_10874_19434.png +0 -0
  49. data/examples/street/tmp/tiles/carto_dark_15_10874_19435.png +0 -0
  50. data/examples/street/tmp/tiles/carto_dark_15_10874_19436.png +0 -0
  51. data/examples/street/tmp/tiles/carto_dark_15_10875_19433.png +0 -0
  52. data/examples/street/tmp/tiles/carto_dark_15_10875_19434.png +0 -0
  53. data/examples/street/tmp/tiles/carto_dark_15_10875_19435.png +0 -0
  54. data/examples/street/tmp/tiles/carto_dark_15_10875_19436.png +0 -0
  55. data/examples/street/tmp/tiles/carto_dark_15_10876_19433.png +0 -0
  56. data/examples/street/tmp/tiles/carto_dark_15_10876_19434.png +0 -0
  57. data/examples/street/tmp/tiles/carto_dark_15_10876_19435.png +0 -0
  58. data/examples/street/tmp/tiles/carto_dark_15_10876_19436.png +0 -0
  59. data/examples/street/tmp/tiles/esri_satellite_15_10874_19433.jpg +0 -0
  60. data/examples/street/tmp/tiles/esri_satellite_15_10874_19434.jpg +0 -0
  61. data/examples/street/tmp/tiles/esri_satellite_15_10874_19435.jpg +0 -0
  62. data/examples/street/tmp/tiles/esri_satellite_15_10874_19436.jpg +0 -0
  63. data/examples/street/tmp/tiles/esri_satellite_15_10875_19433.jpg +0 -0
  64. data/examples/street/tmp/tiles/esri_satellite_15_10875_19434.jpg +0 -0
  65. data/examples/street/tmp/tiles/esri_satellite_15_10875_19435.jpg +0 -0
  66. data/examples/street/tmp/tiles/esri_satellite_15_10875_19436.jpg +0 -0
  67. data/examples/street/tmp/tiles/esri_satellite_15_10876_19433.jpg +0 -0
  68. data/examples/street/tmp/tiles/esri_satellite_15_10876_19434.jpg +0 -0
  69. data/examples/street/tmp/tiles/esri_satellite_15_10876_19435.jpg +0 -0
  70. data/examples/street/tmp/tiles/esri_satellite_15_10876_19436.jpg +0 -0
  71. data/examples/street/tmp/tiles/osm_fr_15_10874_19433.png +0 -0
  72. data/examples/street/tmp/tiles/osm_fr_15_10874_19434.png +0 -0
  73. data/examples/street/tmp/tiles/osm_fr_15_10874_19435.png +0 -0
  74. data/examples/street/tmp/tiles/osm_fr_15_10874_19436.png +0 -0
  75. data/examples/street/tmp/tiles/osm_fr_15_10875_19433.png +0 -0
  76. data/examples/street/tmp/tiles/osm_fr_15_10875_19434.png +0 -0
  77. data/examples/street/tmp/tiles/osm_fr_15_10875_19435.png +0 -0
  78. data/examples/street/tmp/tiles/osm_fr_15_10875_19436.png +0 -0
  79. data/examples/street/tmp/tiles/osm_fr_15_10876_19433.png +0 -0
  80. data/examples/street/tmp/tiles/osm_fr_15_10876_19434.png +0 -0
  81. data/examples/street/tmp/tiles/osm_fr_15_10876_19435.png +0 -0
  82. data/examples/street/tmp/tiles/osm_fr_15_10876_19436.png +0 -0
  83. data/examples/tmp/tiles/15_10871_19430.png +0 -0
  84. data/examples/tmp/tiles/15_10871_19431.png +0 -0
  85. data/examples/tmp/tiles/15_10871_19432.png +0 -0
  86. data/examples/tmp/tiles/15_10871_19433.png +0 -0
  87. data/examples/tmp/tiles/15_10871_19434.png +0 -0
  88. data/examples/tmp/tiles/15_10871_19435.png +0 -0
  89. data/examples/tmp/tiles/15_10872_19430.png +0 -0
  90. data/examples/tmp/tiles/15_10872_19431.png +0 -0
  91. data/examples/tmp/tiles/15_10872_19432.png +0 -0
  92. data/examples/tmp/tiles/15_10872_19433.png +0 -0
  93. data/examples/tmp/tiles/15_10872_19434.png +0 -0
  94. data/examples/tmp/tiles/15_10872_19435.png +0 -0
  95. data/examples/tmp/tiles/15_10873_19430.png +0 -0
  96. data/examples/tmp/tiles/15_10873_19431.png +0 -0
  97. data/examples/tmp/tiles/15_10873_19432.png +0 -0
  98. data/examples/tmp/tiles/15_10873_19433.png +0 -0
  99. data/examples/tmp/tiles/15_10873_19434.png +0 -0
  100. data/examples/tmp/tiles/15_10873_19435.png +0 -0
  101. data/examples/tmp/tiles/15_10874_19430.png +0 -0
  102. data/examples/tmp/tiles/15_10874_19431.png +0 -0
  103. data/examples/tmp/tiles/15_10874_19432.png +0 -0
  104. data/examples/tmp/tiles/15_10874_19433.png +0 -0
  105. data/examples/tmp/tiles/15_10874_19434.png +0 -0
  106. data/examples/tmp/tiles/15_10874_19435.png +0 -0
  107. data/examples/tmp/tiles/15_10875_19430.png +0 -0
  108. data/examples/tmp/tiles/15_10875_19431.png +0 -0
  109. data/examples/tmp/tiles/15_10875_19432.png +0 -0
  110. data/examples/tmp/tiles/15_10875_19433.png +0 -0
  111. data/examples/tmp/tiles/15_10875_19434.png +0 -0
  112. data/examples/tmp/tiles/15_10875_19435.png +0 -0
  113. data/examples/tmp/tiles/15_10876_19430.png +0 -0
  114. data/examples/tmp/tiles/15_10876_19431.png +0 -0
  115. data/examples/tmp/tiles/15_10876_19432.png +0 -0
  116. data/examples/tmp/tiles/15_10876_19433.png +0 -0
  117. data/examples/tmp/tiles/15_10876_19434.png +0 -0
  118. data/examples/tmp/tiles/15_10876_19435.png +0 -0
  119. data/examples/tmp/tiles/15_10877_19430.png +0 -0
  120. data/examples/tmp/tiles/15_10877_19431.png +0 -0
  121. data/examples/tmp/tiles/15_10877_19432.png +0 -0
  122. data/examples/tmp/tiles/15_10877_19433.png +0 -0
  123. data/examples/tmp/tiles/15_10877_19434.png +0 -0
  124. data/examples/tmp/tiles/15_10877_19435.png +0 -0
  125. data/examples/tmp/tiles/7_27_43.png +0 -0
  126. data/examples/tmp/tiles/7_27_44.png +0 -0
  127. data/examples/tmp/tiles/7_27_45.png +0 -0
  128. data/examples/tmp/tiles/7_27_46.png +0 -0
  129. data/examples/tmp/tiles/7_27_47.png +0 -0
  130. data/examples/tmp/tiles/7_27_48.png +0 -0
  131. data/examples/tmp/tiles/7_27_49.png +0 -0
  132. data/examples/tmp/tiles/7_27_50.png +0 -0
  133. data/examples/tmp/tiles/7_28_43.png +0 -0
  134. data/examples/tmp/tiles/7_28_44.png +0 -0
  135. data/examples/tmp/tiles/7_28_45.png +0 -0
  136. data/examples/tmp/tiles/7_28_46.png +0 -0
  137. data/examples/tmp/tiles/7_28_47.png +0 -0
  138. data/examples/tmp/tiles/7_28_48.png +0 -0
  139. data/examples/tmp/tiles/7_28_49.png +0 -0
  140. data/examples/tmp/tiles/7_28_50.png +0 -0
  141. data/examples/tmp/tiles/7_29_43.png +0 -0
  142. data/examples/tmp/tiles/7_29_44.png +0 -0
  143. data/examples/tmp/tiles/7_29_45.png +0 -0
  144. data/examples/tmp/tiles/7_29_46.png +0 -0
  145. data/examples/tmp/tiles/7_29_47.png +0 -0
  146. data/examples/tmp/tiles/7_29_48.png +0 -0
  147. data/examples/tmp/tiles/7_29_49.png +0 -0
  148. data/examples/tmp/tiles/7_29_50.png +0 -0
  149. data/examples/tmp/tiles/7_30_43.png +0 -0
  150. data/examples/tmp/tiles/7_30_44.png +0 -0
  151. data/examples/tmp/tiles/7_30_45.png +0 -0
  152. data/examples/tmp/tiles/7_30_46.png +0 -0
  153. data/examples/tmp/tiles/7_30_47.png +0 -0
  154. data/examples/tmp/tiles/7_30_48.png +0 -0
  155. data/examples/tmp/tiles/7_30_49.png +0 -0
  156. data/examples/tmp/tiles/7_30_50.png +0 -0
  157. data/examples/tmp/tiles/7_31_43.png +0 -0
  158. data/examples/tmp/tiles/7_31_44.png +0 -0
  159. data/examples/tmp/tiles/7_31_45.png +0 -0
  160. data/examples/tmp/tiles/7_31_46.png +0 -0
  161. data/examples/tmp/tiles/7_31_47.png +0 -0
  162. data/examples/tmp/tiles/7_31_48.png +0 -0
  163. data/examples/tmp/tiles/7_31_49.png +0 -0
  164. data/examples/tmp/tiles/7_31_50.png +0 -0
  165. data/examples/tmp/tiles/7_32_43.png +0 -0
  166. data/examples/tmp/tiles/7_32_44.png +0 -0
  167. data/examples/tmp/tiles/7_32_45.png +0 -0
  168. data/examples/tmp/tiles/7_32_46.png +0 -0
  169. data/examples/tmp/tiles/7_32_47.png +0 -0
  170. data/examples/tmp/tiles/7_32_48.png +0 -0
  171. data/examples/tmp/tiles/7_32_49.png +0 -0
  172. data/examples/tmp/tiles/7_32_50.png +0 -0
  173. data/examples/tmp/tiles/7_37_71.png +0 -0
  174. data/examples/tmp/tiles/7_37_72.png +0 -0
  175. data/examples/tmp/tiles/7_37_73.png +0 -0
  176. data/examples/tmp/tiles/7_37_74.png +0 -0
  177. data/examples/tmp/tiles/7_37_75.png +0 -0
  178. data/examples/tmp/tiles/7_37_76.png +0 -0
  179. data/examples/tmp/tiles/7_37_77.png +0 -0
  180. data/examples/tmp/tiles/7_37_78.png +0 -0
  181. data/examples/tmp/tiles/7_37_79.png +0 -0
  182. data/examples/tmp/tiles/7_37_80.png +0 -0
  183. data/examples/tmp/tiles/7_37_81.png +0 -0
  184. data/examples/tmp/tiles/7_37_82.png +0 -0
  185. data/examples/tmp/tiles/7_37_83.png +0 -0
  186. data/examples/tmp/tiles/7_37_84.png +0 -0
  187. data/examples/tmp/tiles/7_37_85.png +0 -0
  188. data/examples/tmp/tiles/7_37_86.png +0 -0
  189. data/examples/tmp/tiles/7_37_87.png +0 -0
  190. data/examples/tmp/tiles/7_38_71.png +0 -0
  191. data/examples/tmp/tiles/7_38_72.png +0 -0
  192. data/examples/tmp/tiles/7_38_73.png +0 -0
  193. data/examples/tmp/tiles/7_38_74.png +0 -0
  194. data/examples/tmp/tiles/7_38_75.png +0 -0
  195. data/examples/tmp/tiles/7_38_76.png +0 -0
  196. data/examples/tmp/tiles/7_38_77.png +0 -0
  197. data/examples/tmp/tiles/7_38_78.png +0 -0
  198. data/examples/tmp/tiles/7_38_79.png +0 -0
  199. data/examples/tmp/tiles/7_38_80.png +0 -0
  200. data/examples/tmp/tiles/7_38_81.png +0 -0
  201. data/examples/tmp/tiles/7_38_82.png +0 -0
  202. data/examples/tmp/tiles/7_38_83.png +0 -0
  203. data/examples/tmp/tiles/7_38_84.png +0 -0
  204. data/examples/tmp/tiles/7_38_85.png +0 -0
  205. data/examples/tmp/tiles/7_38_86.png +0 -0
  206. data/examples/tmp/tiles/7_38_87.png +0 -0
  207. data/examples/tmp/tiles/7_39_71.png +0 -0
  208. data/examples/tmp/tiles/7_39_72.png +0 -0
  209. data/examples/tmp/tiles/7_39_73.png +0 -0
  210. data/examples/tmp/tiles/7_39_74.png +0 -0
  211. data/examples/tmp/tiles/7_39_75.png +0 -0
  212. data/examples/tmp/tiles/7_39_76.png +0 -0
  213. data/examples/tmp/tiles/7_39_77.png +0 -0
  214. data/examples/tmp/tiles/7_39_78.png +0 -0
  215. data/examples/tmp/tiles/7_39_79.png +0 -0
  216. data/examples/tmp/tiles/7_39_80.png +0 -0
  217. data/examples/tmp/tiles/7_39_81.png +0 -0
  218. data/examples/tmp/tiles/7_39_82.png +0 -0
  219. data/examples/tmp/tiles/7_39_83.png +0 -0
  220. data/examples/tmp/tiles/7_39_84.png +0 -0
  221. data/examples/tmp/tiles/7_39_85.png +0 -0
  222. data/examples/tmp/tiles/7_39_86.png +0 -0
  223. data/examples/tmp/tiles/7_39_87.png +0 -0
  224. data/examples/tmp/tiles/7_40_71.png +0 -0
  225. data/examples/tmp/tiles/7_40_72.png +0 -0
  226. data/examples/tmp/tiles/7_40_73.png +0 -0
  227. data/examples/tmp/tiles/7_40_74.png +0 -0
  228. data/examples/tmp/tiles/7_40_75.png +0 -0
  229. data/examples/tmp/tiles/7_40_76.png +0 -0
  230. data/examples/tmp/tiles/7_40_77.png +0 -0
  231. data/examples/tmp/tiles/7_40_78.png +0 -0
  232. data/examples/tmp/tiles/7_40_79.png +0 -0
  233. data/examples/tmp/tiles/7_40_80.png +0 -0
  234. data/examples/tmp/tiles/7_40_81.png +0 -0
  235. data/examples/tmp/tiles/7_40_82.png +0 -0
  236. data/examples/tmp/tiles/7_40_83.png +0 -0
  237. data/examples/tmp/tiles/7_40_84.png +0 -0
  238. data/examples/tmp/tiles/7_40_85.png +0 -0
  239. data/examples/tmp/tiles/7_40_86.png +0 -0
  240. data/examples/tmp/tiles/7_40_87.png +0 -0
  241. data/examples/tmp/tiles/7_41_71.png +0 -0
  242. data/examples/tmp/tiles/7_41_72.png +0 -0
  243. data/examples/tmp/tiles/7_41_73.png +0 -0
  244. data/examples/tmp/tiles/7_41_74.png +0 -0
  245. data/examples/tmp/tiles/7_41_75.png +0 -0
  246. data/examples/tmp/tiles/7_41_76.png +0 -0
  247. data/examples/tmp/tiles/7_41_77.png +0 -0
  248. data/examples/tmp/tiles/7_41_78.png +0 -0
  249. data/examples/tmp/tiles/7_41_79.png +0 -0
  250. data/examples/tmp/tiles/7_41_80.png +0 -0
  251. data/examples/tmp/tiles/7_41_81.png +0 -0
  252. data/examples/tmp/tiles/7_41_82.png +0 -0
  253. data/examples/tmp/tiles/7_41_83.png +0 -0
  254. data/examples/tmp/tiles/7_41_84.png +0 -0
  255. data/examples/tmp/tiles/7_41_85.png +0 -0
  256. data/examples/tmp/tiles/7_41_86.png +0 -0
  257. data/examples/tmp/tiles/7_41_87.png +0 -0
  258. data/examples/tmp/tiles/7_42_71.png +0 -0
  259. data/examples/tmp/tiles/7_42_72.png +0 -0
  260. data/examples/tmp/tiles/7_42_73.png +0 -0
  261. data/examples/tmp/tiles/7_42_74.png +0 -0
  262. data/examples/tmp/tiles/7_42_75.png +0 -0
  263. data/examples/tmp/tiles/7_42_76.png +0 -0
  264. data/examples/tmp/tiles/7_42_77.png +0 -0
  265. data/examples/tmp/tiles/7_42_78.png +0 -0
  266. data/examples/tmp/tiles/7_42_79.png +0 -0
  267. data/examples/tmp/tiles/7_42_80.png +0 -0
  268. data/examples/tmp/tiles/7_42_81.png +0 -0
  269. data/examples/tmp/tiles/7_42_82.png +0 -0
  270. data/examples/tmp/tiles/7_42_83.png +0 -0
  271. data/examples/tmp/tiles/7_42_84.png +0 -0
  272. data/examples/tmp/tiles/7_42_85.png +0 -0
  273. data/examples/tmp/tiles/7_42_86.png +0 -0
  274. data/examples/tmp/tiles/7_42_87.png +0 -0
  275. data/examples/tmp/tiles/7_43_71.png +0 -0
  276. data/examples/tmp/tiles/7_43_72.png +0 -0
  277. data/examples/tmp/tiles/7_43_73.png +0 -0
  278. data/examples/tmp/tiles/7_43_74.png +0 -0
  279. data/examples/tmp/tiles/7_43_75.png +0 -0
  280. data/examples/tmp/tiles/7_43_76.png +0 -0
  281. data/examples/tmp/tiles/7_43_77.png +0 -0
  282. data/examples/tmp/tiles/7_43_78.png +0 -0
  283. data/examples/tmp/tiles/7_43_79.png +0 -0
  284. data/examples/tmp/tiles/7_43_80.png +0 -0
  285. data/examples/tmp/tiles/7_43_81.png +0 -0
  286. data/examples/tmp/tiles/7_43_82.png +0 -0
  287. data/examples/tmp/tiles/7_43_83.png +0 -0
  288. data/examples/tmp/tiles/7_43_84.png +0 -0
  289. data/examples/tmp/tiles/7_43_85.png +0 -0
  290. data/examples/tmp/tiles/7_43_86.png +0 -0
  291. data/examples/tmp/tiles/7_43_87.png +0 -0
  292. data/examples/tmp/tiles/7_44_71.png +0 -0
  293. data/examples/tmp/tiles/7_44_72.png +0 -0
  294. data/examples/tmp/tiles/7_44_73.png +0 -0
  295. data/examples/tmp/tiles/7_44_74.png +0 -0
  296. data/examples/tmp/tiles/7_44_75.png +0 -0
  297. data/examples/tmp/tiles/7_44_76.png +0 -0
  298. data/examples/tmp/tiles/7_44_77.png +0 -0
  299. data/examples/tmp/tiles/7_44_78.png +0 -0
  300. data/examples/tmp/tiles/7_44_79.png +0 -0
  301. data/examples/tmp/tiles/7_44_80.png +0 -0
  302. data/examples/tmp/tiles/7_44_81.png +0 -0
  303. data/examples/tmp/tiles/7_44_82.png +0 -0
  304. data/examples/tmp/tiles/7_44_83.png +0 -0
  305. data/examples/tmp/tiles/7_44_84.png +0 -0
  306. data/examples/tmp/tiles/7_44_85.png +0 -0
  307. data/examples/tmp/tiles/7_44_86.png +0 -0
  308. data/examples/tmp/tiles/7_44_87.png +0 -0
  309. data/examples/tmp/tiles/7_75_64.png +0 -0
  310. data/examples/tmp/tiles/7_75_65.png +0 -0
  311. data/examples/tmp/tiles/7_75_66.png +0 -0
  312. data/examples/tmp/tiles/7_75_67.png +0 -0
  313. data/examples/tmp/tiles/7_75_68.png +0 -0
  314. data/examples/tmp/tiles/7_76_64.png +0 -0
  315. data/examples/tmp/tiles/7_76_65.png +0 -0
  316. data/examples/tmp/tiles/7_76_66.png +0 -0
  317. data/examples/tmp/tiles/7_76_67.png +0 -0
  318. data/examples/tmp/tiles/7_76_68.png +0 -0
  319. data/examples/tmp/tiles/7_77_64.png +0 -0
  320. data/examples/tmp/tiles/7_77_65.png +0 -0
  321. data/examples/tmp/tiles/7_77_66.png +0 -0
  322. data/examples/tmp/tiles/7_77_67.png +0 -0
  323. data/examples/tmp/tiles/7_77_68.png +0 -0
  324. data/lib/gd/gis/basemap.rb +116 -9
  325. data/lib/gd/gis/geometry.rb +40 -0
  326. data/lib/gd/gis/layer_lines.rb +36 -0
  327. data/lib/gd/gis/layer_points.rb +31 -1
  328. data/lib/gd/gis/layer_polygons.rb +38 -0
  329. data/lib/gd/gis/map.rb +53 -33
  330. data/lib/gd/gis/projection.rb +14 -0
  331. metadata +339 -17
  332. /data/examples/{fonts → street/fonts}/DejaVu Fonts License.txt +0 -0
  333. /data/examples/{fonts → street/fonts}/DejaVuSans-Bold.ttf +0 -0
  334. /data/examples/{fonts → street/fonts}/DejaVuSans-BoldOblique.ttf +0 -0
  335. /data/examples/{fonts → street/fonts}/DejaVuSans-ExtraLight.ttf +0 -0
  336. /data/examples/{fonts → street/fonts}/DejaVuSans-Oblique.ttf +0 -0
  337. /data/examples/{fonts → street/fonts}/DejaVuSans.ttf +0 -0
  338. /data/examples/{fonts → street/fonts}/DejaVuSansCondensed-Bold.ttf +0 -0
  339. /data/examples/{fonts → street/fonts}/DejaVuSansCondensed-BoldOblique.ttf +0 -0
  340. /data/examples/{fonts → street/fonts}/DejaVuSansCondensed-Oblique.ttf +0 -0
  341. /data/examples/{fonts → street/fonts}/DejaVuSansCondensed.ttf +0 -0
data/lib/gd/gis/map.rb CHANGED
@@ -1,7 +1,10 @@
1
1
  require "gd"
2
2
  require_relative "basemap"
3
3
  require_relative "projection"
4
+ require_relative "geometry"
4
5
  require_relative "layer_points"
6
+ require_relative "layer_lines"
7
+ require_relative "layer_polygons"
5
8
 
6
9
  module GD
7
10
  module GIS
@@ -13,7 +16,7 @@ module GD
13
16
  @layers = []
14
17
  end
15
18
 
16
- def add_points(data, lon:, lat:, icon:, label: nil, font: nil, size: 12, color: [0,0,0])
19
+ def add_points(data, lon:, lat:, icon: nil, label: nil, font: nil, size: 12, color: [0,0,0])
17
20
  @layers << PointsLayer.new(
18
21
  data,
19
22
  lon: lon,
@@ -26,44 +29,64 @@ module GD
26
29
  )
27
30
  end
28
31
 
32
+ def add_lines(features, stroke:, fill: nil, width:)
33
+ if fill
34
+ @layers << PolygonsLayer.from_lines(features,
35
+ stroke: stroke,
36
+ fill: fill,
37
+ width: width
38
+ )
39
+ else
40
+ @layers << LinesLayer.new(features,
41
+ stroke: stroke,
42
+ width: width
43
+ )
44
+ end
45
+ end
46
+
47
+ def add_polygons(polygons, fill:, stroke: nil, width: nil)
48
+ @layers << PolygonsLayer.new(polygons, fill: fill, stroke: stroke, width: width)
49
+ end
50
+
29
51
  def render
30
52
  tiles, x_min, y_min = @basemap.fetch_tiles
31
53
 
32
- x0 = x_min * 256
33
- y0 = y_min * 256
54
+ # 🔥 Origen REAL del canvas en WebMercator global pixels
55
+ origin_x = x_min * 256
56
+ origin_y = y_min * 256
57
+
58
+ x_vals = tiles.map { |t| t[0] }
59
+ y_vals = tiles.map { |t| t[1] }
34
60
 
35
- cols = tiles.map{|t| t[0]}.uniq.size
36
- rows = tiles.map{|t| t[1]}.uniq.size
61
+ cols = x_vals.max - x_vals.min + 1
62
+ rows = y_vals.max - y_vals.min + 1
37
63
 
38
- width = cols * 256
64
+ width = cols * 256
39
65
  height = rows * 256
40
66
 
41
- @img = GD::Image.new(width,height)
67
+ @img = GD::Image.new(width, height)
42
68
  @img.alpha_blending = true
43
69
  @img.save_alpha = true
44
70
 
45
- tiles.each do |x,y,path|
71
+ # Dibujar tiles en sistema LOCAL del mosaico
72
+ tiles.each do |x, y, path|
46
73
  tile = GD::Image.open(path)
47
74
  cx = x - x_min
48
75
  cy = y - y_min
49
- @img.copy(tile, cx*256, cy*256, 0,0,256,256)
76
+ @img.copy(tile, cx * 256, cy * 256, 0, 0, 256, 256)
50
77
  end
51
78
 
52
- # projection bbox
53
- min_x = Projection.mercator_x(@bbox[0])
54
- max_x = Projection.mercator_x(@bbox[2])
55
- min_y = Projection.mercator_y(@bbox[1])
56
- max_y = Projection.mercator_y(@bbox[3])
79
+ # 🔥 Proyección correcta: global → local
80
+ projection = ->(lon, lat) do
81
+ gx, gy = GD::GIS::Projection.lonlat_to_global_px(lon, lat, @zoom)
57
82
 
58
- projector = ->(lon,lat) {
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)
83
+ x = gx - origin_x
84
+ y = gy - origin_y
62
85
 
63
- [ (px - x0).to_i, (py - y0).to_i ]
64
- }
86
+ [x.round, y.round]
87
+ end
65
88
 
66
- @layers.each { |l| l.render!(@img, projector) }
89
+ @layers.each { |l| l.render!(@img, projection) }
67
90
  end
68
91
 
69
92
  def tile2lon(x, z)
@@ -75,15 +98,15 @@ module GD
75
98
  180.0 / Math::PI * Math.atan(0.5 * (Math.exp(n) - Math.exp(-n)))
76
99
  end
77
100
 
78
- def tile_bbox(z,x,y)
101
+ def tile_bbox(z, x, y)
79
102
  west = tile2lon(x, z)
80
- east = tile2lon(x+1, z)
103
+ east = tile2lon(x + 1, z)
81
104
  north = tile2lat(y, z)
82
- south = tile2lat(y+1, z)
105
+ south = tile2lat(y + 1, z)
83
106
  [west, south, east, north]
84
107
  end
85
108
 
86
- def intersect_bbox(a,b)
109
+ def intersect_bbox(a, b)
87
110
  [
88
111
  [a[0], b[0]].max,
89
112
  [a[1], b[1]].max,
@@ -92,13 +115,12 @@ module GD
92
115
  ]
93
116
  end
94
117
 
95
- def tile(z,x,y)
96
- tb = tile_bbox(z,x,y)
118
+ def tile(z, x, y)
119
+ tb = tile_bbox(z, x, y)
97
120
  ib = intersect_bbox(@bbox, tb)
98
121
 
99
- # Si no hay intersección, devolvemos tile vacío
100
122
  if ib[0] >= ib[2] || ib[1] >= ib[3]
101
- return GD::Image.new(256,256)
123
+ return GD::Image.new(256, 256)
102
124
  end
103
125
 
104
126
  submap = GD::GIS::Map.new(
@@ -107,16 +129,14 @@ module GD
107
129
  basemap: :carto_light
108
130
  )
109
131
 
110
- # copiar capas
111
132
  @layers.each { |l| submap.instance_variable_get(:@layers) << l }
112
133
 
113
134
  submap.render
114
135
 
115
- # recortar al tamaño exacto del tile
116
- img = GD::Image.new(256,256)
136
+ img = GD::Image.new(256, 256)
117
137
  img.alpha_blending = true
118
138
  img.save_alpha = true
119
- img.copy(submap.instance_variable_get(:@img), 0,0,0,0,256,256)
139
+ img.copy(submap.instance_variable_get(:@img), 0, 0, 0, 0, 256, 256)
120
140
  img
121
141
  end
122
142
 
@@ -20,6 +20,20 @@ module GD
20
20
 
21
21
  [px.to_i, py.to_i]
22
22
  end
23
+
24
+ TILE_SIZE = 256
25
+
26
+ def self.lonlat_to_global_px(lon, lat, zoom)
27
+ lat = [[lat, 85.05112878].min, -85.05112878].max
28
+ n = 2.0 ** zoom
29
+
30
+ x = (lon + 180.0) / 360.0 * n * TILE_SIZE
31
+
32
+ lat_rad = lat * Math::PI / 180.0
33
+ y = (1.0 - Math.log(Math.tan(lat_rad) + 1.0 / Math.cos(lat_rad)) / Math::PI) / 2.0 * n * TILE_SIZE
34
+
35
+ [x, y]
36
+ end
23
37
  end
24
38
  end
25
39
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: libgd-gis
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Germán Alberto Giménez Silva
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2026-01-07 00:00:00.000000000 Z
11
+ date: 2026-01-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ruby-libgd
@@ -16,20 +16,20 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 0.1.6
19
+ version: 0.1.9
20
20
  - - ">="
21
21
  - !ruby/object:Gem::Version
22
- version: 0.1.6
22
+ version: 0.1.9
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
27
  - - "~>"
28
28
  - !ruby/object:Gem::Version
29
- version: 0.1.6
29
+ version: 0.1.9
30
30
  - - ">="
31
31
  - !ruby/object:Gem::Version
32
- version: 0.1.6
32
+ version: 0.1.9
33
33
  description: A native GIS raster engine for Ruby built on libgd. Render maps, GeoJSON,
34
34
  heatmaps and tiles.
35
35
  email:
@@ -39,39 +39,159 @@ extensions: []
39
39
  extra_rdoc_files: []
40
40
  files:
41
41
  - README.md
42
- - examples/a-world_peaks.rb
42
+ - examples/america-peaks.rb
43
43
  - examples/argentina.png
44
44
  - examples/argentina.rb
45
45
  - examples/argentina_con_localidades.rb
46
46
  - examples/argentina_museos.rb
47
+ - examples/asia-peaks.rb
48
+ - examples/av_ramirez.rb
49
+ - examples/europe-peaks.rb
47
50
  - examples/flag.png
48
- - examples/fonts/DejaVu Fonts License.txt
49
- - examples/fonts/DejaVuSans-Bold.ttf
50
- - examples/fonts/DejaVuSans-BoldOblique.ttf
51
- - examples/fonts/DejaVuSans-ExtraLight.ttf
52
- - examples/fonts/DejaVuSans-Oblique.ttf
53
- - examples/fonts/DejaVuSans.ttf
54
- - examples/fonts/DejaVuSansCondensed-Bold.ttf
55
- - examples/fonts/DejaVuSansCondensed-BoldOblique.ttf
56
- - examples/fonts/DejaVuSansCondensed-Oblique.ttf
57
- - examples/fonts/DejaVuSansCondensed.ttf
51
+ - examples/heladerias.json
52
+ - examples/heladerias.rb
58
53
  - examples/hydro.png
59
54
  - examples/hydro_plants.geojson
55
+ - examples/ice-cream.jpg
56
+ - examples/ice-cream.png
60
57
  - examples/localidades.json
61
58
  - examples/montanas.rb
62
59
  - examples/museos.png
63
60
  - examples/museos_datosabiertos.csv
61
+ - examples/output/america.png
64
62
  - examples/output/argentina.png
65
63
  - examples/output/argentina_localidades.png
66
64
  - examples/output/argentina_museos.png
65
+ - examples/output/asia.png
66
+ - examples/output/europe.png
67
+ - examples/output/heladerias_parana.png
68
+ - examples/output/museos_parana.png
67
69
  - examples/output/tanzania_hydro.png
68
70
  - examples/output/world_peaks-s.png
69
71
  - examples/output/world_peaks.png
72
+ - examples/parana_museos.rb
70
73
  - examples/peak.png
71
74
  - examples/picks.json
72
75
  - examples/render_tile.rb
76
+ - examples/street/1.osm
77
+ - examples/street/av-ramirez.osm
78
+ - examples/street/av-ramirez.png
79
+ - examples/street/av_ramirez-0.1346843780815251.png
80
+ - examples/street/av_ramirez-3.png
81
+ - examples/street/av_ramirez.png
82
+ - examples/street/av_ramirez.rb
83
+ - examples/street/avramirez.geojson
84
+ - examples/street/dot.png
85
+ - examples/street/download.sh
86
+ - examples/street/draw.rb
87
+ - examples/street/fonts/DejaVu Fonts License.txt
88
+ - examples/street/fonts/DejaVuSans-Bold.ttf
89
+ - examples/street/fonts/DejaVuSans-BoldOblique.ttf
90
+ - examples/street/fonts/DejaVuSans-ExtraLight.ttf
91
+ - examples/street/fonts/DejaVuSans-Oblique.ttf
92
+ - examples/street/fonts/DejaVuSans.ttf
93
+ - examples/street/fonts/DejaVuSansCondensed-Bold.ttf
94
+ - examples/street/fonts/DejaVuSansCondensed-BoldOblique.ttf
95
+ - examples/street/fonts/DejaVuSansCondensed-Oblique.ttf
96
+ - examples/street/fonts/DejaVuSansCondensed.ttf
97
+ - examples/street/map.osm
98
+ - examples/street/mark.png
99
+ - examples/street/parana.json
100
+ - examples/street/parana.rb
101
+ - examples/street/parana_areas.png
102
+ - examples/street/query.overpass
103
+ - examples/street/ramirez.geojson
104
+ - examples/street/ramirez_big.geojson
105
+ - examples/street/ramirez_full.geojson
106
+ - examples/street/ramirez_full.png
107
+ - examples/street/ramirez_gis.png
108
+ - examples/street/ramirez_osm.png
109
+ - examples/street/ramirez_osm_full.png
110
+ - examples/street/ramirez_polyline.png
111
+ - examples/street/ramirez_road.png
112
+ - examples/street/test_carto_dark.png
113
+ - examples/street/test_osm_fr.png
114
+ - examples/street/test_polygon.png
115
+ - examples/street/tmp/tiles/carto_dark_15_10874_19433.png
116
+ - examples/street/tmp/tiles/carto_dark_15_10874_19434.png
117
+ - examples/street/tmp/tiles/carto_dark_15_10874_19435.png
118
+ - examples/street/tmp/tiles/carto_dark_15_10874_19436.png
119
+ - examples/street/tmp/tiles/carto_dark_15_10875_19433.png
120
+ - examples/street/tmp/tiles/carto_dark_15_10875_19434.png
121
+ - examples/street/tmp/tiles/carto_dark_15_10875_19435.png
122
+ - examples/street/tmp/tiles/carto_dark_15_10875_19436.png
123
+ - examples/street/tmp/tiles/carto_dark_15_10876_19433.png
124
+ - examples/street/tmp/tiles/carto_dark_15_10876_19434.png
125
+ - examples/street/tmp/tiles/carto_dark_15_10876_19435.png
126
+ - examples/street/tmp/tiles/carto_dark_15_10876_19436.png
127
+ - examples/street/tmp/tiles/esri_satellite_15_10874_19433.jpg
128
+ - examples/street/tmp/tiles/esri_satellite_15_10874_19434.jpg
129
+ - examples/street/tmp/tiles/esri_satellite_15_10874_19435.jpg
130
+ - examples/street/tmp/tiles/esri_satellite_15_10874_19436.jpg
131
+ - examples/street/tmp/tiles/esri_satellite_15_10875_19433.jpg
132
+ - examples/street/tmp/tiles/esri_satellite_15_10875_19434.jpg
133
+ - examples/street/tmp/tiles/esri_satellite_15_10875_19435.jpg
134
+ - examples/street/tmp/tiles/esri_satellite_15_10875_19436.jpg
135
+ - examples/street/tmp/tiles/esri_satellite_15_10876_19433.jpg
136
+ - examples/street/tmp/tiles/esri_satellite_15_10876_19434.jpg
137
+ - examples/street/tmp/tiles/esri_satellite_15_10876_19435.jpg
138
+ - examples/street/tmp/tiles/esri_satellite_15_10876_19436.jpg
139
+ - examples/street/tmp/tiles/osm_fr_15_10874_19433.png
140
+ - examples/street/tmp/tiles/osm_fr_15_10874_19434.png
141
+ - examples/street/tmp/tiles/osm_fr_15_10874_19435.png
142
+ - examples/street/tmp/tiles/osm_fr_15_10874_19436.png
143
+ - examples/street/tmp/tiles/osm_fr_15_10875_19433.png
144
+ - examples/street/tmp/tiles/osm_fr_15_10875_19434.png
145
+ - examples/street/tmp/tiles/osm_fr_15_10875_19435.png
146
+ - examples/street/tmp/tiles/osm_fr_15_10875_19436.png
147
+ - examples/street/tmp/tiles/osm_fr_15_10876_19433.png
148
+ - examples/street/tmp/tiles/osm_fr_15_10876_19434.png
149
+ - examples/street/tmp/tiles/osm_fr_15_10876_19435.png
150
+ - examples/street/tmp/tiles/osm_fr_15_10876_19436.png
73
151
  - examples/tanzania.rb
74
152
  - examples/target.rb
153
+ - examples/tmp/tiles/15_10871_19430.png
154
+ - examples/tmp/tiles/15_10871_19431.png
155
+ - examples/tmp/tiles/15_10871_19432.png
156
+ - examples/tmp/tiles/15_10871_19433.png
157
+ - examples/tmp/tiles/15_10871_19434.png
158
+ - examples/tmp/tiles/15_10871_19435.png
159
+ - examples/tmp/tiles/15_10872_19430.png
160
+ - examples/tmp/tiles/15_10872_19431.png
161
+ - examples/tmp/tiles/15_10872_19432.png
162
+ - examples/tmp/tiles/15_10872_19433.png
163
+ - examples/tmp/tiles/15_10872_19434.png
164
+ - examples/tmp/tiles/15_10872_19435.png
165
+ - examples/tmp/tiles/15_10873_19430.png
166
+ - examples/tmp/tiles/15_10873_19431.png
167
+ - examples/tmp/tiles/15_10873_19432.png
168
+ - examples/tmp/tiles/15_10873_19433.png
169
+ - examples/tmp/tiles/15_10873_19434.png
170
+ - examples/tmp/tiles/15_10873_19435.png
171
+ - examples/tmp/tiles/15_10874_19430.png
172
+ - examples/tmp/tiles/15_10874_19431.png
173
+ - examples/tmp/tiles/15_10874_19432.png
174
+ - examples/tmp/tiles/15_10874_19433.png
175
+ - examples/tmp/tiles/15_10874_19434.png
176
+ - examples/tmp/tiles/15_10874_19435.png
177
+ - examples/tmp/tiles/15_10875_19430.png
178
+ - examples/tmp/tiles/15_10875_19431.png
179
+ - examples/tmp/tiles/15_10875_19432.png
180
+ - examples/tmp/tiles/15_10875_19433.png
181
+ - examples/tmp/tiles/15_10875_19434.png
182
+ - examples/tmp/tiles/15_10875_19435.png
183
+ - examples/tmp/tiles/15_10876_19430.png
184
+ - examples/tmp/tiles/15_10876_19431.png
185
+ - examples/tmp/tiles/15_10876_19432.png
186
+ - examples/tmp/tiles/15_10876_19433.png
187
+ - examples/tmp/tiles/15_10876_19434.png
188
+ - examples/tmp/tiles/15_10876_19435.png
189
+ - examples/tmp/tiles/15_10877_19430.png
190
+ - examples/tmp/tiles/15_10877_19431.png
191
+ - examples/tmp/tiles/15_10877_19432.png
192
+ - examples/tmp/tiles/15_10877_19433.png
193
+ - examples/tmp/tiles/15_10877_19434.png
194
+ - examples/tmp/tiles/15_10877_19435.png
75
195
  - examples/tmp/tiles/4_0_0.png
76
196
  - examples/tmp/tiles/4_0_1.png
77
197
  - examples/tmp/tiles/4_0_10.png
@@ -328,9 +448,211 @@ files:
328
448
  - examples/tmp/tiles/4_9_7.png
329
449
  - examples/tmp/tiles/4_9_8.png
330
450
  - examples/tmp/tiles/4_9_9.png
451
+ - examples/tmp/tiles/7_27_43.png
452
+ - examples/tmp/tiles/7_27_44.png
453
+ - examples/tmp/tiles/7_27_45.png
454
+ - examples/tmp/tiles/7_27_46.png
455
+ - examples/tmp/tiles/7_27_47.png
456
+ - examples/tmp/tiles/7_27_48.png
457
+ - examples/tmp/tiles/7_27_49.png
458
+ - examples/tmp/tiles/7_27_50.png
459
+ - examples/tmp/tiles/7_28_43.png
460
+ - examples/tmp/tiles/7_28_44.png
461
+ - examples/tmp/tiles/7_28_45.png
462
+ - examples/tmp/tiles/7_28_46.png
463
+ - examples/tmp/tiles/7_28_47.png
464
+ - examples/tmp/tiles/7_28_48.png
465
+ - examples/tmp/tiles/7_28_49.png
466
+ - examples/tmp/tiles/7_28_50.png
467
+ - examples/tmp/tiles/7_29_43.png
468
+ - examples/tmp/tiles/7_29_44.png
469
+ - examples/tmp/tiles/7_29_45.png
470
+ - examples/tmp/tiles/7_29_46.png
471
+ - examples/tmp/tiles/7_29_47.png
472
+ - examples/tmp/tiles/7_29_48.png
473
+ - examples/tmp/tiles/7_29_49.png
474
+ - examples/tmp/tiles/7_29_50.png
475
+ - examples/tmp/tiles/7_30_43.png
476
+ - examples/tmp/tiles/7_30_44.png
477
+ - examples/tmp/tiles/7_30_45.png
478
+ - examples/tmp/tiles/7_30_46.png
479
+ - examples/tmp/tiles/7_30_47.png
480
+ - examples/tmp/tiles/7_30_48.png
481
+ - examples/tmp/tiles/7_30_49.png
482
+ - examples/tmp/tiles/7_30_50.png
483
+ - examples/tmp/tiles/7_31_43.png
484
+ - examples/tmp/tiles/7_31_44.png
485
+ - examples/tmp/tiles/7_31_45.png
486
+ - examples/tmp/tiles/7_31_46.png
487
+ - examples/tmp/tiles/7_31_47.png
488
+ - examples/tmp/tiles/7_31_48.png
489
+ - examples/tmp/tiles/7_31_49.png
490
+ - examples/tmp/tiles/7_31_50.png
491
+ - examples/tmp/tiles/7_32_43.png
492
+ - examples/tmp/tiles/7_32_44.png
493
+ - examples/tmp/tiles/7_32_45.png
494
+ - examples/tmp/tiles/7_32_46.png
495
+ - examples/tmp/tiles/7_32_47.png
496
+ - examples/tmp/tiles/7_32_48.png
497
+ - examples/tmp/tiles/7_32_49.png
498
+ - examples/tmp/tiles/7_32_50.png
499
+ - examples/tmp/tiles/7_37_71.png
500
+ - examples/tmp/tiles/7_37_72.png
501
+ - examples/tmp/tiles/7_37_73.png
502
+ - examples/tmp/tiles/7_37_74.png
503
+ - examples/tmp/tiles/7_37_75.png
504
+ - examples/tmp/tiles/7_37_76.png
505
+ - examples/tmp/tiles/7_37_77.png
506
+ - examples/tmp/tiles/7_37_78.png
507
+ - examples/tmp/tiles/7_37_79.png
508
+ - examples/tmp/tiles/7_37_80.png
509
+ - examples/tmp/tiles/7_37_81.png
510
+ - examples/tmp/tiles/7_37_82.png
511
+ - examples/tmp/tiles/7_37_83.png
512
+ - examples/tmp/tiles/7_37_84.png
513
+ - examples/tmp/tiles/7_37_85.png
514
+ - examples/tmp/tiles/7_37_86.png
515
+ - examples/tmp/tiles/7_37_87.png
516
+ - examples/tmp/tiles/7_38_71.png
517
+ - examples/tmp/tiles/7_38_72.png
518
+ - examples/tmp/tiles/7_38_73.png
519
+ - examples/tmp/tiles/7_38_74.png
520
+ - examples/tmp/tiles/7_38_75.png
521
+ - examples/tmp/tiles/7_38_76.png
522
+ - examples/tmp/tiles/7_38_77.png
523
+ - examples/tmp/tiles/7_38_78.png
524
+ - examples/tmp/tiles/7_38_79.png
525
+ - examples/tmp/tiles/7_38_80.png
526
+ - examples/tmp/tiles/7_38_81.png
527
+ - examples/tmp/tiles/7_38_82.png
528
+ - examples/tmp/tiles/7_38_83.png
529
+ - examples/tmp/tiles/7_38_84.png
530
+ - examples/tmp/tiles/7_38_85.png
531
+ - examples/tmp/tiles/7_38_86.png
532
+ - examples/tmp/tiles/7_38_87.png
533
+ - examples/tmp/tiles/7_39_71.png
534
+ - examples/tmp/tiles/7_39_72.png
535
+ - examples/tmp/tiles/7_39_73.png
536
+ - examples/tmp/tiles/7_39_74.png
537
+ - examples/tmp/tiles/7_39_75.png
538
+ - examples/tmp/tiles/7_39_76.png
539
+ - examples/tmp/tiles/7_39_77.png
540
+ - examples/tmp/tiles/7_39_78.png
541
+ - examples/tmp/tiles/7_39_79.png
542
+ - examples/tmp/tiles/7_39_80.png
543
+ - examples/tmp/tiles/7_39_81.png
544
+ - examples/tmp/tiles/7_39_82.png
545
+ - examples/tmp/tiles/7_39_83.png
546
+ - examples/tmp/tiles/7_39_84.png
547
+ - examples/tmp/tiles/7_39_85.png
548
+ - examples/tmp/tiles/7_39_86.png
549
+ - examples/tmp/tiles/7_39_87.png
550
+ - examples/tmp/tiles/7_40_71.png
551
+ - examples/tmp/tiles/7_40_72.png
552
+ - examples/tmp/tiles/7_40_73.png
553
+ - examples/tmp/tiles/7_40_74.png
554
+ - examples/tmp/tiles/7_40_75.png
555
+ - examples/tmp/tiles/7_40_76.png
556
+ - examples/tmp/tiles/7_40_77.png
557
+ - examples/tmp/tiles/7_40_78.png
558
+ - examples/tmp/tiles/7_40_79.png
559
+ - examples/tmp/tiles/7_40_80.png
560
+ - examples/tmp/tiles/7_40_81.png
561
+ - examples/tmp/tiles/7_40_82.png
562
+ - examples/tmp/tiles/7_40_83.png
563
+ - examples/tmp/tiles/7_40_84.png
564
+ - examples/tmp/tiles/7_40_85.png
565
+ - examples/tmp/tiles/7_40_86.png
566
+ - examples/tmp/tiles/7_40_87.png
567
+ - examples/tmp/tiles/7_41_71.png
568
+ - examples/tmp/tiles/7_41_72.png
569
+ - examples/tmp/tiles/7_41_73.png
570
+ - examples/tmp/tiles/7_41_74.png
571
+ - examples/tmp/tiles/7_41_75.png
572
+ - examples/tmp/tiles/7_41_76.png
573
+ - examples/tmp/tiles/7_41_77.png
574
+ - examples/tmp/tiles/7_41_78.png
575
+ - examples/tmp/tiles/7_41_79.png
576
+ - examples/tmp/tiles/7_41_80.png
577
+ - examples/tmp/tiles/7_41_81.png
578
+ - examples/tmp/tiles/7_41_82.png
579
+ - examples/tmp/tiles/7_41_83.png
580
+ - examples/tmp/tiles/7_41_84.png
581
+ - examples/tmp/tiles/7_41_85.png
582
+ - examples/tmp/tiles/7_41_86.png
583
+ - examples/tmp/tiles/7_41_87.png
584
+ - examples/tmp/tiles/7_42_71.png
585
+ - examples/tmp/tiles/7_42_72.png
586
+ - examples/tmp/tiles/7_42_73.png
587
+ - examples/tmp/tiles/7_42_74.png
588
+ - examples/tmp/tiles/7_42_75.png
589
+ - examples/tmp/tiles/7_42_76.png
590
+ - examples/tmp/tiles/7_42_77.png
591
+ - examples/tmp/tiles/7_42_78.png
592
+ - examples/tmp/tiles/7_42_79.png
593
+ - examples/tmp/tiles/7_42_80.png
594
+ - examples/tmp/tiles/7_42_81.png
595
+ - examples/tmp/tiles/7_42_82.png
596
+ - examples/tmp/tiles/7_42_83.png
597
+ - examples/tmp/tiles/7_42_84.png
598
+ - examples/tmp/tiles/7_42_85.png
599
+ - examples/tmp/tiles/7_42_86.png
600
+ - examples/tmp/tiles/7_42_87.png
601
+ - examples/tmp/tiles/7_43_71.png
602
+ - examples/tmp/tiles/7_43_72.png
603
+ - examples/tmp/tiles/7_43_73.png
604
+ - examples/tmp/tiles/7_43_74.png
605
+ - examples/tmp/tiles/7_43_75.png
606
+ - examples/tmp/tiles/7_43_76.png
607
+ - examples/tmp/tiles/7_43_77.png
608
+ - examples/tmp/tiles/7_43_78.png
609
+ - examples/tmp/tiles/7_43_79.png
610
+ - examples/tmp/tiles/7_43_80.png
611
+ - examples/tmp/tiles/7_43_81.png
612
+ - examples/tmp/tiles/7_43_82.png
613
+ - examples/tmp/tiles/7_43_83.png
614
+ - examples/tmp/tiles/7_43_84.png
615
+ - examples/tmp/tiles/7_43_85.png
616
+ - examples/tmp/tiles/7_43_86.png
617
+ - examples/tmp/tiles/7_43_87.png
618
+ - examples/tmp/tiles/7_44_71.png
619
+ - examples/tmp/tiles/7_44_72.png
620
+ - examples/tmp/tiles/7_44_73.png
621
+ - examples/tmp/tiles/7_44_74.png
622
+ - examples/tmp/tiles/7_44_75.png
623
+ - examples/tmp/tiles/7_44_76.png
624
+ - examples/tmp/tiles/7_44_77.png
625
+ - examples/tmp/tiles/7_44_78.png
626
+ - examples/tmp/tiles/7_44_79.png
627
+ - examples/tmp/tiles/7_44_80.png
628
+ - examples/tmp/tiles/7_44_81.png
629
+ - examples/tmp/tiles/7_44_82.png
630
+ - examples/tmp/tiles/7_44_83.png
631
+ - examples/tmp/tiles/7_44_84.png
632
+ - examples/tmp/tiles/7_44_85.png
633
+ - examples/tmp/tiles/7_44_86.png
634
+ - examples/tmp/tiles/7_44_87.png
635
+ - examples/tmp/tiles/7_75_64.png
636
+ - examples/tmp/tiles/7_75_65.png
637
+ - examples/tmp/tiles/7_75_66.png
638
+ - examples/tmp/tiles/7_75_67.png
639
+ - examples/tmp/tiles/7_75_68.png
640
+ - examples/tmp/tiles/7_76_64.png
641
+ - examples/tmp/tiles/7_76_65.png
642
+ - examples/tmp/tiles/7_76_66.png
643
+ - examples/tmp/tiles/7_76_67.png
644
+ - examples/tmp/tiles/7_76_68.png
645
+ - examples/tmp/tiles/7_77_64.png
646
+ - examples/tmp/tiles/7_77_65.png
647
+ - examples/tmp/tiles/7_77_66.png
648
+ - examples/tmp/tiles/7_77_67.png
649
+ - examples/tmp/tiles/7_77_68.png
331
650
  - lib/gd/gis.rb
332
651
  - lib/gd/gis/basemap.rb
652
+ - lib/gd/gis/geometry.rb
653
+ - lib/gd/gis/layer_lines.rb
333
654
  - lib/gd/gis/layer_points.rb
655
+ - lib/gd/gis/layer_polygons.rb
334
656
  - lib/gd/gis/map.rb
335
657
  - lib/gd/gis/projection.rb
336
658
  - lib/libgd_gis.rb
File without changes