libgd-gis 0.1.2 → 0.2.0

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 (1140) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +80 -31
  3. data/examples/argentina_cities.rb +89 -0
  4. data/examples/argentina_museums.rb +70 -0
  5. data/examples/asia-peaks.rb +42 -0
  6. data/examples/avenue_ramirez.rb +44 -0
  7. data/examples/europe-peaks.rb +29 -0
  8. data/examples/flag.png +0 -0
  9. data/examples/ice-cream-shops.rb +37 -0
  10. data/examples/map.png +0 -0
  11. data/examples/mountains.rb +98 -0
  12. data/examples/output/argentina.png +0 -0
  13. data/examples/output/argentina_localidades.png +0 -0
  14. data/examples/parana-city.rb +29 -0
  15. data/examples/parana.osm +186897 -0
  16. data/examples/parana.png +0 -0
  17. data/examples/parana_museums.rb +48 -0
  18. data/examples/parana_streets.geojson +1 -0
  19. data/examples/parana_streets.rb +48 -0
  20. data/examples/streets.geojson +1 -0
  21. data/examples/streets.png +0 -0
  22. data/examples/streets_geojson.rb +33 -0
  23. data/examples/the_america_peaks.rb +43 -0
  24. data/examples/tmp/tiles/7_37_78.png +0 -0
  25. data/examples/tmp/tiles/7_37_79.png +0 -0
  26. data/examples/tmp/tiles/7_37_80.png +0 -0
  27. data/examples/tmp/tiles/7_37_81.png +0 -0
  28. data/examples/tmp/tiles/7_37_82.png +0 -0
  29. data/examples/tmp/tiles/7_37_83.png +0 -0
  30. data/examples/tmp/tiles/7_37_84.png +0 -0
  31. data/examples/tmp/tiles/7_37_85.png +0 -0
  32. data/examples/tmp/tiles/7_37_86.png +0 -0
  33. data/examples/tmp/tiles/7_38_71.png +0 -0
  34. data/examples/tmp/tiles/7_38_72.png +0 -0
  35. data/examples/tmp/tiles/7_38_73.png +0 -0
  36. data/examples/tmp/tiles/7_38_74.png +0 -0
  37. data/examples/tmp/tiles/7_38_75.png +0 -0
  38. data/examples/tmp/tiles/7_38_76.png +0 -0
  39. data/examples/tmp/tiles/7_38_77.png +0 -0
  40. data/examples/tmp/tiles/7_38_78.png +0 -0
  41. data/examples/tmp/tiles/7_38_79.png +0 -0
  42. data/examples/tmp/tiles/7_38_80.png +0 -0
  43. data/examples/tmp/tiles/7_38_81.png +0 -0
  44. data/examples/tmp/tiles/7_38_82.png +0 -0
  45. data/examples/tmp/tiles/7_38_83.png +0 -0
  46. data/examples/tmp/tiles/7_38_84.png +0 -0
  47. data/examples/tmp/tiles/7_38_85.png +0 -0
  48. data/examples/tmp/tiles/7_38_86.png +0 -0
  49. data/examples/tmp/tiles/7_38_87.png +0 -0
  50. data/examples/tmp/tiles/7_39_71.png +0 -0
  51. data/examples/tmp/tiles/7_39_72.png +0 -0
  52. data/examples/tmp/tiles/7_39_73.png +0 -0
  53. data/examples/tmp/tiles/7_39_74.png +0 -0
  54. data/examples/tmp/tiles/7_39_75.png +0 -0
  55. data/examples/tmp/tiles/7_39_76.png +0 -0
  56. data/examples/tmp/tiles/7_39_77.png +0 -0
  57. data/examples/tmp/tiles/7_39_78.png +0 -0
  58. data/examples/tmp/tiles/7_39_79.png +0 -0
  59. data/examples/tmp/tiles/7_39_80.png +0 -0
  60. data/examples/tmp/tiles/7_39_81.png +0 -0
  61. data/examples/tmp/tiles/7_39_82.png +0 -0
  62. data/examples/tmp/tiles/7_39_83.png +0 -0
  63. data/examples/tmp/tiles/7_39_84.png +0 -0
  64. data/examples/tmp/tiles/7_39_85.png +0 -0
  65. data/examples/tmp/tiles/7_39_86.png +0 -0
  66. data/examples/tmp/tiles/7_39_87.png +0 -0
  67. data/examples/tmp/tiles/7_40_71.png +0 -0
  68. data/examples/tmp/tiles/7_40_72.png +0 -0
  69. data/examples/tmp/tiles/7_40_73.png +0 -0
  70. data/examples/tmp/tiles/7_40_74.png +0 -0
  71. data/examples/tmp/tiles/7_40_75.png +0 -0
  72. data/examples/tmp/tiles/7_40_76.png +0 -0
  73. data/examples/tmp/tiles/7_40_77.png +0 -0
  74. data/examples/tmp/tiles/7_40_78.png +0 -0
  75. data/examples/tmp/tiles/7_40_79.png +0 -0
  76. data/examples/tmp/tiles/7_40_80.png +0 -0
  77. data/examples/tmp/tiles/7_40_81.png +0 -0
  78. data/examples/tmp/tiles/7_40_82.png +0 -0
  79. data/examples/tmp/tiles/7_40_83.png +0 -0
  80. data/examples/tmp/tiles/7_40_86.png +0 -0
  81. data/examples/tmp/tiles/7_40_87.png +0 -0
  82. data/examples/tmp/tiles/7_41_71.png +0 -0
  83. data/examples/tmp/tiles/7_41_72.png +0 -0
  84. data/examples/tmp/tiles/7_41_73.png +0 -0
  85. data/examples/tmp/tiles/7_41_74.png +0 -0
  86. data/examples/tmp/tiles/7_41_75.png +0 -0
  87. data/examples/tmp/tiles/7_41_76.png +0 -0
  88. data/examples/tmp/tiles/7_41_77.png +0 -0
  89. data/examples/tmp/tiles/7_41_78.png +0 -0
  90. data/examples/tmp/tiles/7_41_79.png +0 -0
  91. data/examples/tmp/tiles/7_41_80.png +0 -0
  92. data/examples/tmp/tiles/7_41_81.png +0 -0
  93. data/examples/tmp/tiles/7_41_87.png +0 -0
  94. data/examples/tmp/tiles/7_42_71.png +0 -0
  95. data/examples/tmp/tiles/7_42_72.png +0 -0
  96. data/examples/tmp/tiles/7_42_73.png +0 -0
  97. data/examples/tmp/tiles/7_42_74.png +0 -0
  98. data/examples/tmp/tiles/7_42_75.png +0 -0
  99. data/examples/tmp/tiles/7_42_76.png +0 -0
  100. data/examples/tmp/tiles/7_42_77.png +0 -0
  101. data/examples/tmp/tiles/7_42_78.png +0 -0
  102. data/examples/tmp/tiles/7_42_79.png +0 -0
  103. data/examples/tmp/tiles/7_42_85.png +0 -0
  104. data/examples/tmp/tiles/7_43_71.png +0 -0
  105. data/examples/tmp/tiles/7_43_72.png +0 -0
  106. data/examples/tmp/tiles/7_43_73.png +0 -0
  107. data/examples/tmp/tiles/7_43_74.png +0 -0
  108. data/examples/tmp/tiles/7_43_75.png +0 -0
  109. data/examples/tmp/tiles/7_43_76.png +0 -0
  110. data/examples/tmp/tiles/7_43_77.png +0 -0
  111. data/examples/tmp/tiles/7_43_78.png +0 -0
  112. data/examples/tmp/tiles/7_43_85.png +0 -0
  113. data/examples/tmp/tiles/7_44_71.png +0 -0
  114. data/examples/tmp/tiles/7_44_72.png +0 -0
  115. data/examples/tmp/tiles/7_44_73.png +0 -0
  116. data/examples/tmp/tiles/7_44_74.png +0 -0
  117. data/examples/tmp/tiles/7_44_75.png +0 -0
  118. data/examples/tmp/tiles/7_44_76.png +0 -0
  119. data/examples/tmp/tiles/7_44_77.png +0 -0
  120. data/examples/tmp/tiles/carto_light_15_10871_19430.png +0 -0
  121. data/examples/tmp/tiles/carto_light_15_10871_19431.png +0 -0
  122. data/examples/tmp/tiles/carto_light_15_10871_19432.png +0 -0
  123. data/examples/tmp/tiles/carto_light_15_10871_19433.png +0 -0
  124. data/examples/tmp/tiles/carto_light_15_10871_19434.png +0 -0
  125. data/examples/tmp/tiles/carto_light_15_10871_19435.png +0 -0
  126. data/examples/tmp/tiles/carto_light_15_10872_19430.png +0 -0
  127. data/examples/tmp/tiles/carto_light_15_10872_19431.png +0 -0
  128. data/examples/tmp/tiles/carto_light_15_10872_19432.png +0 -0
  129. data/examples/tmp/tiles/carto_light_15_10872_19433.png +0 -0
  130. data/examples/tmp/tiles/carto_light_15_10872_19434.png +0 -0
  131. data/examples/tmp/tiles/carto_light_15_10872_19435.png +0 -0
  132. data/examples/tmp/tiles/carto_light_15_10873_19430.png +0 -0
  133. data/examples/tmp/tiles/carto_light_15_10873_19431.png +0 -0
  134. data/examples/tmp/tiles/carto_light_15_10873_19432.png +0 -0
  135. data/examples/tmp/tiles/carto_light_15_10873_19433.png +0 -0
  136. data/examples/tmp/tiles/carto_light_15_10873_19434.png +0 -0
  137. data/examples/tmp/tiles/carto_light_15_10873_19435.png +0 -0
  138. data/examples/tmp/tiles/carto_light_15_10874_19430.png +0 -0
  139. data/examples/tmp/tiles/carto_light_15_10874_19431.png +0 -0
  140. data/examples/tmp/tiles/carto_light_15_10874_19432.png +0 -0
  141. data/examples/tmp/tiles/carto_light_15_10874_19433.png +0 -0
  142. data/examples/tmp/tiles/carto_light_15_10874_19434.png +0 -0
  143. data/examples/tmp/tiles/carto_light_15_10874_19435.png +0 -0
  144. data/examples/tmp/tiles/carto_light_15_10875_19430.png +0 -0
  145. data/examples/tmp/tiles/carto_light_15_10875_19431.png +0 -0
  146. data/examples/tmp/tiles/carto_light_15_10875_19432.png +0 -0
  147. data/examples/tmp/tiles/carto_light_15_10875_19433.png +0 -0
  148. data/examples/tmp/tiles/carto_light_15_10875_19434.png +0 -0
  149. data/examples/tmp/tiles/carto_light_15_10875_19435.png +0 -0
  150. data/examples/tmp/tiles/carto_light_15_10876_19430.png +0 -0
  151. data/examples/tmp/tiles/carto_light_15_10876_19431.png +0 -0
  152. data/examples/tmp/tiles/carto_light_15_10876_19432.png +0 -0
  153. data/examples/tmp/tiles/carto_light_15_10876_19433.png +0 -0
  154. data/examples/tmp/tiles/carto_light_15_10876_19434.png +0 -0
  155. data/examples/tmp/tiles/carto_light_15_10876_19435.png +0 -0
  156. data/examples/tmp/tiles/carto_light_15_10877_19430.png +0 -0
  157. data/examples/tmp/tiles/carto_light_15_10877_19431.png +0 -0
  158. data/examples/tmp/tiles/carto_light_15_10877_19432.png +0 -0
  159. data/examples/tmp/tiles/carto_light_15_10877_19433.png +0 -0
  160. data/examples/tmp/tiles/carto_light_15_10877_19434.png +0 -0
  161. data/examples/tmp/tiles/carto_light_15_10877_19435.png +0 -0
  162. data/examples/tmp/tiles/carto_light_15_9693_18365.png +0 -0
  163. data/examples/tmp/tiles/carto_light_15_9693_18366.png +0 -0
  164. data/examples/tmp/tiles/carto_light_15_9693_18367.png +0 -0
  165. data/examples/tmp/tiles/carto_light_15_9693_18368.png +0 -0
  166. data/examples/tmp/tiles/carto_light_15_9693_18369.png +0 -0
  167. data/examples/tmp/tiles/carto_light_15_9693_18370.png +0 -0
  168. data/examples/tmp/tiles/carto_light_15_9693_18371.png +0 -0
  169. data/examples/tmp/tiles/carto_light_15_9693_18372.png +0 -0
  170. data/examples/tmp/tiles/carto_light_15_9693_18373.png +0 -0
  171. data/examples/tmp/tiles/carto_light_15_9693_18374.png +0 -0
  172. data/examples/tmp/tiles/carto_light_15_9693_18375.png +0 -0
  173. data/examples/tmp/tiles/carto_light_15_9693_18376.png +0 -0
  174. data/examples/tmp/tiles/carto_light_15_9693_18377.png +0 -0
  175. data/examples/tmp/tiles/carto_light_15_9693_18378.png +0 -0
  176. data/examples/tmp/tiles/carto_light_15_9693_18379.png +0 -0
  177. data/examples/tmp/tiles/carto_light_15_9693_18380.png +0 -0
  178. data/examples/tmp/tiles/carto_light_15_9693_18381.png +0 -0
  179. data/examples/tmp/tiles/carto_light_15_9693_18382.png +0 -0
  180. data/examples/tmp/tiles/carto_light_15_9693_18383.png +0 -0
  181. data/examples/tmp/tiles/carto_light_15_9693_18384.png +0 -0
  182. data/examples/tmp/tiles/carto_light_15_9693_18385.png +0 -0
  183. data/examples/tmp/tiles/carto_light_15_9693_18386.png +0 -0
  184. data/examples/tmp/tiles/carto_light_15_9693_18387.png +0 -0
  185. data/examples/tmp/tiles/carto_light_15_9693_18388.png +0 -0
  186. data/examples/tmp/tiles/carto_light_15_9693_18389.png +0 -0
  187. data/examples/tmp/tiles/carto_light_15_9693_18390.png +0 -0
  188. data/examples/tmp/tiles/carto_light_15_9693_18391.png +0 -0
  189. data/examples/tmp/tiles/carto_light_15_9693_18392.png +0 -0
  190. data/examples/tmp/tiles/carto_light_15_9693_18393.png +0 -0
  191. data/examples/tmp/tiles/carto_light_15_9693_18394.png +0 -0
  192. data/examples/tmp/tiles/carto_light_15_9693_18395.png +0 -0
  193. data/examples/tmp/tiles/carto_light_15_9693_18396.png +0 -0
  194. data/examples/tmp/tiles/carto_light_15_9693_18397.png +0 -0
  195. data/examples/tmp/tiles/carto_light_15_9693_18398.png +0 -0
  196. data/examples/tmp/tiles/carto_light_15_9693_18399.png +0 -0
  197. data/examples/tmp/tiles/carto_light_15_9693_18400.png +0 -0
  198. data/examples/tmp/tiles/carto_light_15_9693_18401.png +0 -0
  199. data/examples/tmp/tiles/carto_light_15_9693_18402.png +0 -0
  200. data/examples/tmp/tiles/carto_light_15_9693_18403.png +0 -0
  201. data/examples/tmp/tiles/carto_light_15_9693_18404.png +0 -0
  202. data/examples/tmp/tiles/carto_light_15_9693_18405.png +0 -0
  203. data/examples/tmp/tiles/carto_light_15_9693_18406.png +0 -0
  204. data/examples/tmp/tiles/carto_light_15_9693_18407.png +0 -0
  205. data/examples/tmp/tiles/carto_light_15_9693_18408.png +0 -0
  206. data/examples/tmp/tiles/carto_light_15_9693_18409.png +0 -0
  207. data/examples/tmp/tiles/carto_light_15_9693_18410.png +0 -0
  208. data/examples/tmp/tiles/carto_light_15_9693_18411.png +0 -0
  209. data/examples/tmp/tiles/carto_light_15_9693_18412.png +0 -0
  210. data/examples/tmp/tiles/carto_light_15_9693_18413.png +0 -0
  211. data/examples/tmp/tiles/carto_light_15_9693_18414.png +0 -0
  212. data/examples/tmp/tiles/carto_light_15_9693_18415.png +0 -0
  213. data/examples/tmp/tiles/carto_light_15_9693_18416.png +0 -0
  214. data/examples/tmp/tiles/carto_light_15_9693_18417.png +0 -0
  215. data/examples/tmp/tiles/carto_light_15_9693_18418.png +0 -0
  216. data/examples/tmp/tiles/carto_light_15_9693_18419.png +0 -0
  217. data/examples/tmp/tiles/carto_light_15_9693_18420.png +0 -0
  218. data/examples/tmp/tiles/carto_light_15_9693_18421.png +0 -0
  219. data/examples/tmp/tiles/carto_light_15_9693_18422.png +0 -0
  220. data/examples/tmp/tiles/carto_light_15_9693_18423.png +0 -0
  221. data/examples/tmp/tiles/carto_light_15_9693_18424.png +0 -0
  222. data/examples/tmp/tiles/carto_light_15_9693_18425.png +0 -0
  223. data/examples/tmp/tiles/carto_light_15_9693_18426.png +0 -0
  224. data/examples/tmp/tiles/carto_light_15_9693_18427.png +0 -0
  225. data/examples/tmp/tiles/carto_light_15_9693_18428.png +0 -0
  226. data/examples/tmp/tiles/carto_light_15_9693_18429.png +0 -0
  227. data/examples/tmp/tiles/carto_light_15_9693_18430.png +0 -0
  228. data/examples/tmp/tiles/carto_light_15_9693_18431.png +0 -0
  229. data/examples/tmp/tiles/carto_light_15_9693_18432.png +0 -0
  230. data/examples/tmp/tiles/carto_light_15_9693_18433.png +0 -0
  231. data/examples/tmp/tiles/carto_light_15_9693_18434.png +0 -0
  232. data/examples/tmp/tiles/carto_light_15_9693_18435.png +0 -0
  233. data/examples/tmp/tiles/carto_light_15_9693_18436.png +0 -0
  234. data/examples/tmp/tiles/carto_light_15_9693_18437.png +0 -0
  235. data/examples/tmp/tiles/carto_light_15_9693_18438.png +0 -0
  236. data/examples/tmp/tiles/carto_light_15_9693_18439.png +0 -0
  237. data/examples/tmp/tiles/carto_light_15_9693_18440.png +0 -0
  238. data/examples/tmp/tiles/carto_light_15_9693_18441.png +0 -0
  239. data/examples/tmp/tiles/carto_light_15_9693_18442.png +0 -0
  240. data/examples/tmp/tiles/carto_light_15_9693_18443.png +0 -0
  241. data/examples/tmp/tiles/carto_light_15_9693_18444.png +0 -0
  242. data/examples/tmp/tiles/carto_light_15_9693_18445.png +0 -0
  243. data/examples/tmp/tiles/carto_light_15_9693_18446.png +0 -0
  244. data/examples/tmp/tiles/carto_light_15_9693_18447.png +0 -0
  245. data/examples/tmp/tiles/carto_light_15_9693_18448.png +0 -0
  246. data/examples/tmp/tiles/carto_light_15_9693_18449.png +0 -0
  247. data/examples/tmp/tiles/carto_light_15_9693_18450.png +0 -0
  248. data/examples/tmp/tiles/carto_light_15_9693_18451.png +0 -0
  249. data/examples/tmp/tiles/carto_light_15_9693_18452.png +0 -0
  250. data/examples/tmp/tiles/carto_light_15_9693_18453.png +0 -0
  251. data/examples/tmp/tiles/carto_light_15_9693_18454.png +0 -0
  252. data/examples/tmp/tiles/carto_light_15_9693_18455.png +0 -0
  253. data/examples/tmp/tiles/carto_light_15_9693_18456.png +0 -0
  254. data/examples/tmp/tiles/carto_light_15_9693_18457.png +0 -0
  255. data/examples/tmp/tiles/carto_light_15_9693_18458.png +0 -0
  256. data/examples/tmp/tiles/carto_light_15_9693_18459.png +0 -0
  257. data/examples/tmp/tiles/carto_light_15_9693_18460.png +0 -0
  258. data/examples/tmp/tiles/carto_light_15_9693_18461.png +0 -0
  259. data/examples/tmp/tiles/carto_light_15_9693_18462.png +0 -0
  260. data/examples/tmp/tiles/carto_light_15_9693_18463.png +0 -0
  261. data/examples/tmp/tiles/carto_light_15_9693_18464.png +0 -0
  262. data/examples/tmp/tiles/carto_light_15_9693_18465.png +0 -0
  263. data/examples/tmp/tiles/carto_light_15_9693_18466.png +0 -0
  264. data/examples/tmp/tiles/carto_light_15_9693_18467.png +0 -0
  265. data/examples/tmp/tiles/carto_light_15_9693_18468.png +0 -0
  266. data/examples/tmp/tiles/carto_light_15_9693_18469.png +0 -0
  267. data/examples/tmp/tiles/carto_light_15_9693_18470.png +0 -0
  268. data/examples/tmp/tiles/carto_light_15_9693_18471.png +0 -0
  269. data/examples/tmp/tiles/carto_light_15_9693_18472.png +0 -0
  270. data/examples/tmp/tiles/carto_light_15_9693_18473.png +0 -0
  271. data/examples/tmp/tiles/carto_light_15_9693_18474.png +0 -0
  272. data/examples/tmp/tiles/carto_light_15_9693_18475.png +0 -0
  273. data/examples/tmp/tiles/carto_light_15_9693_18476.png +0 -0
  274. data/examples/tmp/tiles/carto_light_15_9693_18477.png +0 -0
  275. data/examples/tmp/tiles/carto_light_15_9693_18478.png +0 -0
  276. data/examples/tmp/tiles/carto_light_15_9693_18479.png +0 -0
  277. data/examples/tmp/tiles/carto_light_15_9693_18480.png +0 -0
  278. data/examples/tmp/tiles/carto_light_15_9693_18481.png +0 -0
  279. data/examples/tmp/tiles/carto_light_15_9693_18482.png +0 -0
  280. data/examples/tmp/tiles/carto_light_15_9693_18483.png +0 -0
  281. data/examples/tmp/tiles/carto_light_15_9693_18484.png +0 -0
  282. data/examples/tmp/tiles/carto_light_15_9693_18485.png +0 -0
  283. data/examples/tmp/tiles/carto_light_15_9693_18486.png +0 -0
  284. data/examples/tmp/tiles/carto_light_15_9693_18487.png +0 -0
  285. data/examples/tmp/tiles/carto_light_15_9693_18488.png +0 -0
  286. data/examples/tmp/tiles/carto_light_15_9693_18489.png +0 -0
  287. data/examples/tmp/tiles/carto_light_15_9693_18490.png +0 -0
  288. data/examples/tmp/tiles/carto_light_15_9693_18491.png +0 -0
  289. data/examples/tmp/tiles/carto_light_15_9693_18492.png +0 -0
  290. data/examples/tmp/tiles/carto_light_15_9693_18493.png +0 -0
  291. data/examples/tmp/tiles/carto_light_15_9693_18494.png +0 -0
  292. data/examples/tmp/tiles/carto_light_15_9693_18495.png +0 -0
  293. data/examples/tmp/tiles/carto_light_15_9693_18496.png +0 -0
  294. data/examples/tmp/tiles/carto_light_15_9693_18497.png +0 -0
  295. data/examples/tmp/tiles/carto_light_15_9693_18498.png +0 -0
  296. data/examples/tmp/tiles/carto_light_15_9693_18499.png +0 -0
  297. data/examples/tmp/tiles/carto_light_15_9693_18500.png +0 -0
  298. data/examples/tmp/tiles/carto_light_15_9693_18501.png +0 -0
  299. data/examples/tmp/tiles/carto_light_15_9693_18502.png +0 -0
  300. data/examples/tmp/tiles/carto_light_15_9693_18503.png +0 -0
  301. data/examples/tmp/tiles/carto_light_15_9693_18504.png +0 -0
  302. data/examples/tmp/tiles/carto_light_15_9693_18505.png +0 -0
  303. data/examples/tmp/tiles/carto_light_15_9693_18506.png +0 -0
  304. data/examples/tmp/tiles/carto_light_15_9693_18507.png +0 -0
  305. data/examples/tmp/tiles/carto_light_15_9693_18508.png +0 -0
  306. data/examples/tmp/tiles/carto_light_15_9693_18509.png +0 -0
  307. data/examples/tmp/tiles/carto_light_15_9693_18510.png +0 -0
  308. data/examples/tmp/tiles/carto_light_15_9693_18511.png +0 -0
  309. data/examples/tmp/tiles/carto_light_15_9693_18512.png +0 -0
  310. data/examples/tmp/tiles/carto_light_15_9693_18513.png +0 -0
  311. data/examples/tmp/tiles/carto_light_15_9693_18514.png +0 -0
  312. data/examples/tmp/tiles/carto_light_15_9693_18515.png +0 -0
  313. data/examples/tmp/tiles/carto_light_15_9693_18516.png +0 -0
  314. data/examples/tmp/tiles/carto_light_15_9693_18517.png +0 -0
  315. data/examples/tmp/tiles/carto_light_15_9693_18518.png +0 -0
  316. data/examples/tmp/tiles/carto_light_15_9693_18519.png +0 -0
  317. data/examples/tmp/tiles/carto_light_15_9693_18520.png +0 -0
  318. data/examples/tmp/tiles/carto_light_15_9693_18521.png +0 -0
  319. data/examples/tmp/tiles/carto_light_15_9693_18522.png +0 -0
  320. data/examples/tmp/tiles/carto_light_15_9693_18523.png +0 -0
  321. data/examples/tmp/tiles/carto_light_15_9693_18524.png +0 -0
  322. data/examples/tmp/tiles/carto_light_15_9693_18525.png +0 -0
  323. data/examples/tmp/tiles/carto_light_15_9693_18526.png +0 -0
  324. data/examples/tmp/tiles/carto_light_15_9693_18527.png +0 -0
  325. data/examples/tmp/tiles/carto_light_15_9693_18528.png +0 -0
  326. data/examples/tmp/tiles/carto_light_15_9693_18529.png +0 -0
  327. data/examples/tmp/tiles/carto_light_15_9693_18530.png +0 -0
  328. data/examples/tmp/tiles/carto_light_15_9693_18531.png +0 -0
  329. data/examples/tmp/tiles/carto_light_15_9693_18532.png +0 -0
  330. data/examples/tmp/tiles/carto_light_15_9693_18533.png +0 -0
  331. data/examples/tmp/tiles/carto_light_15_9693_18534.png +0 -0
  332. data/examples/tmp/tiles/carto_light_15_9693_18535.png +0 -0
  333. data/examples/tmp/tiles/carto_light_15_9693_18536.png +0 -0
  334. data/examples/tmp/tiles/carto_light_15_9693_18537.png +0 -0
  335. data/examples/tmp/tiles/carto_light_15_9693_18538.png +0 -0
  336. data/examples/tmp/tiles/carto_light_15_9693_18539.png +0 -0
  337. data/examples/tmp/tiles/carto_light_15_9693_18540.png +0 -0
  338. data/examples/tmp/tiles/carto_light_15_9693_18541.png +0 -0
  339. data/examples/tmp/tiles/carto_light_15_9693_18542.png +0 -0
  340. data/examples/tmp/tiles/carto_light_15_9693_18543.png +0 -0
  341. data/examples/tmp/tiles/carto_light_15_9693_18544.png +0 -0
  342. data/examples/tmp/tiles/carto_light_15_9693_18545.png +0 -0
  343. data/examples/tmp/tiles/carto_light_15_9693_18546.png +0 -0
  344. data/examples/tmp/tiles/carto_light_15_9693_18547.png +0 -0
  345. data/examples/tmp/tiles/carto_light_15_9693_18548.png +0 -0
  346. data/examples/tmp/tiles/carto_light_15_9693_18549.png +0 -0
  347. data/examples/tmp/tiles/carto_light_15_9693_18550.png +0 -0
  348. data/examples/tmp/tiles/carto_light_15_9693_18551.png +0 -0
  349. data/examples/tmp/tiles/carto_light_15_9693_18552.png +0 -0
  350. data/examples/tmp/tiles/carto_light_15_9693_18553.png +0 -0
  351. data/examples/tmp/tiles/carto_light_15_9693_18554.png +0 -0
  352. data/examples/tmp/tiles/carto_light_15_9693_18555.png +0 -0
  353. data/examples/tmp/tiles/carto_light_15_9693_18556.png +0 -0
  354. data/examples/tmp/tiles/carto_light_15_9693_18557.png +0 -0
  355. data/examples/tmp/tiles/carto_light_15_9693_18558.png +0 -0
  356. data/examples/tmp/tiles/carto_light_15_9693_18559.png +0 -0
  357. data/examples/tmp/tiles/carto_light_15_9693_18560.png +0 -0
  358. data/examples/tmp/tiles/carto_light_15_9693_18561.png +0 -0
  359. data/examples/tmp/tiles/carto_light_15_9693_18562.png +0 -0
  360. data/examples/tmp/tiles/carto_light_15_9693_18563.png +0 -0
  361. data/examples/tmp/tiles/carto_light_15_9693_18564.png +0 -0
  362. data/examples/tmp/tiles/carto_light_15_9693_18565.png +0 -0
  363. data/examples/tmp/tiles/carto_light_15_9693_18566.png +0 -0
  364. data/examples/tmp/tiles/carto_light_15_9693_18567.png +0 -0
  365. data/examples/tmp/tiles/carto_light_15_9693_18568.png +0 -0
  366. data/examples/tmp/tiles/carto_light_15_9693_18569.png +0 -0
  367. data/examples/tmp/tiles/carto_light_15_9693_18570.png +0 -0
  368. data/examples/tmp/tiles/carto_light_15_9693_18571.png +0 -0
  369. data/examples/tmp/tiles/carto_light_15_9693_18572.png +0 -0
  370. data/examples/tmp/tiles/carto_light_15_9693_18573.png +0 -0
  371. data/examples/tmp/tiles/carto_light_15_9693_18574.png +0 -0
  372. data/examples/tmp/tiles/carto_light_15_9693_18575.png +0 -0
  373. data/examples/tmp/tiles/carto_light_15_9693_18576.png +0 -0
  374. data/examples/tmp/tiles/carto_light_15_9693_18577.png +0 -0
  375. data/examples/tmp/tiles/carto_light_15_9693_18578.png +0 -0
  376. data/examples/tmp/tiles/carto_light_15_9693_18579.png +0 -0
  377. data/examples/tmp/tiles/carto_light_15_9693_18580.png +0 -0
  378. data/examples/tmp/tiles/carto_light_15_9693_18581.png +0 -0
  379. data/examples/tmp/tiles/carto_light_15_9693_18582.png +0 -0
  380. data/examples/tmp/tiles/carto_light_15_9693_18583.png +0 -0
  381. data/examples/tmp/tiles/carto_light_15_9693_18584.png +0 -0
  382. data/examples/tmp/tiles/carto_light_15_9693_18585.png +0 -0
  383. data/examples/tmp/tiles/carto_light_15_9693_18586.png +0 -0
  384. data/examples/tmp/tiles/carto_light_15_9693_18587.png +0 -0
  385. data/examples/tmp/tiles/carto_light_15_9693_18588.png +0 -0
  386. data/examples/tmp/tiles/carto_light_15_9693_18589.png +0 -0
  387. data/examples/tmp/tiles/carto_light_15_9693_18590.png +0 -0
  388. data/examples/tmp/tiles/carto_light_15_9693_18591.png +0 -0
  389. data/examples/tmp/tiles/carto_light_15_9693_18592.png +0 -0
  390. data/examples/tmp/tiles/carto_light_15_9693_18593.png +0 -0
  391. data/examples/tmp/tiles/carto_light_15_9693_18594.png +0 -0
  392. data/examples/tmp/tiles/carto_light_15_9693_18595.png +0 -0
  393. data/examples/tmp/tiles/carto_light_15_9693_18596.png +0 -0
  394. data/examples/tmp/tiles/carto_light_15_9693_18597.png +0 -0
  395. data/examples/tmp/tiles/carto_light_15_9693_18598.png +0 -0
  396. data/examples/tmp/tiles/carto_light_15_9693_18599.png +0 -0
  397. data/examples/tmp/tiles/carto_light_15_9693_18600.png +0 -0
  398. data/examples/tmp/tiles/carto_light_15_9693_18601.png +0 -0
  399. data/examples/tmp/tiles/carto_light_15_9693_18602.png +0 -0
  400. data/examples/tmp/tiles/carto_light_15_9693_18603.png +0 -0
  401. data/examples/tmp/tiles/carto_light_15_9693_18604.png +0 -0
  402. data/examples/tmp/tiles/carto_light_15_9693_18605.png +0 -0
  403. data/examples/tmp/tiles/carto_light_15_9693_18606.png +0 -0
  404. data/examples/tmp/tiles/carto_light_15_9693_18607.png +0 -0
  405. data/examples/tmp/tiles/carto_light_15_9693_18608.png +0 -0
  406. data/examples/tmp/tiles/carto_light_15_9693_18609.png +0 -0
  407. data/examples/tmp/tiles/carto_light_15_9693_18610.png +0 -0
  408. data/examples/tmp/tiles/carto_light_15_9693_18611.png +0 -0
  409. data/examples/tmp/tiles/carto_light_15_9693_18612.png +0 -0
  410. data/examples/tmp/tiles/carto_light_15_9693_18613.png +0 -0
  411. data/examples/tmp/tiles/carto_light_15_9693_18614.png +0 -0
  412. data/examples/tmp/tiles/carto_light_15_9693_18615.png +0 -0
  413. data/examples/tmp/tiles/carto_light_15_9693_18616.png +0 -0
  414. data/examples/tmp/tiles/carto_light_15_9693_18617.png +0 -0
  415. data/examples/tmp/tiles/carto_light_15_9693_18618.png +0 -0
  416. data/examples/tmp/tiles/carto_light_15_9693_18619.png +0 -0
  417. data/examples/tmp/tiles/carto_light_15_9693_18620.png +0 -0
  418. data/examples/tmp/tiles/carto_light_15_9693_18621.png +0 -0
  419. data/examples/tmp/tiles/carto_light_15_9693_18622.png +0 -0
  420. data/examples/tmp/tiles/carto_light_15_9693_18623.png +0 -0
  421. data/examples/tmp/tiles/carto_light_15_9693_18624.png +0 -0
  422. data/examples/tmp/tiles/carto_light_15_9693_18625.png +0 -0
  423. data/examples/tmp/tiles/carto_light_15_9693_18626.png +0 -0
  424. data/examples/tmp/tiles/carto_light_15_9693_18627.png +0 -0
  425. data/examples/tmp/tiles/carto_light_15_9693_18628.png +0 -0
  426. data/examples/tmp/tiles/carto_light_15_9693_18629.png +0 -0
  427. data/examples/tmp/tiles/carto_light_15_9693_18630.png +0 -0
  428. data/examples/tmp/tiles/carto_light_15_9693_18631.png +0 -0
  429. data/examples/tmp/tiles/carto_light_15_9693_18632.png +0 -0
  430. data/examples/tmp/tiles/carto_light_15_9693_18633.png +0 -0
  431. data/examples/tmp/tiles/carto_light_15_9693_18634.png +0 -0
  432. data/examples/tmp/tiles/carto_light_15_9693_18635.png +0 -0
  433. data/examples/tmp/tiles/carto_light_15_9693_18636.png +0 -0
  434. data/examples/tmp/tiles/carto_light_15_9693_18637.png +0 -0
  435. data/examples/tmp/tiles/carto_light_15_9693_18638.png +0 -0
  436. data/examples/tmp/tiles/carto_light_15_9693_18639.png +0 -0
  437. data/examples/tmp/tiles/carto_light_15_9693_18640.png +0 -0
  438. data/examples/tmp/tiles/carto_light_15_9693_18641.png +0 -0
  439. data/examples/tmp/tiles/carto_light_15_9693_18642.png +0 -0
  440. data/examples/tmp/tiles/carto_light_15_9693_18643.png +0 -0
  441. data/examples/tmp/tiles/carto_light_15_9693_18644.png +0 -0
  442. data/examples/tmp/tiles/carto_light_15_9693_18645.png +0 -0
  443. data/examples/tmp/tiles/carto_light_15_9693_18646.png +0 -0
  444. data/examples/tmp/tiles/carto_light_15_9693_18647.png +0 -0
  445. data/examples/tmp/tiles/carto_light_15_9693_18648.png +0 -0
  446. data/examples/tmp/tiles/carto_light_15_9693_18649.png +0 -0
  447. data/examples/tmp/tiles/carto_light_15_9693_18650.png +0 -0
  448. data/examples/tmp/tiles/carto_light_15_9693_18651.png +0 -0
  449. data/examples/tmp/tiles/carto_light_15_9693_18652.png +0 -0
  450. data/examples/tmp/tiles/carto_light_15_9693_18653.png +0 -0
  451. data/examples/tmp/tiles/carto_light_15_9693_18654.png +0 -0
  452. data/examples/tmp/tiles/carto_light_15_9693_18655.png +0 -0
  453. data/examples/tmp/tiles/carto_light_15_9693_18656.png +0 -0
  454. data/examples/tmp/tiles/carto_light_15_9693_18657.png +0 -0
  455. data/examples/tmp/tiles/carto_light_15_9693_18658.png +0 -0
  456. data/examples/tmp/tiles/carto_light_15_9693_18659.png +0 -0
  457. data/examples/tmp/tiles/carto_light_15_9693_18660.png +0 -0
  458. data/examples/tmp/tiles/carto_light_15_9693_18661.png +0 -0
  459. data/examples/tmp/tiles/carto_light_15_9693_18662.png +0 -0
  460. data/examples/tmp/tiles/carto_light_15_9693_18663.png +0 -0
  461. data/examples/tmp/tiles/carto_light_15_9693_18664.png +0 -0
  462. data/examples/tmp/tiles/carto_light_15_9693_18665.png +0 -0
  463. data/examples/tmp/tiles/carto_light_15_9693_18666.png +0 -0
  464. data/examples/tmp/tiles/carto_light_15_9693_18667.png +0 -0
  465. data/examples/tmp/tiles/carto_light_15_9693_18668.png +0 -0
  466. data/examples/tmp/tiles/carto_light_15_9693_18669.png +0 -0
  467. data/examples/tmp/tiles/carto_light_15_9693_18670.png +0 -0
  468. data/examples/tmp/tiles/carto_light_15_9693_18671.png +0 -0
  469. data/examples/tmp/tiles/carto_light_15_9693_18672.png +0 -0
  470. data/examples/tmp/tiles/carto_light_15_9693_18673.png +0 -0
  471. data/examples/tmp/tiles/carto_light_15_9693_18674.png +0 -0
  472. data/examples/tmp/tiles/carto_light_15_9693_18675.png +0 -0
  473. data/examples/tmp/tiles/carto_light_15_9693_18676.png +0 -0
  474. data/examples/tmp/tiles/carto_light_15_9693_18677.png +0 -0
  475. data/examples/tmp/tiles/carto_light_15_9693_18678.png +0 -0
  476. data/examples/tmp/tiles/carto_light_15_9693_18679.png +0 -0
  477. data/examples/tmp/tiles/carto_light_15_9693_18680.png +0 -0
  478. data/examples/tmp/tiles/carto_light_15_9693_18681.png +0 -0
  479. data/examples/tmp/tiles/carto_light_15_9693_18682.png +0 -0
  480. data/examples/tmp/tiles/carto_light_15_9693_18683.png +0 -0
  481. data/examples/tmp/tiles/carto_light_15_9693_18684.png +0 -0
  482. data/examples/tmp/tiles/carto_light_15_9693_18685.png +0 -0
  483. data/examples/tmp/tiles/carto_light_15_9693_18686.png +0 -0
  484. data/examples/tmp/tiles/carto_light_15_9693_18687.png +0 -0
  485. data/examples/tmp/tiles/carto_light_15_9693_18688.png +0 -0
  486. data/examples/tmp/tiles/carto_light_15_9693_18689.png +0 -0
  487. data/examples/tmp/tiles/carto_light_15_9693_18690.png +0 -0
  488. data/examples/tmp/tiles/carto_light_15_9693_18691.png +0 -0
  489. data/examples/tmp/tiles/carto_light_15_9693_18692.png +0 -0
  490. data/examples/tmp/tiles/carto_light_15_9693_18693.png +0 -0
  491. data/examples/tmp/tiles/carto_light_15_9693_18694.png +0 -0
  492. data/examples/tmp/tiles/carto_light_15_9693_18695.png +0 -0
  493. data/examples/tmp/tiles/carto_light_15_9693_18696.png +0 -0
  494. data/examples/tmp/tiles/carto_light_15_9693_18697.png +0 -0
  495. data/examples/tmp/tiles/carto_light_15_9693_18698.png +0 -0
  496. data/examples/tmp/tiles/carto_light_15_9693_18699.png +0 -0
  497. data/examples/tmp/tiles/carto_light_15_9693_18700.png +0 -0
  498. data/examples/tmp/tiles/carto_light_15_9693_18701.png +0 -0
  499. data/examples/tmp/tiles/carto_light_15_9693_18702.png +0 -0
  500. data/examples/tmp/tiles/carto_light_15_9693_18703.png +0 -0
  501. data/examples/tmp/tiles/carto_light_15_9693_18704.png +0 -0
  502. data/examples/tmp/tiles/carto_light_15_9693_18705.png +0 -0
  503. data/examples/tmp/tiles/carto_light_15_9693_18706.png +0 -0
  504. data/examples/tmp/tiles/carto_light_15_9693_18707.png +0 -0
  505. data/examples/tmp/tiles/carto_light_15_9693_18708.png +0 -0
  506. data/examples/tmp/tiles/carto_light_15_9693_18709.png +0 -0
  507. data/examples/tmp/tiles/carto_light_15_9693_18710.png +0 -0
  508. data/examples/tmp/tiles/carto_light_15_9693_18711.png +0 -0
  509. data/examples/tmp/tiles/carto_light_15_9693_18712.png +0 -0
  510. data/examples/tmp/tiles/carto_light_15_9693_18713.png +0 -0
  511. data/examples/tmp/tiles/carto_light_15_9693_18714.png +0 -0
  512. data/examples/tmp/tiles/carto_light_15_9693_18715.png +0 -0
  513. data/examples/tmp/tiles/carto_light_15_9693_18716.png +0 -0
  514. data/examples/tmp/tiles/carto_light_15_9693_18717.png +0 -0
  515. data/examples/tmp/tiles/carto_light_15_9693_18718.png +0 -0
  516. data/examples/tmp/tiles/carto_light_15_9693_18719.png +0 -0
  517. data/examples/tmp/tiles/carto_light_15_9693_18720.png +0 -0
  518. data/examples/tmp/tiles/carto_light_15_9693_18721.png +0 -0
  519. data/examples/tmp/tiles/carto_light_15_9693_18722.png +0 -0
  520. data/examples/tmp/tiles/carto_light_15_9693_18723.png +0 -0
  521. data/examples/tmp/tiles/carto_light_15_9693_18724.png +0 -0
  522. data/examples/tmp/tiles/carto_light_15_9693_18725.png +0 -0
  523. data/examples/tmp/tiles/carto_light_15_9693_18726.png +0 -0
  524. data/examples/tmp/tiles/carto_light_15_9693_18727.png +0 -0
  525. data/examples/tmp/tiles/carto_light_15_9693_18728.png +0 -0
  526. data/examples/tmp/tiles/carto_light_15_9693_18729.png +0 -0
  527. data/examples/tmp/tiles/carto_light_15_9693_18730.png +0 -0
  528. data/examples/tmp/tiles/carto_light_15_9693_18731.png +0 -0
  529. data/examples/tmp/tiles/carto_light_15_9693_18732.png +0 -0
  530. data/examples/tmp/tiles/carto_light_15_9693_18733.png +0 -0
  531. data/examples/tmp/tiles/carto_light_15_9693_18734.png +0 -0
  532. data/examples/tmp/tiles/carto_light_15_9693_18735.png +0 -0
  533. data/examples/tmp/tiles/carto_light_15_9693_18736.png +0 -0
  534. data/examples/tmp/tiles/carto_light_15_9693_18737.png +0 -0
  535. data/examples/tmp/tiles/carto_light_15_9693_18738.png +0 -0
  536. data/examples/tmp/tiles/carto_light_15_9693_18739.png +0 -0
  537. data/examples/tmp/tiles/carto_light_15_9693_18740.png +0 -0
  538. data/examples/tmp/tiles/carto_light_15_9693_18741.png +0 -0
  539. data/examples/tmp/tiles/carto_light_15_9693_18742.png +0 -0
  540. data/examples/tmp/tiles/carto_light_15_9693_18743.png +0 -0
  541. data/examples/tmp/tiles/carto_light_15_9693_18744.png +0 -0
  542. data/examples/tmp/tiles/carto_light_15_9693_18745.png +0 -0
  543. data/examples/tmp/tiles/carto_light_15_9693_18746.png +0 -0
  544. data/examples/tmp/tiles/carto_light_15_9693_18747.png +0 -0
  545. data/examples/tmp/tiles/carto_light_15_9693_18748.png +0 -0
  546. data/examples/tmp/tiles/carto_light_15_9693_18749.png +0 -0
  547. data/examples/tmp/tiles/carto_light_15_9693_18750.png +0 -0
  548. data/examples/tmp/tiles/carto_light_15_9693_18751.png +0 -0
  549. data/examples/tmp/tiles/carto_light_15_9693_18752.png +0 -0
  550. data/examples/tmp/tiles/carto_light_15_9693_18753.png +0 -0
  551. data/examples/tmp/tiles/carto_light_15_9693_18754.png +0 -0
  552. data/examples/tmp/tiles/carto_light_15_9693_18755.png +0 -0
  553. data/examples/tmp/tiles/carto_light_15_9693_18756.png +0 -0
  554. data/examples/tmp/tiles/carto_light_15_9693_18757.png +0 -0
  555. data/examples/tmp/tiles/carto_light_15_9693_18758.png +0 -0
  556. data/examples/tmp/tiles/carto_light_15_9693_18759.png +0 -0
  557. data/examples/tmp/tiles/carto_light_15_9693_18760.png +0 -0
  558. data/examples/tmp/tiles/carto_light_15_9693_18761.png +0 -0
  559. data/examples/tmp/tiles/carto_light_15_9693_18762.png +0 -0
  560. data/examples/tmp/tiles/carto_light_15_9693_18763.png +0 -0
  561. data/examples/tmp/tiles/carto_light_15_9693_18764.png +0 -0
  562. data/examples/tmp/tiles/carto_light_15_9693_18765.png +0 -0
  563. data/examples/tmp/tiles/carto_light_15_9693_18766.png +0 -0
  564. data/examples/tmp/tiles/carto_light_15_9693_18767.png +0 -0
  565. data/examples/tmp/tiles/carto_light_15_9693_18768.png +0 -0
  566. data/examples/tmp/tiles/carto_light_15_9693_18769.png +0 -0
  567. data/examples/tmp/tiles/carto_light_15_9693_18770.png +0 -0
  568. data/examples/tmp/tiles/carto_light_15_9693_18771.png +0 -0
  569. data/examples/tmp/tiles/carto_light_15_9693_18772.png +0 -0
  570. data/examples/tmp/tiles/carto_light_15_9693_18773.png +0 -0
  571. data/examples/tmp/tiles/carto_light_15_9693_18774.png +0 -0
  572. data/examples/tmp/tiles/carto_light_15_9693_18775.png +0 -0
  573. data/examples/tmp/tiles/carto_light_15_9693_18776.png +0 -0
  574. data/examples/tmp/tiles/carto_light_15_9693_18777.png +0 -0
  575. data/examples/tmp/tiles/carto_light_15_9693_18778.png +0 -0
  576. data/examples/tmp/tiles/carto_light_15_9693_18779.png +0 -0
  577. data/examples/tmp/tiles/carto_light_15_9693_18780.png +0 -0
  578. data/examples/tmp/tiles/carto_light_15_9693_18781.png +0 -0
  579. data/examples/tmp/tiles/carto_light_15_9693_18782.png +0 -0
  580. data/examples/tmp/tiles/carto_light_15_9693_18783.png +0 -0
  581. data/examples/tmp/tiles/carto_light_15_9693_18784.png +0 -0
  582. data/examples/tmp/tiles/carto_light_15_9693_18785.png +0 -0
  583. data/examples/tmp/tiles/carto_light_15_9693_18786.png +0 -0
  584. data/examples/tmp/tiles/carto_light_15_9693_18787.png +0 -0
  585. data/examples/tmp/tiles/carto_light_15_9693_18788.png +0 -0
  586. data/examples/tmp/tiles/carto_light_15_9693_18789.png +0 -0
  587. data/examples/tmp/tiles/carto_light_15_9693_18790.png +0 -0
  588. data/examples/tmp/tiles/carto_light_15_9693_18791.png +0 -0
  589. data/examples/tmp/tiles/carto_light_15_9693_18792.png +0 -0
  590. data/examples/tmp/tiles/carto_light_15_9693_18793.png +0 -0
  591. data/examples/tmp/tiles/carto_light_15_9693_18794.png +0 -0
  592. data/examples/tmp/tiles/carto_light_15_9693_18795.png +0 -0
  593. data/examples/tmp/tiles/carto_light_15_9693_18796.png +0 -0
  594. data/examples/tmp/tiles/carto_light_15_9693_18797.png +0 -0
  595. data/examples/tmp/tiles/carto_light_15_9693_18798.png +0 -0
  596. data/examples/tmp/tiles/carto_light_15_9693_18799.png +0 -0
  597. data/examples/tmp/tiles/carto_light_15_9693_18800.png +0 -0
  598. data/examples/tmp/tiles/carto_light_15_9693_18801.png +0 -0
  599. data/examples/tmp/tiles/carto_light_15_9693_18802.png +0 -0
  600. data/examples/tmp/tiles/carto_light_15_9693_18803.png +0 -0
  601. data/examples/tmp/tiles/carto_light_15_9693_18804.png +0 -0
  602. data/examples/tmp/tiles/carto_light_15_9693_18805.png +0 -0
  603. data/examples/tmp/tiles/carto_light_15_9693_18806.png +0 -0
  604. data/examples/tmp/tiles/carto_light_15_9693_18807.png +0 -0
  605. data/examples/tmp/tiles/carto_light_15_9693_18808.png +0 -0
  606. data/examples/tmp/tiles/carto_light_15_9693_18809.png +0 -0
  607. data/examples/tmp/tiles/carto_light_15_9693_18810.png +0 -0
  608. data/examples/tmp/tiles/carto_light_15_9693_18811.png +0 -0
  609. data/examples/tmp/tiles/carto_light_15_9693_18812.png +0 -0
  610. data/examples/tmp/tiles/carto_light_15_9693_18813.png +0 -0
  611. data/examples/tmp/tiles/carto_light_15_9693_18814.png +0 -0
  612. data/examples/tmp/tiles/carto_light_15_9693_18815.png +0 -0
  613. data/examples/tmp/tiles/carto_light_15_9693_18816.png +0 -0
  614. data/examples/tmp/tiles/carto_light_15_9693_18817.png +0 -0
  615. data/examples/tmp/tiles/carto_light_15_9693_18818.png +0 -0
  616. data/examples/tmp/tiles/carto_light_15_9693_18819.png +0 -0
  617. data/examples/tmp/tiles/carto_light_15_9693_18820.png +0 -0
  618. data/examples/tmp/tiles/carto_light_15_9693_18821.png +0 -0
  619. data/examples/tmp/tiles/carto_light_15_9693_18822.png +0 -0
  620. data/examples/tmp/tiles/carto_light_15_9693_18823.png +0 -0
  621. data/examples/tmp/tiles/carto_light_15_9693_18824.png +0 -0
  622. data/examples/tmp/tiles/carto_light_15_9693_18825.png +0 -0
  623. data/examples/tmp/tiles/carto_light_15_9693_18826.png +0 -0
  624. data/examples/tmp/tiles/carto_light_15_9693_18827.png +0 -0
  625. data/examples/tmp/tiles/carto_light_15_9693_18828.png +0 -0
  626. data/examples/tmp/tiles/carto_light_15_9693_18829.png +0 -0
  627. data/examples/tmp/tiles/carto_light_15_9693_18830.png +0 -0
  628. data/examples/tmp/tiles/carto_light_15_9693_18831.png +0 -0
  629. data/examples/tmp/tiles/carto_light_15_9693_18832.png +0 -0
  630. data/examples/tmp/tiles/carto_light_15_9693_18833.png +0 -0
  631. data/examples/tmp/tiles/carto_light_15_9693_18834.png +0 -0
  632. data/examples/tmp/tiles/carto_light_15_9693_18835.png +0 -0
  633. data/examples/tmp/tiles/carto_light_15_9693_18836.png +0 -0
  634. data/examples/tmp/tiles/carto_light_15_9693_18837.png +0 -0
  635. data/examples/tmp/tiles/carto_light_15_9693_18838.png +0 -0
  636. data/examples/tmp/tiles/carto_light_15_9693_18839.png +0 -0
  637. data/examples/tmp/tiles/carto_light_15_9693_18840.png +0 -0
  638. data/examples/tmp/tiles/carto_light_15_9693_18841.png +0 -0
  639. data/examples/tmp/tiles/carto_light_15_9693_18842.png +0 -0
  640. data/examples/tmp/tiles/carto_light_15_9693_18843.png +0 -0
  641. data/examples/tmp/tiles/carto_light_15_9693_18844.png +0 -0
  642. data/examples/tmp/tiles/carto_light_15_9693_18845.png +0 -0
  643. data/examples/tmp/tiles/carto_light_15_9693_18846.png +0 -0
  644. data/examples/tmp/tiles/carto_light_15_9693_18847.png +0 -0
  645. data/examples/tmp/tiles/carto_light_15_9693_18848.png +0 -0
  646. data/examples/tmp/tiles/carto_light_15_9693_18849.png +0 -0
  647. data/examples/tmp/tiles/carto_light_15_9693_18850.png +0 -0
  648. data/examples/tmp/tiles/carto_light_15_9693_18851.png +0 -0
  649. data/examples/tmp/tiles/carto_light_15_9693_18852.png +0 -0
  650. data/examples/tmp/tiles/carto_light_15_9693_18853.png +0 -0
  651. data/examples/tmp/tiles/carto_light_15_9693_18854.png +0 -0
  652. data/examples/tmp/tiles/carto_light_15_9693_18855.png +0 -0
  653. data/examples/tmp/tiles/carto_light_15_9693_18856.png +0 -0
  654. data/examples/tmp/tiles/carto_light_15_9693_18857.png +0 -0
  655. data/examples/tmp/tiles/carto_light_15_9693_18858.png +0 -0
  656. data/examples/tmp/tiles/carto_light_15_9693_18859.png +0 -0
  657. data/examples/tmp/tiles/carto_light_15_9693_18860.png +0 -0
  658. data/examples/tmp/tiles/carto_light_15_9693_18861.png +0 -0
  659. data/examples/tmp/tiles/carto_light_15_9693_18862.png +0 -0
  660. data/examples/tmp/tiles/carto_light_15_9693_18863.png +0 -0
  661. data/examples/tmp/tiles/carto_light_15_9693_18864.png +0 -0
  662. data/examples/tmp/tiles/carto_light_15_9693_18865.png +0 -0
  663. data/examples/tmp/tiles/carto_light_15_9693_18866.png +0 -0
  664. data/examples/tmp/tiles/carto_light_15_9693_18867.png +0 -0
  665. data/examples/tmp/tiles/carto_light_15_9693_18868.png +0 -0
  666. data/examples/tmp/tiles/carto_light_15_9693_18869.png +0 -0
  667. data/examples/tmp/tiles/carto_light_15_9693_18870.png +0 -0
  668. data/examples/tmp/tiles/carto_light_15_9693_18871.png +0 -0
  669. data/examples/tmp/tiles/carto_light_15_9693_18872.png +0 -0
  670. data/examples/tmp/tiles/carto_light_15_9693_18873.png +0 -0
  671. data/examples/tmp/tiles/carto_light_15_9693_18874.png +0 -0
  672. data/examples/tmp/tiles/carto_light_15_9693_18875.png +0 -0
  673. data/examples/tmp/tiles/carto_light_15_9693_18876.png +0 -0
  674. data/examples/tmp/tiles/carto_light_15_9693_18877.png +0 -0
  675. data/examples/tmp/tiles/carto_light_15_9693_18878.png +0 -0
  676. data/examples/tmp/tiles/carto_light_15_9693_18879.png +0 -0
  677. data/examples/tmp/tiles/carto_light_15_9693_18880.png +0 -0
  678. data/examples/tmp/tiles/carto_light_15_9693_18881.png +0 -0
  679. data/examples/tmp/tiles/carto_light_15_9693_18882.png +0 -0
  680. data/examples/tmp/tiles/carto_light_15_9693_18883.png +0 -0
  681. data/examples/tmp/tiles/carto_light_15_9693_18884.png +0 -0
  682. data/examples/tmp/tiles/carto_light_15_9693_18885.png +0 -0
  683. data/examples/tmp/tiles/carto_light_15_9693_18886.png +0 -0
  684. data/examples/tmp/tiles/carto_light_15_9693_18887.png +0 -0
  685. data/examples/tmp/tiles/carto_light_15_9693_18888.png +0 -0
  686. data/examples/tmp/tiles/carto_light_15_9693_18889.png +0 -0
  687. data/examples/tmp/tiles/carto_light_15_9693_18890.png +0 -0
  688. data/examples/tmp/tiles/carto_light_15_9693_18891.png +0 -0
  689. data/examples/tmp/tiles/carto_light_15_9693_18892.png +0 -0
  690. data/examples/tmp/tiles/carto_light_15_9693_18893.png +0 -0
  691. data/examples/tmp/tiles/carto_light_15_9693_18894.png +0 -0
  692. data/examples/tmp/tiles/carto_light_15_9693_18895.png +0 -0
  693. data/examples/tmp/tiles/carto_light_15_9693_18896.png +0 -0
  694. data/examples/tmp/tiles/carto_light_15_9693_18897.png +0 -0
  695. data/examples/tmp/tiles/carto_light_15_9693_18898.png +0 -0
  696. data/examples/tmp/tiles/carto_light_15_9693_18899.png +0 -0
  697. data/examples/tmp/tiles/carto_light_15_9693_18900.png +0 -0
  698. data/examples/tmp/tiles/carto_light_15_9693_18901.png +0 -0
  699. data/examples/tmp/tiles/carto_light_15_9693_18902.png +0 -0
  700. data/examples/tmp/tiles/carto_light_15_9693_18903.png +0 -0
  701. data/examples/tmp/tiles/carto_light_15_9693_18904.png +0 -0
  702. data/examples/tmp/tiles/carto_light_15_9693_18905.png +0 -0
  703. data/examples/tmp/tiles/carto_light_15_9693_18906.png +0 -0
  704. data/examples/tmp/tiles/carto_light_15_9693_18907.png +0 -0
  705. data/examples/tmp/tiles/carto_light_15_9693_18908.png +0 -0
  706. data/examples/tmp/tiles/carto_light_15_9693_18909.png +0 -0
  707. data/examples/tmp/tiles/carto_light_15_9693_18910.png +0 -0
  708. data/examples/tmp/tiles/carto_light_15_9693_18911.png +0 -0
  709. data/examples/tmp/tiles/carto_light_15_9693_18912.png +0 -0
  710. data/examples/tmp/tiles/carto_light_15_9693_18913.png +0 -0
  711. data/examples/tmp/tiles/carto_light_15_9693_18914.png +0 -0
  712. data/examples/tmp/tiles/carto_light_15_9693_18915.png +0 -0
  713. data/examples/tmp/tiles/carto_light_15_9693_18916.png +0 -0
  714. data/examples/tmp/tiles/carto_light_15_9693_18917.png +0 -0
  715. data/examples/tmp/tiles/carto_light_15_9693_18918.png +0 -0
  716. data/examples/tmp/tiles/carto_light_15_9693_18919.png +0 -0
  717. data/examples/tmp/tiles/carto_light_15_9693_18920.png +0 -0
  718. data/examples/tmp/tiles/carto_light_15_9693_18921.png +0 -0
  719. data/examples/tmp/tiles/carto_light_15_9693_18922.png +0 -0
  720. data/examples/tmp/tiles/carto_light_15_9693_18923.png +0 -0
  721. data/examples/tmp/tiles/carto_light_15_9693_18924.png +0 -0
  722. data/examples/tmp/tiles/carto_light_15_9693_18925.png +0 -0
  723. data/examples/tmp/tiles/carto_light_15_9693_18926.png +0 -0
  724. data/examples/tmp/tiles/carto_light_15_9693_18927.png +0 -0
  725. data/examples/tmp/tiles/carto_light_15_9693_18928.png +0 -0
  726. data/examples/tmp/tiles/carto_light_15_9693_18929.png +0 -0
  727. data/examples/tmp/tiles/carto_light_15_9693_18930.png +0 -0
  728. data/examples/tmp/tiles/carto_light_15_9693_18931.png +0 -0
  729. data/examples/tmp/tiles/carto_light_15_9693_18932.png +0 -0
  730. data/examples/tmp/tiles/carto_light_15_9693_18933.png +0 -0
  731. data/examples/tmp/tiles/carto_light_15_9693_18934.png +0 -0
  732. data/examples/tmp/tiles/carto_light_15_9693_18935.png +0 -0
  733. data/examples/tmp/tiles/carto_light_15_9693_18936.png +0 -0
  734. data/examples/tmp/tiles/carto_light_15_9693_18937.png +0 -0
  735. data/examples/tmp/tiles/carto_light_15_9693_18938.png +0 -0
  736. data/examples/tmp/tiles/carto_light_15_9693_18939.png +0 -0
  737. data/examples/tmp/tiles/carto_light_15_9693_18940.png +0 -0
  738. data/examples/tmp/tiles/carto_light_15_9693_18941.png +0 -0
  739. data/examples/tmp/tiles/carto_light_15_9693_18942.png +0 -0
  740. data/examples/tmp/tiles/carto_light_15_9693_18943.png +0 -0
  741. data/examples/tmp/tiles/carto_light_15_9693_18944.png +0 -0
  742. data/examples/tmp/tiles/carto_light_15_9693_18945.png +0 -0
  743. data/examples/tmp/tiles/carto_light_15_9693_18946.png +0 -0
  744. data/examples/tmp/tiles/carto_light_15_9693_18947.png +0 -0
  745. data/examples/tmp/tiles/carto_light_15_9693_18948.png +0 -0
  746. data/examples/tmp/tiles/carto_light_15_9693_18949.png +0 -0
  747. data/examples/tmp/tiles/carto_light_15_9693_18950.png +0 -0
  748. data/examples/tmp/tiles/carto_light_15_9693_18951.png +0 -0
  749. data/examples/tmp/tiles/carto_light_15_9693_18952.png +0 -0
  750. data/examples/tmp/tiles/carto_light_15_9693_18953.png +0 -0
  751. data/examples/tmp/tiles/carto_light_15_9693_18954.png +0 -0
  752. data/examples/tmp/tiles/carto_light_15_9693_18955.png +0 -0
  753. data/examples/tmp/tiles/carto_light_15_9693_18956.png +0 -0
  754. data/examples/tmp/tiles/carto_light_15_9693_18957.png +0 -0
  755. data/examples/tmp/tiles/carto_light_15_9693_18958.png +0 -0
  756. data/examples/tmp/tiles/carto_light_15_9693_18959.png +0 -0
  757. data/examples/tmp/tiles/carto_light_15_9693_18960.png +0 -0
  758. data/examples/tmp/tiles/carto_light_15_9693_18961.png +0 -0
  759. data/examples/tmp/tiles/carto_light_15_9693_18962.png +0 -0
  760. data/examples/tmp/tiles/carto_light_15_9693_18963.png +0 -0
  761. data/examples/tmp/tiles/carto_light_15_9693_18964.png +0 -0
  762. data/examples/tmp/tiles/carto_light_15_9693_18965.png +0 -0
  763. data/examples/tmp/tiles/carto_light_15_9693_18966.png +0 -0
  764. data/examples/tmp/tiles/carto_light_15_9693_18967.png +0 -0
  765. data/examples/tmp/tiles/carto_light_15_9693_18968.png +0 -0
  766. data/examples/tmp/tiles/carto_light_15_9693_18969.png +0 -0
  767. data/examples/tmp/tiles/carto_light_15_9693_18970.png +0 -0
  768. data/examples/tmp/tiles/carto_light_15_9693_18971.png +0 -0
  769. data/examples/tmp/tiles/carto_light_15_9693_18972.png +0 -0
  770. data/examples/tmp/tiles/carto_light_15_9693_18973.png +0 -0
  771. data/examples/tmp/tiles/carto_light_15_9693_18974.png +0 -0
  772. data/examples/tmp/tiles/carto_light_15_9693_18975.png +0 -0
  773. data/examples/tmp/tiles/carto_light_15_9693_18976.png +0 -0
  774. data/examples/tmp/tiles/carto_light_15_9693_18977.png +0 -0
  775. data/examples/tmp/tiles/carto_light_15_9693_18978.png +0 -0
  776. data/examples/tmp/tiles/carto_light_15_9693_18979.png +0 -0
  777. data/examples/tmp/tiles/carto_light_15_9693_18980.png +0 -0
  778. data/examples/tmp/tiles/carto_light_15_9693_18981.png +0 -0
  779. data/examples/tmp/tiles/carto_light_15_9693_18982.png +0 -0
  780. data/examples/tmp/tiles/carto_light_15_9693_18983.png +0 -0
  781. data/examples/tmp/tiles/carto_light_15_9693_18984.png +0 -0
  782. data/examples/tmp/tiles/carto_light_15_9693_18985.png +0 -0
  783. data/examples/tmp/tiles/carto_light_15_9693_18986.png +0 -0
  784. data/examples/tmp/tiles/carto_light_15_9693_18987.png +0 -0
  785. data/examples/tmp/tiles/carto_light_15_9693_18988.png +0 -0
  786. data/examples/tmp/tiles/carto_light_15_9693_18989.png +0 -0
  787. data/examples/tmp/tiles/carto_light_15_9693_18990.png +0 -0
  788. data/examples/tmp/tiles/carto_light_15_9693_18991.png +0 -0
  789. data/examples/tmp/tiles/carto_light_15_9693_18992.png +0 -0
  790. data/examples/tmp/tiles/carto_light_15_9693_18993.png +0 -0
  791. data/examples/tmp/tiles/carto_light_15_9693_18994.png +0 -0
  792. data/examples/tmp/tiles/carto_light_15_9693_18995.png +0 -0
  793. data/examples/tmp/tiles/carto_light_15_9693_18996.png +0 -0
  794. data/examples/tmp/tiles/carto_light_15_9693_18997.png +0 -0
  795. data/examples/tmp/tiles/carto_light_15_9693_18998.png +0 -0
  796. data/examples/tmp/tiles/carto_light_15_9693_18999.png +0 -0
  797. data/examples/tmp/tiles/carto_light_15_9693_19000.png +0 -0
  798. data/examples/tmp/tiles/carto_light_15_9693_19001.png +0 -0
  799. data/examples/tmp/tiles/carto_light_15_9693_19002.png +0 -0
  800. data/examples/tmp/tiles/carto_light_15_9693_19003.png +0 -0
  801. data/examples/tmp/tiles/carto_light_15_9693_19004.png +0 -0
  802. data/examples/tmp/tiles/carto_light_15_9693_19005.png +0 -0
  803. data/examples/tmp/tiles/carto_light_15_9693_19006.png +0 -0
  804. data/examples/tmp/tiles/carto_light_15_9693_19007.png +0 -0
  805. data/examples/tmp/tiles/carto_light_15_9693_19008.png +0 -0
  806. data/examples/tmp/tiles/carto_light_15_9693_19009.png +0 -0
  807. data/examples/tmp/tiles/carto_light_15_9693_19010.png +0 -0
  808. data/examples/tmp/tiles/carto_light_15_9693_19011.png +0 -0
  809. data/examples/tmp/tiles/carto_light_15_9693_19012.png +0 -0
  810. data/examples/tmp/tiles/carto_light_15_9693_19013.png +0 -0
  811. data/examples/tmp/tiles/carto_light_15_9693_19014.png +0 -0
  812. data/examples/tmp/tiles/carto_light_15_9693_19015.png +0 -0
  813. data/examples/tmp/tiles/carto_light_15_9693_19016.png +0 -0
  814. data/examples/tmp/tiles/carto_light_15_9693_19017.png +0 -0
  815. data/examples/tmp/tiles/carto_light_15_9693_19018.png +0 -0
  816. data/examples/tmp/tiles/carto_light_15_9693_19019.png +0 -0
  817. data/examples/tmp/tiles/carto_light_15_9693_19020.png +0 -0
  818. data/examples/tmp/tiles/carto_light_15_9693_19021.png +0 -0
  819. data/examples/tmp/tiles/carto_light_15_9693_19022.png +0 -0
  820. data/examples/tmp/tiles/carto_light_15_9693_19023.png +0 -0
  821. data/examples/tmp/tiles/carto_light_15_9693_19024.png +0 -0
  822. data/examples/tmp/tiles/carto_light_15_9693_19025.png +0 -0
  823. data/examples/tmp/tiles/carto_light_15_9693_19026.png +0 -0
  824. data/examples/tmp/tiles/carto_light_15_9693_19027.png +0 -0
  825. data/examples/tmp/tiles/carto_light_15_9693_19028.png +0 -0
  826. data/examples/tmp/tiles/carto_light_15_9693_19029.png +0 -0
  827. data/examples/tmp/tiles/carto_light_15_9693_19030.png +0 -0
  828. data/examples/tmp/tiles/carto_light_15_9693_19031.png +0 -0
  829. data/examples/tmp/tiles/carto_light_15_9693_19032.png +0 -0
  830. data/examples/tmp/tiles/carto_light_15_9693_19033.png +0 -0
  831. data/examples/tmp/tiles/carto_light_15_9693_19034.png +0 -0
  832. data/examples/tmp/tiles/carto_light_15_9693_19035.png +0 -0
  833. data/examples/tmp/tiles/carto_light_15_9693_19036.png +0 -0
  834. data/examples/tmp/tiles/carto_light_15_9693_19037.png +0 -0
  835. data/examples/tmp/tiles/carto_light_15_9693_19038.png +0 -0
  836. data/examples/tmp/tiles/carto_light_15_9693_19039.png +0 -0
  837. data/examples/tmp/tiles/carto_light_15_9693_19040.png +0 -0
  838. data/examples/tmp/tiles/carto_light_15_9693_19041.png +0 -0
  839. data/examples/tmp/tiles/carto_light_15_9693_19042.png +0 -0
  840. data/examples/tmp/tiles/carto_light_15_9693_19043.png +0 -0
  841. data/examples/tmp/tiles/carto_light_15_9693_19044.png +0 -0
  842. data/examples/tmp/tiles/carto_light_15_9693_19045.png +0 -0
  843. data/examples/tmp/tiles/carto_light_15_9693_19046.png +0 -0
  844. data/examples/tmp/tiles/carto_light_5_10_17.png +0 -0
  845. data/examples/tmp/tiles/carto_light_5_10_18.png +0 -0
  846. data/examples/tmp/tiles/carto_light_5_10_19.png +0 -0
  847. data/examples/tmp/tiles/carto_light_5_10_20.png +0 -0
  848. data/examples/tmp/tiles/carto_light_5_10_21.png +0 -0
  849. data/examples/tmp/tiles/carto_light_5_11_17.png +0 -0
  850. data/examples/tmp/tiles/carto_light_5_11_18.png +0 -0
  851. data/examples/tmp/tiles/carto_light_5_11_19.png +0 -0
  852. data/examples/tmp/tiles/carto_light_5_11_20.png +0 -0
  853. data/examples/tmp/tiles/carto_light_5_11_21.png +0 -0
  854. data/examples/tmp/tiles/carto_light_5_9_17.png +0 -0
  855. data/examples/tmp/tiles/carto_light_5_9_18.png +0 -0
  856. data/examples/tmp/tiles/carto_light_5_9_19.png +0 -0
  857. data/examples/tmp/tiles/carto_light_5_9_20.png +0 -0
  858. data/examples/tmp/tiles/carto_light_5_9_21.png +0 -0
  859. data/examples/verbose.txt +11 -0
  860. data/lib/gd/gis/basemap.rb +116 -9
  861. data/lib/gd/gis/geometry.rb +40 -0
  862. data/lib/gd/gis/layer_geojson.rb +75 -0
  863. data/lib/gd/gis/layer_lines.rb +36 -0
  864. data/lib/gd/gis/layer_points.rb +31 -1
  865. data/lib/gd/gis/layer_polygons.rb +38 -0
  866. data/lib/gd/gis/map.rb +58 -78
  867. data/lib/gd/gis/projection.rb +14 -0
  868. metadata +932 -278
  869. data/examples/a-world_peaks.rb +0 -42
  870. data/examples/argentina.png +0 -0
  871. data/examples/argentina_con_localidades.rb +0 -89
  872. data/examples/argentina_museos.rb +0 -70
  873. data/examples/hydro.png +0 -0
  874. data/examples/hydro_plants.geojson +0 -25
  875. data/examples/montanas.rb +0 -118
  876. data/examples/output/argentina_museos.png +0 -0
  877. data/examples/output/tanzania_hydro.png +0 -0
  878. data/examples/output/world_peaks-s.png +0 -0
  879. data/examples/output/world_peaks.png +0 -0
  880. data/examples/peak.png +0 -0
  881. data/examples/picks.json +0 -50
  882. data/examples/render_tile.rb +0 -31
  883. data/examples/tmp/tiles/4_0_13.png +0 -0
  884. data/examples/tmp/tiles/4_0_14.png +0 -0
  885. data/examples/tmp/tiles/4_0_15.png +0 -0
  886. data/examples/tmp/tiles/4_0_3.png +0 -0
  887. data/examples/tmp/tiles/4_0_4.png +0 -0
  888. data/examples/tmp/tiles/4_0_5.png +0 -0
  889. data/examples/tmp/tiles/4_0_8.png +0 -0
  890. data/examples/tmp/tiles/4_10_1.png +0 -0
  891. data/examples/tmp/tiles/4_10_11.png +0 -0
  892. data/examples/tmp/tiles/4_10_12.png +0 -0
  893. data/examples/tmp/tiles/4_10_13.png +0 -0
  894. data/examples/tmp/tiles/4_10_14.png +0 -0
  895. data/examples/tmp/tiles/4_10_15.png +0 -0
  896. data/examples/tmp/tiles/4_10_2.png +0 -0
  897. data/examples/tmp/tiles/4_10_3.png +0 -0
  898. data/examples/tmp/tiles/4_10_4.png +0 -0
  899. data/examples/tmp/tiles/4_10_5.png +0 -0
  900. data/examples/tmp/tiles/4_10_6.png +0 -0
  901. data/examples/tmp/tiles/4_10_7.png +0 -0
  902. data/examples/tmp/tiles/4_10_8.png +0 -0
  903. data/examples/tmp/tiles/4_10_9.png +0 -0
  904. data/examples/tmp/tiles/4_11_1.png +0 -0
  905. data/examples/tmp/tiles/4_11_10.png +0 -0
  906. data/examples/tmp/tiles/4_11_12.png +0 -0
  907. data/examples/tmp/tiles/4_11_13.png +0 -0
  908. data/examples/tmp/tiles/4_11_14.png +0 -0
  909. data/examples/tmp/tiles/4_11_15.png +0 -0
  910. data/examples/tmp/tiles/4_11_2.png +0 -0
  911. data/examples/tmp/tiles/4_11_3.png +0 -0
  912. data/examples/tmp/tiles/4_11_4.png +0 -0
  913. data/examples/tmp/tiles/4_11_5.png +0 -0
  914. data/examples/tmp/tiles/4_11_6.png +0 -0
  915. data/examples/tmp/tiles/4_11_7.png +0 -0
  916. data/examples/tmp/tiles/4_12_1.png +0 -0
  917. data/examples/tmp/tiles/4_12_11.png +0 -0
  918. data/examples/tmp/tiles/4_12_12.png +0 -0
  919. data/examples/tmp/tiles/4_12_13.png +0 -0
  920. data/examples/tmp/tiles/4_12_14.png +0 -0
  921. data/examples/tmp/tiles/4_12_15.png +0 -0
  922. data/examples/tmp/tiles/4_12_2.png +0 -0
  923. data/examples/tmp/tiles/4_12_3.png +0 -0
  924. data/examples/tmp/tiles/4_12_4.png +0 -0
  925. data/examples/tmp/tiles/4_12_5.png +0 -0
  926. data/examples/tmp/tiles/4_12_6.png +0 -0
  927. data/examples/tmp/tiles/4_12_7.png +0 -0
  928. data/examples/tmp/tiles/4_12_8.png +0 -0
  929. data/examples/tmp/tiles/4_13_11.png +0 -0
  930. data/examples/tmp/tiles/4_13_12.png +0 -0
  931. data/examples/tmp/tiles/4_13_13.png +0 -0
  932. data/examples/tmp/tiles/4_13_14.png +0 -0
  933. data/examples/tmp/tiles/4_13_15.png +0 -0
  934. data/examples/tmp/tiles/4_13_2.png +0 -0
  935. data/examples/tmp/tiles/4_13_3.png +0 -0
  936. data/examples/tmp/tiles/4_13_4.png +0 -0
  937. data/examples/tmp/tiles/4_13_5.png +0 -0
  938. data/examples/tmp/tiles/4_13_6.png +0 -0
  939. data/examples/tmp/tiles/4_13_7.png +0 -0
  940. data/examples/tmp/tiles/4_13_8.png +0 -0
  941. data/examples/tmp/tiles/4_13_9.png +0 -0
  942. data/examples/tmp/tiles/4_14_10.png +0 -0
  943. data/examples/tmp/tiles/4_14_11.png +0 -0
  944. data/examples/tmp/tiles/4_14_12.png +0 -0
  945. data/examples/tmp/tiles/4_14_13.png +0 -0
  946. data/examples/tmp/tiles/4_14_14.png +0 -0
  947. data/examples/tmp/tiles/4_14_15.png +0 -0
  948. data/examples/tmp/tiles/4_14_2.png +0 -0
  949. data/examples/tmp/tiles/4_14_3.png +0 -0
  950. data/examples/tmp/tiles/4_14_4.png +0 -0
  951. data/examples/tmp/tiles/4_14_5.png +0 -0
  952. data/examples/tmp/tiles/4_14_6.png +0 -0
  953. data/examples/tmp/tiles/4_14_8.png +0 -0
  954. data/examples/tmp/tiles/4_14_9.png +0 -0
  955. data/examples/tmp/tiles/4_15_10.png +0 -0
  956. data/examples/tmp/tiles/4_15_12.png +0 -0
  957. data/examples/tmp/tiles/4_15_13.png +0 -0
  958. data/examples/tmp/tiles/4_15_14.png +0 -0
  959. data/examples/tmp/tiles/4_15_15.png +0 -0
  960. data/examples/tmp/tiles/4_15_3.png +0 -0
  961. data/examples/tmp/tiles/4_15_4.png +0 -0
  962. data/examples/tmp/tiles/4_15_5.png +0 -0
  963. data/examples/tmp/tiles/4_15_8.png +0 -0
  964. data/examples/tmp/tiles/4_15_9.png +0 -0
  965. data/examples/tmp/tiles/4_1_13.png +0 -0
  966. data/examples/tmp/tiles/4_1_14.png +0 -0
  967. data/examples/tmp/tiles/4_1_15.png +0 -0
  968. data/examples/tmp/tiles/4_1_3.png +0 -0
  969. data/examples/tmp/tiles/4_1_4.png +0 -0
  970. data/examples/tmp/tiles/4_1_7.png +0 -0
  971. data/examples/tmp/tiles/4_2_12.png +0 -0
  972. data/examples/tmp/tiles/4_2_13.png +0 -0
  973. data/examples/tmp/tiles/4_2_14.png +0 -0
  974. data/examples/tmp/tiles/4_2_15.png +0 -0
  975. data/examples/tmp/tiles/4_2_2.png +0 -0
  976. data/examples/tmp/tiles/4_2_3.png +0 -0
  977. data/examples/tmp/tiles/4_2_4.png +0 -0
  978. data/examples/tmp/tiles/4_2_5.png +0 -0
  979. data/examples/tmp/tiles/4_2_6.png +0 -0
  980. data/examples/tmp/tiles/4_3_1.png +0 -0
  981. data/examples/tmp/tiles/4_3_12.png +0 -0
  982. data/examples/tmp/tiles/4_3_13.png +0 -0
  983. data/examples/tmp/tiles/4_3_14.png +0 -0
  984. data/examples/tmp/tiles/4_3_15.png +0 -0
  985. data/examples/tmp/tiles/4_3_2.png +0 -0
  986. data/examples/tmp/tiles/4_3_3.png +0 -0
  987. data/examples/tmp/tiles/4_3_4.png +0 -0
  988. data/examples/tmp/tiles/4_3_5.png +0 -0
  989. data/examples/tmp/tiles/4_3_6.png +0 -0
  990. data/examples/tmp/tiles/4_3_7.png +0 -0
  991. data/examples/tmp/tiles/4_3_8.png +0 -0
  992. data/examples/tmp/tiles/4_4_0.png +0 -0
  993. data/examples/tmp/tiles/4_4_1.png +0 -0
  994. data/examples/tmp/tiles/4_4_10.png +0 -0
  995. data/examples/tmp/tiles/4_4_12.png +0 -0
  996. data/examples/tmp/tiles/4_4_13.png +0 -0
  997. data/examples/tmp/tiles/4_4_14.png +0 -0
  998. data/examples/tmp/tiles/4_4_15.png +0 -0
  999. data/examples/tmp/tiles/4_4_2.png +0 -0
  1000. data/examples/tmp/tiles/4_4_3.png +0 -0
  1001. data/examples/tmp/tiles/4_4_4.png +0 -0
  1002. data/examples/tmp/tiles/4_4_5.png +0 -0
  1003. data/examples/tmp/tiles/4_4_6.png +0 -0
  1004. data/examples/tmp/tiles/4_4_7.png +0 -0
  1005. data/examples/tmp/tiles/4_4_8.png +0 -0
  1006. data/examples/tmp/tiles/4_4_9.png +0 -0
  1007. data/examples/tmp/tiles/4_5_0.png +0 -0
  1008. data/examples/tmp/tiles/4_5_1.png +0 -0
  1009. data/examples/tmp/tiles/4_5_10.png +0 -0
  1010. data/examples/tmp/tiles/4_5_11.png +0 -0
  1011. data/examples/tmp/tiles/4_5_12.png +0 -0
  1012. data/examples/tmp/tiles/4_5_13.png +0 -0
  1013. data/examples/tmp/tiles/4_5_14.png +0 -0
  1014. data/examples/tmp/tiles/4_5_15.png +0 -0
  1015. data/examples/tmp/tiles/4_5_2.png +0 -0
  1016. data/examples/tmp/tiles/4_5_3.png +0 -0
  1017. data/examples/tmp/tiles/4_5_4.png +0 -0
  1018. data/examples/tmp/tiles/4_5_5.png +0 -0
  1019. data/examples/tmp/tiles/4_5_7.png +0 -0
  1020. data/examples/tmp/tiles/4_5_8.png +0 -0
  1021. data/examples/tmp/tiles/4_5_9.png +0 -0
  1022. data/examples/tmp/tiles/4_6_0.png +0 -0
  1023. data/examples/tmp/tiles/4_6_1.png +0 -0
  1024. data/examples/tmp/tiles/4_6_10.png +0 -0
  1025. data/examples/tmp/tiles/4_6_13.png +0 -0
  1026. data/examples/tmp/tiles/4_6_14.png +0 -0
  1027. data/examples/tmp/tiles/4_6_15.png +0 -0
  1028. data/examples/tmp/tiles/4_6_2.png +0 -0
  1029. data/examples/tmp/tiles/4_6_3.png +0 -0
  1030. data/examples/tmp/tiles/4_6_4.png +0 -0
  1031. data/examples/tmp/tiles/4_6_6.png +0 -0
  1032. data/examples/tmp/tiles/4_6_7.png +0 -0
  1033. data/examples/tmp/tiles/4_6_8.png +0 -0
  1034. data/examples/tmp/tiles/4_6_9.png +0 -0
  1035. data/examples/tmp/tiles/4_7_0.png +0 -0
  1036. data/examples/tmp/tiles/4_7_1.png +0 -0
  1037. data/examples/tmp/tiles/4_7_12.png +0 -0
  1038. data/examples/tmp/tiles/4_7_13.png +0 -0
  1039. data/examples/tmp/tiles/4_7_14.png +0 -0
  1040. data/examples/tmp/tiles/4_7_15.png +0 -0
  1041. data/examples/tmp/tiles/4_7_2.png +0 -0
  1042. data/examples/tmp/tiles/4_7_3.png +0 -0
  1043. data/examples/tmp/tiles/4_7_4.png +0 -0
  1044. data/examples/tmp/tiles/4_7_5.png +0 -0
  1045. data/examples/tmp/tiles/4_7_6.png +0 -0
  1046. data/examples/tmp/tiles/4_7_7.png +0 -0
  1047. data/examples/tmp/tiles/4_8_1.png +0 -0
  1048. data/examples/tmp/tiles/4_8_12.png +0 -0
  1049. data/examples/tmp/tiles/4_8_13.png +0 -0
  1050. data/examples/tmp/tiles/4_8_14.png +0 -0
  1051. data/examples/tmp/tiles/4_8_15.png +0 -0
  1052. data/examples/tmp/tiles/4_8_2.png +0 -0
  1053. data/examples/tmp/tiles/4_8_3.png +0 -0
  1054. data/examples/tmp/tiles/4_8_4.png +0 -0
  1055. data/examples/tmp/tiles/4_8_5.png +0 -0
  1056. data/examples/tmp/tiles/4_8_6.png +0 -0
  1057. data/examples/tmp/tiles/4_8_7.png +0 -0
  1058. data/examples/tmp/tiles/4_8_8.png +0 -0
  1059. data/examples/tmp/tiles/4_8_9.png +0 -0
  1060. data/examples/tmp/tiles/4_9_1.png +0 -0
  1061. data/examples/tmp/tiles/4_9_12.png +0 -0
  1062. data/examples/tmp/tiles/4_9_13.png +0 -0
  1063. data/examples/tmp/tiles/4_9_14.png +0 -0
  1064. data/examples/tmp/tiles/4_9_15.png +0 -0
  1065. data/examples/tmp/tiles/4_9_2.png +0 -0
  1066. data/examples/tmp/tiles/4_9_3.png +0 -0
  1067. data/examples/tmp/tiles/4_9_4.png +0 -0
  1068. data/examples/tmp/tiles/4_9_5.png +0 -0
  1069. data/examples/tmp/tiles/4_9_6.png +0 -0
  1070. data/examples/tmp/tiles/4_9_7.png +0 -0
  1071. data/examples/tmp/tiles/4_9_8.png +0 -0
  1072. data/examples/tmp/tiles/4_9_9.png +0 -0
  1073. /data/examples/{museos.png → museum.png} +0 -0
  1074. /data/examples/{museos_datosabiertos.csv → museums.csv} +0 -0
  1075. /data/examples/tmp/tiles/{4_0_0.png → 7_37_71.png} +0 -0
  1076. /data/examples/tmp/tiles/{4_0_1.png → 7_37_72.png} +0 -0
  1077. /data/examples/tmp/tiles/{4_0_10.png → 7_37_73.png} +0 -0
  1078. /data/examples/tmp/tiles/{4_0_11.png → 7_37_74.png} +0 -0
  1079. /data/examples/tmp/tiles/{4_0_12.png → 7_37_75.png} +0 -0
  1080. /data/examples/tmp/tiles/{4_0_2.png → 7_37_76.png} +0 -0
  1081. /data/examples/tmp/tiles/{4_0_6.png → 7_37_77.png} +0 -0
  1082. /data/examples/tmp/tiles/{4_0_7.png → 7_37_87.png} +0 -0
  1083. /data/examples/tmp/tiles/{4_0_9.png → 7_40_84.png} +0 -0
  1084. /data/examples/tmp/tiles/{4_10_0.png → 7_40_85.png} +0 -0
  1085. /data/examples/tmp/tiles/{4_10_10.png → 7_41_82.png} +0 -0
  1086. /data/examples/tmp/tiles/{4_11_0.png → 7_41_83.png} +0 -0
  1087. /data/examples/tmp/tiles/{4_11_11.png → 7_41_84.png} +0 -0
  1088. /data/examples/tmp/tiles/{4_11_8.png → 7_41_85.png} +0 -0
  1089. /data/examples/tmp/tiles/{4_11_9.png → 7_41_86.png} +0 -0
  1090. /data/examples/tmp/tiles/{4_12_0.png → 7_42_80.png} +0 -0
  1091. /data/examples/tmp/tiles/{4_12_10.png → 7_42_81.png} +0 -0
  1092. /data/examples/tmp/tiles/{4_12_9.png → 7_42_82.png} +0 -0
  1093. /data/examples/tmp/tiles/{4_13_0.png → 7_42_83.png} +0 -0
  1094. /data/examples/tmp/tiles/{4_13_1.png → 7_42_84.png} +0 -0
  1095. /data/examples/tmp/tiles/{4_13_10.png → 7_42_86.png} +0 -0
  1096. /data/examples/tmp/tiles/{4_14_0.png → 7_42_87.png} +0 -0
  1097. /data/examples/tmp/tiles/{4_14_1.png → 7_43_79.png} +0 -0
  1098. /data/examples/tmp/tiles/{4_14_7.png → 7_43_80.png} +0 -0
  1099. /data/examples/tmp/tiles/{4_15_0.png → 7_43_81.png} +0 -0
  1100. /data/examples/tmp/tiles/{4_15_1.png → 7_43_82.png} +0 -0
  1101. /data/examples/tmp/tiles/{4_15_11.png → 7_43_83.png} +0 -0
  1102. /data/examples/tmp/tiles/{4_15_2.png → 7_43_84.png} +0 -0
  1103. /data/examples/tmp/tiles/{4_15_6.png → 7_43_86.png} +0 -0
  1104. /data/examples/tmp/tiles/{4_15_7.png → 7_43_87.png} +0 -0
  1105. /data/examples/tmp/tiles/{4_1_0.png → 7_44_78.png} +0 -0
  1106. /data/examples/tmp/tiles/{4_1_1.png → 7_44_79.png} +0 -0
  1107. /data/examples/tmp/tiles/{4_1_10.png → 7_44_80.png} +0 -0
  1108. /data/examples/tmp/tiles/{4_1_11.png → 7_44_81.png} +0 -0
  1109. /data/examples/tmp/tiles/{4_1_12.png → 7_44_82.png} +0 -0
  1110. /data/examples/tmp/tiles/{4_1_2.png → 7_44_83.png} +0 -0
  1111. /data/examples/tmp/tiles/{4_1_5.png → 7_44_84.png} +0 -0
  1112. /data/examples/tmp/tiles/{4_1_6.png → 7_44_85.png} +0 -0
  1113. /data/examples/tmp/tiles/{4_1_8.png → 7_44_86.png} +0 -0
  1114. /data/examples/tmp/tiles/{4_1_9.png → 7_44_87.png} +0 -0
  1115. /data/examples/tmp/tiles/{4_2_0.png → carto_light_15_9693_18339.png} +0 -0
  1116. /data/examples/tmp/tiles/{4_2_1.png → carto_light_15_9693_18340.png} +0 -0
  1117. /data/examples/tmp/tiles/{4_2_10.png → carto_light_15_9693_18341.png} +0 -0
  1118. /data/examples/tmp/tiles/{4_2_11.png → carto_light_15_9693_18342.png} +0 -0
  1119. /data/examples/tmp/tiles/{4_2_7.png → carto_light_15_9693_18343.png} +0 -0
  1120. /data/examples/tmp/tiles/{4_2_8.png → carto_light_15_9693_18344.png} +0 -0
  1121. /data/examples/tmp/tiles/{4_2_9.png → carto_light_15_9693_18345.png} +0 -0
  1122. /data/examples/tmp/tiles/{4_3_0.png → carto_light_15_9693_18346.png} +0 -0
  1123. /data/examples/tmp/tiles/{4_3_10.png → carto_light_15_9693_18347.png} +0 -0
  1124. /data/examples/tmp/tiles/{4_3_11.png → carto_light_15_9693_18348.png} +0 -0
  1125. /data/examples/tmp/tiles/{4_3_9.png → carto_light_15_9693_18349.png} +0 -0
  1126. /data/examples/tmp/tiles/{4_4_11.png → carto_light_15_9693_18350.png} +0 -0
  1127. /data/examples/tmp/tiles/{4_5_6.png → carto_light_15_9693_18351.png} +0 -0
  1128. /data/examples/tmp/tiles/{4_6_11.png → carto_light_15_9693_18352.png} +0 -0
  1129. /data/examples/tmp/tiles/{4_6_12.png → carto_light_15_9693_18353.png} +0 -0
  1130. /data/examples/tmp/tiles/{4_6_5.png → carto_light_15_9693_18354.png} +0 -0
  1131. /data/examples/tmp/tiles/{4_7_10.png → carto_light_15_9693_18355.png} +0 -0
  1132. /data/examples/tmp/tiles/{4_7_11.png → carto_light_15_9693_18356.png} +0 -0
  1133. /data/examples/tmp/tiles/{4_7_8.png → carto_light_15_9693_18357.png} +0 -0
  1134. /data/examples/tmp/tiles/{4_7_9.png → carto_light_15_9693_18358.png} +0 -0
  1135. /data/examples/tmp/tiles/{4_8_0.png → carto_light_15_9693_18359.png} +0 -0
  1136. /data/examples/tmp/tiles/{4_8_10.png → carto_light_15_9693_18360.png} +0 -0
  1137. /data/examples/tmp/tiles/{4_8_11.png → carto_light_15_9693_18361.png} +0 -0
  1138. /data/examples/tmp/tiles/{4_9_0.png → carto_light_15_9693_18362.png} +0 -0
  1139. /data/examples/tmp/tiles/{4_9_10.png → carto_light_15_9693_18363.png} +0 -0
  1140. /data/examples/tmp/tiles/{4_9_11.png → carto_light_15_9693_18364.png} +0 -0
@@ -5,6 +5,7 @@ module GD
5
5
  module GIS
6
6
  class Basemap
7
7
  TILE_SIZE = 256
8
+ attr_reader :origin_x, :origin_y
8
9
 
9
10
  def initialize(zoom, bbox, provider=:carto_light)
10
11
  @zoom = zoom
@@ -12,8 +13,93 @@ module GD
12
13
  @provider = provider
13
14
  end
14
15
 
15
- def url(z,x,y)
16
- "https://tile.openstreetmap.org/#{z}/#{x}/#{y}.png"
16
+ def url(z, x, y, style = :osm)
17
+ case style
18
+
19
+ # ==============================
20
+ # OpenStreetMap
21
+ # ==============================
22
+ when :osm
23
+ "https://tile.openstreetmap.org/#{z}/#{x}/#{y}.png"
24
+
25
+ when :osm_hot
26
+ "https://tile.openstreetmap.fr/hot/#{z}/#{x}/#{y}.png"
27
+
28
+ when :osm_fr
29
+ "https://a.tile.openstreetmap.fr/osmfr/#{z}/#{x}/#{y}.png"
30
+
31
+ # ==============================
32
+ # CARTO
33
+ # ==============================
34
+ when :carto_light
35
+ "https://a.basemaps.cartocdn.com/light_all/#{z}/#{x}/#{y}.png"
36
+
37
+ when :carto_light_nolabels
38
+ "https://a.basemaps.cartocdn.com/light_nolabels/#{z}/#{x}/#{y}.png"
39
+
40
+ when :carto_dark
41
+ "https://a.basemaps.cartocdn.com/dark_all/#{z}/#{x}/#{y}.png"
42
+
43
+ when :carto_dark_nolabels
44
+ "https://a.basemaps.cartocdn.com/dark_nolabels/#{z}/#{x}/#{y}.png"
45
+
46
+ # ==============================
47
+ # ESRI / ArcGIS (Satellite, terrain, hybrid)
48
+ # ==============================
49
+ when :esri_satellite
50
+ "https://services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/#{z}/#{y}/#{x}"
51
+
52
+ when :esri_streets
53
+ "https://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer/tile/#{z}/#{y}/#{x}"
54
+
55
+ when :esri_terrain
56
+ "https://services.arcgisonline.com/ArcGIS/rest/services/World_Topo_Map/MapServer/tile/#{z}/#{y}/#{x}"
57
+
58
+ when :esri_hybrid
59
+ "https://services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/#{z}/#{y}/#{x}"
60
+
61
+ # ==============================
62
+ # STAMEN
63
+ # ==============================
64
+ when :stamen_toner
65
+ "https://stamen-tiles.a.ssl.fastly.net/toner/#{z}/#{x}/#{y}.png"
66
+
67
+ when :stamen_toner_lite
68
+ "https://stamen-tiles.a.ssl.fastly.net/toner-lite/#{z}/#{x}/#{y}.png"
69
+
70
+ when :stamen_terrain
71
+ "https://stamen-tiles.a.ssl.fastly.net/terrain/#{z}/#{x}/#{y}.png"
72
+
73
+ when :stamen_watercolor
74
+ "https://stamen-tiles.a.ssl.fastly.net/watercolor/#{z}/#{x}/#{y}.jpg"
75
+
76
+ # ==============================
77
+ # OpenTopoMap
78
+ # ==============================
79
+ when :topo
80
+ "https://a.tile.opentopomap.org/#{z}/#{x}/#{y}.png"
81
+
82
+ # ==============================
83
+ # Wikimedia
84
+ # ==============================
85
+ when :wikimedia
86
+ "https://maps.wikimedia.org/osm-intl/#{z}/#{x}/#{y}.png"
87
+
88
+ # ==============================
89
+ # OpenRailwayMap
90
+ # ==============================
91
+ when :railway
92
+ "https://tiles.openrailwaymap.org/standard/#{z}/#{x}/#{y}.png"
93
+
94
+ # ==============================
95
+ # CyclOSM
96
+ # ==============================
97
+ when :cyclosm
98
+ "https://a.tile-cyclosm.openstreetmap.fr/cyclosm/#{z}/#{x}/#{y}.png"
99
+
100
+ else
101
+ raise "Unknown basemap style: #{style}"
102
+ end
17
103
  end
18
104
 
19
105
  def lon2tile(lon)
@@ -36,30 +122,51 @@ module GD
36
122
  @x_min = x_min
37
123
  @y_min = y_min
38
124
 
125
+ @origin_x = x_min * TILE_SIZE
126
+ @origin_y = y_min * TILE_SIZE
127
+
39
128
  FileUtils.mkdir_p("tmp/tiles")
40
129
 
41
130
  tiles = []
42
131
 
43
132
  (x_min..x_max).each do |x|
44
133
  (y_min..y_max).each do |y|
45
- path = "tmp/tiles/#{@zoom}_#{x}_#{y}.png"
46
- unless File.exist?(path)
47
- uri = URI(url(@zoom,x,y))
134
+ path = nil
135
+
136
+ unless File.exist?("tmp/tiles/#{@provider}_#{@zoom}_#{x}_#{y}.png") ||
137
+ File.exist?("tmp/tiles/#{@provider}_#{@zoom}_#{x}_#{y}.jpg")
138
+
139
+ uri = URI(url(@zoom, x, y, @provider))
48
140
 
49
141
  Net::HTTP.start(uri.host, uri.port, use_ssl: true) do |http|
50
142
  req = Net::HTTP::Get.new(uri)
51
143
  req["User-Agent"] = "libgd-gis/0.1 (Ruby)"
52
144
 
53
145
  res = http.request(req)
146
+ raise "Tile fetch failed #{res.code}" unless res.code == "200"
147
+
148
+ content_type = res["content-type"]
54
149
 
55
- unless res.code == "200"
56
- raise "Tile fetch failed #{res.code}"
57
- end
150
+ ext =
151
+ if content_type&.include?("png")
152
+ "png"
153
+ elsif content_type&.include?("jpeg") || content_type&.include?("jpg")
154
+ "jpg"
155
+ else
156
+ raise "Unsupported tile type: #{content_type}"
157
+ end
58
158
 
159
+ path = "tmp/tiles/#{@provider}_#{@zoom}_#{x}_#{y}.#{ext}"
59
160
  File.binwrite(path, res.body)
60
161
  end
61
-
162
+ else
163
+ if File.exist?("tmp/tiles/#{@provider}_#{@zoom}_#{x}_#{y}.png")
164
+ path = "tmp/tiles/#{@provider}_#{@zoom}_#{x}_#{y}.png"
165
+ else
166
+ path = "tmp/tiles/#{@provider}_#{@zoom}_#{x}_#{y}.jpg"
167
+ end
62
168
  end
169
+
63
170
  tiles << [x,y,path]
64
171
  end
65
172
  end
@@ -0,0 +1,40 @@
1
+ module GD
2
+ module GIS
3
+ module Geometry
4
+ def self.buffer_line(coords, meters)
5
+ left = []
6
+ right = []
7
+
8
+ coords.each_cons(2) do |a,b|
9
+ x1,y1 = a
10
+ x2,y2 = b
11
+
12
+ dx = x2 - x1
13
+ dy = y2 - y1
14
+
15
+ len = Math.sqrt(dx*dx + dy*dy)
16
+ next if len == 0
17
+
18
+ # normal vector
19
+ nx = -dy / len
20
+ ny = dx / len
21
+
22
+ # offset in degrees (approx)
23
+ # 1 meter ≈ 1 / 111_320 degrees
24
+ off = meters / 111_320.0
25
+
26
+ left << [x1 + nx*off, y1 + ny*off]
27
+ right << [x1 - nx*off, y1 - ny*off]
28
+ end
29
+
30
+ # add last point
31
+ x2,y2 = coords.last
32
+ left << [x2, y2]
33
+ right << [x2, y2]
34
+
35
+ polygon = left + right.reverse
36
+ polygon
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,75 @@
1
+ require "json"
2
+
3
+ module GD
4
+ module GIS
5
+ class LayerGeoJSON
6
+ def initialize(path, options = {})
7
+ @geojson = JSON.parse(File.read(path))
8
+ @color = options[:color]
9
+ @icon = options[:icon]
10
+ @label = options[:label]
11
+ @font = options[:font]
12
+ @size = options[:size] || 10
13
+ end
14
+
15
+ def render!(img, projection)
16
+ features = @geojson["features"] || []
17
+
18
+ features.each do |f|
19
+ geom = f["geometry"]
20
+ next unless geom
21
+
22
+ type = geom["type"]
23
+ coords = geom["coordinates"]
24
+
25
+ case type
26
+ when "Point"
27
+ draw_points(img, projection, [coords], f["properties"])
28
+ when "MultiPoint"
29
+ draw_points(img, projection, coords, f["properties"])
30
+ when "LineString"
31
+ draw_lines(img, projection, [coords])
32
+ when "MultiLineString"
33
+ coords.each { |l| draw_lines(img, projection, [l]) }
34
+ when "Polygon"
35
+ draw_polygons(img, projection, coords)
36
+ when "MultiPolygon"
37
+ coords.each { |p| draw_polygons(img, projection, p) }
38
+ end
39
+ end
40
+ end
41
+
42
+ private
43
+
44
+ def draw_lines(img, projection, lines)
45
+ color = @color || [120,120,120]
46
+
47
+ lines.each do |line|
48
+ pts = line.map { |p| projection.call(p[0], p[1]) }
49
+
50
+ pts.each_cons(2) do |(x1, y1), (x2, y2)|
51
+ img.line(x1, y1, x2, y2, color)
52
+ end
53
+ end
54
+ end
55
+
56
+ def draw_polygons(img, projection, rings)
57
+ fill = @color || [200,200,200]
58
+ stroke = [120,120,120]
59
+
60
+ rings.each do |ring|
61
+ pts = ring.map { |p| projection.call(p[0], p[1]) }
62
+
63
+ img.polygon(pts, fill: fill, stroke: stroke, width: 1)
64
+ end
65
+ end
66
+
67
+ def draw_polygons(map, rings)
68
+ map.add_polygons(
69
+ rings.map { |r| r.map { |p| [p[0], p[1]] } },
70
+ color: @color || [200,200,200]
71
+ )
72
+ end
73
+ end
74
+ end
75
+ end
@@ -0,0 +1,36 @@
1
+ module GD
2
+ module GIS
3
+ class LinesLayer
4
+ def initialize(features, stroke:, width:)
5
+ @features = features
6
+ @stroke = stroke
7
+ @width = width
8
+ end
9
+
10
+ def render!(img, projection)
11
+ @features.each do |f|
12
+ geom = f["geometry"]
13
+
14
+ case geom["type"]
15
+ when "LineString"
16
+ draw_line(geom["coordinates"], img, projection)
17
+ when "MultiLineString"
18
+ geom["coordinates"].each do |line|
19
+ draw_line(line, img, projection)
20
+ end
21
+ end
22
+ end
23
+ end
24
+
25
+ def draw_line(coords, img, projection)
26
+ pts = coords.map { |p| projection.call(p[0], p[1]) }
27
+
28
+ (0...pts.size-1).each do |i|
29
+ x1,y1 = pts[i]
30
+ x2,y2 = pts[i+1]
31
+ img.line(x1,y1,x2,y2,@stroke, thickness: @width)
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
@@ -5,7 +5,12 @@ module GD
5
5
  @data = data
6
6
  @lon = lon
7
7
  @lat = lat
8
- @icon = GD::Image.open(icon)
8
+
9
+ if icon
10
+ @icon = GD::Image.open(icon)
11
+ else
12
+ @icon = build_default_marker
13
+ end
9
14
 
10
15
  @label = label
11
16
  @font = font
@@ -16,6 +21,31 @@ module GD
16
21
  @icon.save_alpha = true
17
22
  end
18
23
 
24
+ def build_default_marker
25
+ size = 32
26
+ img = GD::Image.new(size, size)
27
+ img.alpha_blending = true
28
+ img.save_alpha = true
29
+
30
+ transparent = GD::Color.rgba(0,0,0,0)
31
+ img.filled_rectangle(0,0,size,size,transparent)
32
+
33
+ white = GD::Color.rgb(255,255,255)
34
+ black = GD::Color.rgb(0,0,0)
35
+
36
+ cx = size / 2
37
+ cy = size / 2
38
+ r = 12
39
+
40
+ # borde blanco
41
+ img.arc(cx, cy, r*2+4, r*2+4, 0, 360, white)
42
+
43
+ # relleno negro
44
+ img.filled_arc(cx, cy, r*2, r*2, 0, 360, black)
45
+
46
+ img
47
+ end
48
+
19
49
  def render!(img, projector)
20
50
  w = @icon.width
21
51
  h = @icon.height
@@ -0,0 +1,38 @@
1
+ module GD
2
+ module GIS
3
+ class PolygonsLayer
4
+ def initialize(polygons, fill:, stroke: nil, width: nil)
5
+ @polygons = polygons
6
+ @fill = fill
7
+ @stroke = stroke
8
+ @width = width
9
+ end
10
+
11
+ def self.from_lines(features, stroke:, fill:, width:)
12
+ polys = []
13
+
14
+ features.each do |f|
15
+ coords = f["geometry"]["coordinates"]
16
+ poly = Geometry.buffer_line(coords, width)
17
+ polys << poly
18
+ end
19
+
20
+ new(polys, fill: fill, stroke: stroke)
21
+ end
22
+
23
+ def render!(img, projection)
24
+ @polygons.each do |poly|
25
+ pts = poly.map { |p| projection.call(p[0], p[1]) }
26
+
27
+ img.filled_polygon(pts, @fill)
28
+
29
+ if @stroke
30
+ pts.each_cons(2) do |a,b|
31
+ img.line(a[0],a[1],b[0],b[1],@stroke, thickness: 1)
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
data/lib/gd/gis/map.rb CHANGED
@@ -1,19 +1,29 @@
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"
8
+ require_relative "layer_geojson"
5
9
 
6
10
  module GD
7
11
  module GIS
8
12
  class Map
13
+ TILE_SIZE = 256
14
+
9
15
  def initialize(bbox:, zoom:, basemap:)
10
- @bbox = bbox
11
- @zoom = zoom
16
+ @bbox = bbox
17
+ @zoom = zoom
12
18
  @basemap = Basemap.new(zoom, bbox, basemap)
13
19
  @layers = []
14
20
  end
15
21
 
16
- def add_points(data, lon:, lat:, icon:, label: nil, font: nil, size: 12, color: [0,0,0])
22
+ # ------------------------------
23
+ # Layer DSL
24
+ # ------------------------------
25
+
26
+ def add_points(data, lon:, lat:, icon: nil, label: nil, font: nil, size: 12, color: [0,0,0])
17
27
  @layers << PointsLayer.new(
18
28
  data,
19
29
  lon: lon,
@@ -26,98 +36,68 @@ module GD
26
36
  )
27
37
  end
28
38
 
29
- def render
39
+ def add_lines(features, stroke:, width:)
40
+ @layers << LinesLayer.new(features, stroke: stroke, width: width)
41
+ end
42
+
43
+ def add_polygons(polygons, fill:, stroke: nil, width: nil)
44
+ @layers << PolygonsLayer.new(polygons, fill: fill, stroke: stroke, width: width)
45
+ end
46
+
47
+ def add_geojson(path, **options)
48
+ @layers << LayerGeoJSON.new(path, options)
49
+ end
50
+
51
+ # ------------------------------
52
+ # Rendering
53
+ # ------------------------------
54
+
55
+ def render(path = "map.png")
30
56
  tiles, x_min, y_min = @basemap.fetch_tiles
31
57
 
32
- x0 = x_min * 256
33
- y0 = y_min * 256
58
+ xs = tiles.map { |t| t[0] }
59
+ ys = tiles.map { |t| t[1] }
60
+
61
+ cols = xs.max - xs.min + 1
62
+ rows = ys.max - ys.min + 1
34
63
 
35
- cols = tiles.map{|t| t[0]}.uniq.size
36
- rows = tiles.map{|t| t[1]}.uniq.size
64
+ width = cols * TILE_SIZE
65
+ height = rows * TILE_SIZE
37
66
 
38
- width = cols * 256
39
- height = rows * 256
67
+ origin_x = x_min * TILE_SIZE
68
+ origin_y = y_min * TILE_SIZE
40
69
 
41
- @img = GD::Image.new(width,height)
70
+ @img = GD::Image.new(width, height)
42
71
  @img.alpha_blending = true
43
72
  @img.save_alpha = true
44
73
 
45
- tiles.each do |x,y,path|
46
- tile = GD::Image.open(path)
74
+ # Draw basemap
75
+ tiles.each do |x, y, file|
76
+ tile = GD::Image.open(file)
47
77
  cx = x - x_min
48
78
  cy = y - y_min
49
- @img.copy(tile, cx*256, cy*256, 0,0,256,256)
79
+ @img.copy(tile, cx * TILE_SIZE, cy * TILE_SIZE, 0, 0, TILE_SIZE, TILE_SIZE)
50
80
  end
51
81
 
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])
57
-
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)
62
-
63
- [ (px - x0).to_i, (py - y0).to_i ]
64
- }
65
-
66
- @layers.each { |l| l.render!(@img, projector) }
67
- end
68
-
69
- def tile2lon(x, z)
70
- x.to_f / (2**z) * 360.0 - 180.0
71
- end
82
+ # WebMercator projection → local pixels
83
+ scale = TILE_SIZE * (2 ** @zoom)
72
84
 
73
- def tile2lat(y, z)
74
- n = Math::PI - (2.0 * Math::PI * y.to_f) / (2**z)
75
- 180.0 / Math::PI * Math.atan(0.5 * (Math.exp(n) - Math.exp(-n)))
76
- end
85
+ projection = lambda do |lon, lat|
86
+ x = (lon + 180.0) / 360.0 * scale
77
87
 
78
- def tile_bbox(z,x,y)
79
- west = tile2lon(x, z)
80
- east = tile2lon(x+1, z)
81
- north = tile2lat(y, z)
82
- south = tile2lat(y+1, z)
83
- [west, south, east, north]
84
- end
85
-
86
- def intersect_bbox(a,b)
87
- [
88
- [a[0], b[0]].max,
89
- [a[1], b[1]].max,
90
- [a[2], b[2]].min,
91
- [a[3], b[3]].min
92
- ]
93
- end
88
+ lat_rad = lat * Math::PI / 180.0
89
+ y = (1.0 - Math.log(Math.tan(lat_rad) + 1.0 / Math.cos(lat_rad)) / Math::PI) / 2.0 * scale
94
90
 
95
- def tile(z,x,y)
96
- tb = tile_bbox(z,x,y)
97
- ib = intersect_bbox(@bbox, tb)
98
-
99
- # Si no hay intersección, devolvemos tile vacío
100
- if ib[0] >= ib[2] || ib[1] >= ib[3]
101
- return GD::Image.new(256,256)
91
+ [
92
+ (x - origin_x).round,
93
+ (y - origin_y).round
94
+ ]
102
95
  end
103
96
 
104
- submap = GD::GIS::Map.new(
105
- bbox: ib,
106
- zoom: z,
107
- basemap: :carto_light
108
- )
109
-
110
- # copiar capas
111
- @layers.each { |l| submap.instance_variable_get(:@layers) << l }
112
-
113
- submap.render
114
-
115
- # recortar al tamaño exacto del tile
116
- img = GD::Image.new(256,256)
117
- img.alpha_blending = true
118
- img.save_alpha = true
119
- img.copy(submap.instance_variable_get(:@img), 0,0,0,0,256,256)
120
- img
97
+ # Draw layers
98
+ @layers.each do |layer|
99
+ layer.render!(@img, projection)
100
+ end
121
101
  end
122
102
 
123
103
  def save(path)
@@ -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