libgd-gis 0.2.1 → 0.2.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 (953) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +2 -1
  3. data/lib/gd/gis/basemap.rb +2 -2
  4. data/lib/gd/gis/classifier.rb +57 -0
  5. data/lib/gd/gis/dump.sh +19 -0
  6. data/lib/gd/gis/feature.rb +152 -0
  7. data/lib/gd/gis/layer_geojson.rb +6 -59
  8. data/lib/gd/gis/map.rb +137 -54
  9. data/lib/gd/gis/style/dark.rb +49 -0
  10. data/lib/gd/gis/style/light.rb +49 -0
  11. data/lib/gd/gis/style/solarized.rb +49 -0
  12. data/lib/gd/gis/style.rb +45 -0
  13. data/lib/gd/gis.rb +12 -1
  14. metadata +12 -944
  15. data/examples/argentina.rb +0 -82
  16. data/examples/argentina_cities.rb +0 -89
  17. data/examples/argentina_museums.rb +0 -70
  18. data/examples/asia-peaks.rb +0 -42
  19. data/examples/avenue_ramirez.rb +0 -44
  20. data/examples/europe-peaks.rb +0 -29
  21. data/examples/flag.png +0 -0
  22. data/examples/fonts/DejaVu Fonts License.txt +0 -97
  23. data/examples/fonts/DejaVuSans-Bold.ttf +0 -0
  24. data/examples/fonts/DejaVuSans-BoldOblique.ttf +0 -0
  25. data/examples/fonts/DejaVuSans-ExtraLight.ttf +0 -0
  26. data/examples/fonts/DejaVuSans-Oblique.ttf +0 -0
  27. data/examples/fonts/DejaVuSans.ttf +0 -0
  28. data/examples/fonts/DejaVuSansCondensed-Bold.ttf +0 -0
  29. data/examples/fonts/DejaVuSansCondensed-BoldOblique.ttf +0 -0
  30. data/examples/fonts/DejaVuSansCondensed-Oblique.ttf +0 -0
  31. data/examples/fonts/DejaVuSansCondensed.ttf +0 -0
  32. data/examples/ice-cream-shops.rb +0 -37
  33. data/examples/localidades.json +0 -1
  34. data/examples/map.png +0 -0
  35. data/examples/mountains.rb +0 -98
  36. data/examples/museum.png +0 -0
  37. data/examples/museums.csv +0 -1183
  38. data/examples/output/argentina.png +0 -0
  39. data/examples/output/argentina_localidades.png +0 -0
  40. data/examples/parana-city.rb +0 -29
  41. data/examples/parana.osm +0 -186897
  42. data/examples/parana.png +0 -0
  43. data/examples/parana_museums.rb +0 -48
  44. data/examples/parana_streets.geojson +0 -1
  45. data/examples/parana_streets.rb +0 -48
  46. data/examples/streets.geojson +0 -1
  47. data/examples/streets.png +0 -0
  48. data/examples/streets_geojson.rb +0 -33
  49. data/examples/tanzania.rb +0 -32
  50. data/examples/target.rb +0 -19
  51. data/examples/the_america_peaks.rb +0 -43
  52. data/examples/tmp/tiles/7_37_71.png +0 -0
  53. data/examples/tmp/tiles/7_37_72.png +0 -0
  54. data/examples/tmp/tiles/7_37_73.png +0 -0
  55. data/examples/tmp/tiles/7_37_74.png +0 -0
  56. data/examples/tmp/tiles/7_37_75.png +0 -0
  57. data/examples/tmp/tiles/7_37_76.png +0 -0
  58. data/examples/tmp/tiles/7_37_77.png +0 -0
  59. data/examples/tmp/tiles/7_37_78.png +0 -0
  60. data/examples/tmp/tiles/7_37_79.png +0 -0
  61. data/examples/tmp/tiles/7_37_80.png +0 -0
  62. data/examples/tmp/tiles/7_37_81.png +0 -0
  63. data/examples/tmp/tiles/7_37_82.png +0 -0
  64. data/examples/tmp/tiles/7_37_83.png +0 -0
  65. data/examples/tmp/tiles/7_37_84.png +0 -0
  66. data/examples/tmp/tiles/7_37_85.png +0 -0
  67. data/examples/tmp/tiles/7_37_86.png +0 -0
  68. data/examples/tmp/tiles/7_37_87.png +0 -0
  69. data/examples/tmp/tiles/7_38_71.png +0 -0
  70. data/examples/tmp/tiles/7_38_72.png +0 -0
  71. data/examples/tmp/tiles/7_38_73.png +0 -0
  72. data/examples/tmp/tiles/7_38_74.png +0 -0
  73. data/examples/tmp/tiles/7_38_75.png +0 -0
  74. data/examples/tmp/tiles/7_38_76.png +0 -0
  75. data/examples/tmp/tiles/7_38_77.png +0 -0
  76. data/examples/tmp/tiles/7_38_78.png +0 -0
  77. data/examples/tmp/tiles/7_38_79.png +0 -0
  78. data/examples/tmp/tiles/7_38_80.png +0 -0
  79. data/examples/tmp/tiles/7_38_81.png +0 -0
  80. data/examples/tmp/tiles/7_38_82.png +0 -0
  81. data/examples/tmp/tiles/7_38_83.png +0 -0
  82. data/examples/tmp/tiles/7_38_84.png +0 -0
  83. data/examples/tmp/tiles/7_38_85.png +0 -0
  84. data/examples/tmp/tiles/7_38_86.png +0 -0
  85. data/examples/tmp/tiles/7_38_87.png +0 -0
  86. data/examples/tmp/tiles/7_39_71.png +0 -0
  87. data/examples/tmp/tiles/7_39_72.png +0 -0
  88. data/examples/tmp/tiles/7_39_73.png +0 -0
  89. data/examples/tmp/tiles/7_39_74.png +0 -0
  90. data/examples/tmp/tiles/7_39_75.png +0 -0
  91. data/examples/tmp/tiles/7_39_76.png +0 -0
  92. data/examples/tmp/tiles/7_39_77.png +0 -0
  93. data/examples/tmp/tiles/7_39_78.png +0 -0
  94. data/examples/tmp/tiles/7_39_79.png +0 -0
  95. data/examples/tmp/tiles/7_39_80.png +0 -0
  96. data/examples/tmp/tiles/7_39_81.png +0 -0
  97. data/examples/tmp/tiles/7_39_82.png +0 -0
  98. data/examples/tmp/tiles/7_39_83.png +0 -0
  99. data/examples/tmp/tiles/7_39_84.png +0 -0
  100. data/examples/tmp/tiles/7_39_85.png +0 -0
  101. data/examples/tmp/tiles/7_39_86.png +0 -0
  102. data/examples/tmp/tiles/7_39_87.png +0 -0
  103. data/examples/tmp/tiles/7_40_71.png +0 -0
  104. data/examples/tmp/tiles/7_40_72.png +0 -0
  105. data/examples/tmp/tiles/7_40_73.png +0 -0
  106. data/examples/tmp/tiles/7_40_74.png +0 -0
  107. data/examples/tmp/tiles/7_40_75.png +0 -0
  108. data/examples/tmp/tiles/7_40_76.png +0 -0
  109. data/examples/tmp/tiles/7_40_77.png +0 -0
  110. data/examples/tmp/tiles/7_40_78.png +0 -0
  111. data/examples/tmp/tiles/7_40_79.png +0 -0
  112. data/examples/tmp/tiles/7_40_80.png +0 -0
  113. data/examples/tmp/tiles/7_40_81.png +0 -0
  114. data/examples/tmp/tiles/7_40_82.png +0 -0
  115. data/examples/tmp/tiles/7_40_83.png +0 -0
  116. data/examples/tmp/tiles/7_40_84.png +0 -0
  117. data/examples/tmp/tiles/7_40_85.png +0 -0
  118. data/examples/tmp/tiles/7_40_86.png +0 -0
  119. data/examples/tmp/tiles/7_40_87.png +0 -0
  120. data/examples/tmp/tiles/7_41_71.png +0 -0
  121. data/examples/tmp/tiles/7_41_72.png +0 -0
  122. data/examples/tmp/tiles/7_41_73.png +0 -0
  123. data/examples/tmp/tiles/7_41_74.png +0 -0
  124. data/examples/tmp/tiles/7_41_75.png +0 -0
  125. data/examples/tmp/tiles/7_41_76.png +0 -0
  126. data/examples/tmp/tiles/7_41_77.png +0 -0
  127. data/examples/tmp/tiles/7_41_78.png +0 -0
  128. data/examples/tmp/tiles/7_41_79.png +0 -0
  129. data/examples/tmp/tiles/7_41_80.png +0 -0
  130. data/examples/tmp/tiles/7_41_81.png +0 -0
  131. data/examples/tmp/tiles/7_41_82.png +0 -0
  132. data/examples/tmp/tiles/7_41_83.png +0 -0
  133. data/examples/tmp/tiles/7_41_84.png +0 -0
  134. data/examples/tmp/tiles/7_41_85.png +0 -0
  135. data/examples/tmp/tiles/7_41_86.png +0 -0
  136. data/examples/tmp/tiles/7_41_87.png +0 -0
  137. data/examples/tmp/tiles/7_42_71.png +0 -0
  138. data/examples/tmp/tiles/7_42_72.png +0 -0
  139. data/examples/tmp/tiles/7_42_73.png +0 -0
  140. data/examples/tmp/tiles/7_42_74.png +0 -0
  141. data/examples/tmp/tiles/7_42_75.png +0 -0
  142. data/examples/tmp/tiles/7_42_76.png +0 -0
  143. data/examples/tmp/tiles/7_42_77.png +0 -0
  144. data/examples/tmp/tiles/7_42_78.png +0 -0
  145. data/examples/tmp/tiles/7_42_79.png +0 -0
  146. data/examples/tmp/tiles/7_42_80.png +0 -0
  147. data/examples/tmp/tiles/7_42_81.png +0 -0
  148. data/examples/tmp/tiles/7_42_82.png +0 -0
  149. data/examples/tmp/tiles/7_42_83.png +0 -0
  150. data/examples/tmp/tiles/7_42_84.png +0 -0
  151. data/examples/tmp/tiles/7_42_85.png +0 -0
  152. data/examples/tmp/tiles/7_42_86.png +0 -0
  153. data/examples/tmp/tiles/7_42_87.png +0 -0
  154. data/examples/tmp/tiles/7_43_71.png +0 -0
  155. data/examples/tmp/tiles/7_43_72.png +0 -0
  156. data/examples/tmp/tiles/7_43_73.png +0 -0
  157. data/examples/tmp/tiles/7_43_74.png +0 -0
  158. data/examples/tmp/tiles/7_43_75.png +0 -0
  159. data/examples/tmp/tiles/7_43_76.png +0 -0
  160. data/examples/tmp/tiles/7_43_77.png +0 -0
  161. data/examples/tmp/tiles/7_43_78.png +0 -0
  162. data/examples/tmp/tiles/7_43_79.png +0 -0
  163. data/examples/tmp/tiles/7_43_80.png +0 -0
  164. data/examples/tmp/tiles/7_43_81.png +0 -0
  165. data/examples/tmp/tiles/7_43_82.png +0 -0
  166. data/examples/tmp/tiles/7_43_83.png +0 -0
  167. data/examples/tmp/tiles/7_43_84.png +0 -0
  168. data/examples/tmp/tiles/7_43_85.png +0 -0
  169. data/examples/tmp/tiles/7_43_86.png +0 -0
  170. data/examples/tmp/tiles/7_43_87.png +0 -0
  171. data/examples/tmp/tiles/7_44_71.png +0 -0
  172. data/examples/tmp/tiles/7_44_72.png +0 -0
  173. data/examples/tmp/tiles/7_44_73.png +0 -0
  174. data/examples/tmp/tiles/7_44_74.png +0 -0
  175. data/examples/tmp/tiles/7_44_75.png +0 -0
  176. data/examples/tmp/tiles/7_44_76.png +0 -0
  177. data/examples/tmp/tiles/7_44_77.png +0 -0
  178. data/examples/tmp/tiles/7_44_78.png +0 -0
  179. data/examples/tmp/tiles/7_44_79.png +0 -0
  180. data/examples/tmp/tiles/7_44_80.png +0 -0
  181. data/examples/tmp/tiles/7_44_81.png +0 -0
  182. data/examples/tmp/tiles/7_44_82.png +0 -0
  183. data/examples/tmp/tiles/7_44_83.png +0 -0
  184. data/examples/tmp/tiles/7_44_84.png +0 -0
  185. data/examples/tmp/tiles/7_44_85.png +0 -0
  186. data/examples/tmp/tiles/7_44_86.png +0 -0
  187. data/examples/tmp/tiles/7_44_87.png +0 -0
  188. data/examples/tmp/tiles/carto_light_15_10871_19430.png +0 -0
  189. data/examples/tmp/tiles/carto_light_15_10871_19431.png +0 -0
  190. data/examples/tmp/tiles/carto_light_15_10871_19432.png +0 -0
  191. data/examples/tmp/tiles/carto_light_15_10871_19433.png +0 -0
  192. data/examples/tmp/tiles/carto_light_15_10871_19434.png +0 -0
  193. data/examples/tmp/tiles/carto_light_15_10871_19435.png +0 -0
  194. data/examples/tmp/tiles/carto_light_15_10872_19430.png +0 -0
  195. data/examples/tmp/tiles/carto_light_15_10872_19431.png +0 -0
  196. data/examples/tmp/tiles/carto_light_15_10872_19432.png +0 -0
  197. data/examples/tmp/tiles/carto_light_15_10872_19433.png +0 -0
  198. data/examples/tmp/tiles/carto_light_15_10872_19434.png +0 -0
  199. data/examples/tmp/tiles/carto_light_15_10872_19435.png +0 -0
  200. data/examples/tmp/tiles/carto_light_15_10873_19430.png +0 -0
  201. data/examples/tmp/tiles/carto_light_15_10873_19431.png +0 -0
  202. data/examples/tmp/tiles/carto_light_15_10873_19432.png +0 -0
  203. data/examples/tmp/tiles/carto_light_15_10873_19433.png +0 -0
  204. data/examples/tmp/tiles/carto_light_15_10873_19434.png +0 -0
  205. data/examples/tmp/tiles/carto_light_15_10873_19435.png +0 -0
  206. data/examples/tmp/tiles/carto_light_15_10874_19430.png +0 -0
  207. data/examples/tmp/tiles/carto_light_15_10874_19431.png +0 -0
  208. data/examples/tmp/tiles/carto_light_15_10874_19432.png +0 -0
  209. data/examples/tmp/tiles/carto_light_15_10874_19433.png +0 -0
  210. data/examples/tmp/tiles/carto_light_15_10874_19434.png +0 -0
  211. data/examples/tmp/tiles/carto_light_15_10874_19435.png +0 -0
  212. data/examples/tmp/tiles/carto_light_15_10875_19430.png +0 -0
  213. data/examples/tmp/tiles/carto_light_15_10875_19431.png +0 -0
  214. data/examples/tmp/tiles/carto_light_15_10875_19432.png +0 -0
  215. data/examples/tmp/tiles/carto_light_15_10875_19433.png +0 -0
  216. data/examples/tmp/tiles/carto_light_15_10875_19434.png +0 -0
  217. data/examples/tmp/tiles/carto_light_15_10875_19435.png +0 -0
  218. data/examples/tmp/tiles/carto_light_15_10876_19430.png +0 -0
  219. data/examples/tmp/tiles/carto_light_15_10876_19431.png +0 -0
  220. data/examples/tmp/tiles/carto_light_15_10876_19432.png +0 -0
  221. data/examples/tmp/tiles/carto_light_15_10876_19433.png +0 -0
  222. data/examples/tmp/tiles/carto_light_15_10876_19434.png +0 -0
  223. data/examples/tmp/tiles/carto_light_15_10876_19435.png +0 -0
  224. data/examples/tmp/tiles/carto_light_15_10877_19430.png +0 -0
  225. data/examples/tmp/tiles/carto_light_15_10877_19431.png +0 -0
  226. data/examples/tmp/tiles/carto_light_15_10877_19432.png +0 -0
  227. data/examples/tmp/tiles/carto_light_15_10877_19433.png +0 -0
  228. data/examples/tmp/tiles/carto_light_15_10877_19434.png +0 -0
  229. data/examples/tmp/tiles/carto_light_15_10877_19435.png +0 -0
  230. data/examples/tmp/tiles/carto_light_15_9693_18339.png +0 -0
  231. data/examples/tmp/tiles/carto_light_15_9693_18340.png +0 -0
  232. data/examples/tmp/tiles/carto_light_15_9693_18341.png +0 -0
  233. data/examples/tmp/tiles/carto_light_15_9693_18342.png +0 -0
  234. data/examples/tmp/tiles/carto_light_15_9693_18343.png +0 -0
  235. data/examples/tmp/tiles/carto_light_15_9693_18344.png +0 -0
  236. data/examples/tmp/tiles/carto_light_15_9693_18345.png +0 -0
  237. data/examples/tmp/tiles/carto_light_15_9693_18346.png +0 -0
  238. data/examples/tmp/tiles/carto_light_15_9693_18347.png +0 -0
  239. data/examples/tmp/tiles/carto_light_15_9693_18348.png +0 -0
  240. data/examples/tmp/tiles/carto_light_15_9693_18349.png +0 -0
  241. data/examples/tmp/tiles/carto_light_15_9693_18350.png +0 -0
  242. data/examples/tmp/tiles/carto_light_15_9693_18351.png +0 -0
  243. data/examples/tmp/tiles/carto_light_15_9693_18352.png +0 -0
  244. data/examples/tmp/tiles/carto_light_15_9693_18353.png +0 -0
  245. data/examples/tmp/tiles/carto_light_15_9693_18354.png +0 -0
  246. data/examples/tmp/tiles/carto_light_15_9693_18355.png +0 -0
  247. data/examples/tmp/tiles/carto_light_15_9693_18356.png +0 -0
  248. data/examples/tmp/tiles/carto_light_15_9693_18357.png +0 -0
  249. data/examples/tmp/tiles/carto_light_15_9693_18358.png +0 -0
  250. data/examples/tmp/tiles/carto_light_15_9693_18359.png +0 -0
  251. data/examples/tmp/tiles/carto_light_15_9693_18360.png +0 -0
  252. data/examples/tmp/tiles/carto_light_15_9693_18361.png +0 -0
  253. data/examples/tmp/tiles/carto_light_15_9693_18362.png +0 -0
  254. data/examples/tmp/tiles/carto_light_15_9693_18363.png +0 -0
  255. data/examples/tmp/tiles/carto_light_15_9693_18364.png +0 -0
  256. data/examples/tmp/tiles/carto_light_15_9693_18365.png +0 -0
  257. data/examples/tmp/tiles/carto_light_15_9693_18366.png +0 -0
  258. data/examples/tmp/tiles/carto_light_15_9693_18367.png +0 -0
  259. data/examples/tmp/tiles/carto_light_15_9693_18368.png +0 -0
  260. data/examples/tmp/tiles/carto_light_15_9693_18369.png +0 -0
  261. data/examples/tmp/tiles/carto_light_15_9693_18370.png +0 -0
  262. data/examples/tmp/tiles/carto_light_15_9693_18371.png +0 -0
  263. data/examples/tmp/tiles/carto_light_15_9693_18372.png +0 -0
  264. data/examples/tmp/tiles/carto_light_15_9693_18373.png +0 -0
  265. data/examples/tmp/tiles/carto_light_15_9693_18374.png +0 -0
  266. data/examples/tmp/tiles/carto_light_15_9693_18375.png +0 -0
  267. data/examples/tmp/tiles/carto_light_15_9693_18376.png +0 -0
  268. data/examples/tmp/tiles/carto_light_15_9693_18377.png +0 -0
  269. data/examples/tmp/tiles/carto_light_15_9693_18378.png +0 -0
  270. data/examples/tmp/tiles/carto_light_15_9693_18379.png +0 -0
  271. data/examples/tmp/tiles/carto_light_15_9693_18380.png +0 -0
  272. data/examples/tmp/tiles/carto_light_15_9693_18381.png +0 -0
  273. data/examples/tmp/tiles/carto_light_15_9693_18382.png +0 -0
  274. data/examples/tmp/tiles/carto_light_15_9693_18383.png +0 -0
  275. data/examples/tmp/tiles/carto_light_15_9693_18384.png +0 -0
  276. data/examples/tmp/tiles/carto_light_15_9693_18385.png +0 -0
  277. data/examples/tmp/tiles/carto_light_15_9693_18386.png +0 -0
  278. data/examples/tmp/tiles/carto_light_15_9693_18387.png +0 -0
  279. data/examples/tmp/tiles/carto_light_15_9693_18388.png +0 -0
  280. data/examples/tmp/tiles/carto_light_15_9693_18389.png +0 -0
  281. data/examples/tmp/tiles/carto_light_15_9693_18390.png +0 -0
  282. data/examples/tmp/tiles/carto_light_15_9693_18391.png +0 -0
  283. data/examples/tmp/tiles/carto_light_15_9693_18392.png +0 -0
  284. data/examples/tmp/tiles/carto_light_15_9693_18393.png +0 -0
  285. data/examples/tmp/tiles/carto_light_15_9693_18394.png +0 -0
  286. data/examples/tmp/tiles/carto_light_15_9693_18395.png +0 -0
  287. data/examples/tmp/tiles/carto_light_15_9693_18396.png +0 -0
  288. data/examples/tmp/tiles/carto_light_15_9693_18397.png +0 -0
  289. data/examples/tmp/tiles/carto_light_15_9693_18398.png +0 -0
  290. data/examples/tmp/tiles/carto_light_15_9693_18399.png +0 -0
  291. data/examples/tmp/tiles/carto_light_15_9693_18400.png +0 -0
  292. data/examples/tmp/tiles/carto_light_15_9693_18401.png +0 -0
  293. data/examples/tmp/tiles/carto_light_15_9693_18402.png +0 -0
  294. data/examples/tmp/tiles/carto_light_15_9693_18403.png +0 -0
  295. data/examples/tmp/tiles/carto_light_15_9693_18404.png +0 -0
  296. data/examples/tmp/tiles/carto_light_15_9693_18405.png +0 -0
  297. data/examples/tmp/tiles/carto_light_15_9693_18406.png +0 -0
  298. data/examples/tmp/tiles/carto_light_15_9693_18407.png +0 -0
  299. data/examples/tmp/tiles/carto_light_15_9693_18408.png +0 -0
  300. data/examples/tmp/tiles/carto_light_15_9693_18409.png +0 -0
  301. data/examples/tmp/tiles/carto_light_15_9693_18410.png +0 -0
  302. data/examples/tmp/tiles/carto_light_15_9693_18411.png +0 -0
  303. data/examples/tmp/tiles/carto_light_15_9693_18412.png +0 -0
  304. data/examples/tmp/tiles/carto_light_15_9693_18413.png +0 -0
  305. data/examples/tmp/tiles/carto_light_15_9693_18414.png +0 -0
  306. data/examples/tmp/tiles/carto_light_15_9693_18415.png +0 -0
  307. data/examples/tmp/tiles/carto_light_15_9693_18416.png +0 -0
  308. data/examples/tmp/tiles/carto_light_15_9693_18417.png +0 -0
  309. data/examples/tmp/tiles/carto_light_15_9693_18418.png +0 -0
  310. data/examples/tmp/tiles/carto_light_15_9693_18419.png +0 -0
  311. data/examples/tmp/tiles/carto_light_15_9693_18420.png +0 -0
  312. data/examples/tmp/tiles/carto_light_15_9693_18421.png +0 -0
  313. data/examples/tmp/tiles/carto_light_15_9693_18422.png +0 -0
  314. data/examples/tmp/tiles/carto_light_15_9693_18423.png +0 -0
  315. data/examples/tmp/tiles/carto_light_15_9693_18424.png +0 -0
  316. data/examples/tmp/tiles/carto_light_15_9693_18425.png +0 -0
  317. data/examples/tmp/tiles/carto_light_15_9693_18426.png +0 -0
  318. data/examples/tmp/tiles/carto_light_15_9693_18427.png +0 -0
  319. data/examples/tmp/tiles/carto_light_15_9693_18428.png +0 -0
  320. data/examples/tmp/tiles/carto_light_15_9693_18429.png +0 -0
  321. data/examples/tmp/tiles/carto_light_15_9693_18430.png +0 -0
  322. data/examples/tmp/tiles/carto_light_15_9693_18431.png +0 -0
  323. data/examples/tmp/tiles/carto_light_15_9693_18432.png +0 -0
  324. data/examples/tmp/tiles/carto_light_15_9693_18433.png +0 -0
  325. data/examples/tmp/tiles/carto_light_15_9693_18434.png +0 -0
  326. data/examples/tmp/tiles/carto_light_15_9693_18435.png +0 -0
  327. data/examples/tmp/tiles/carto_light_15_9693_18436.png +0 -0
  328. data/examples/tmp/tiles/carto_light_15_9693_18437.png +0 -0
  329. data/examples/tmp/tiles/carto_light_15_9693_18438.png +0 -0
  330. data/examples/tmp/tiles/carto_light_15_9693_18439.png +0 -0
  331. data/examples/tmp/tiles/carto_light_15_9693_18440.png +0 -0
  332. data/examples/tmp/tiles/carto_light_15_9693_18441.png +0 -0
  333. data/examples/tmp/tiles/carto_light_15_9693_18442.png +0 -0
  334. data/examples/tmp/tiles/carto_light_15_9693_18443.png +0 -0
  335. data/examples/tmp/tiles/carto_light_15_9693_18444.png +0 -0
  336. data/examples/tmp/tiles/carto_light_15_9693_18445.png +0 -0
  337. data/examples/tmp/tiles/carto_light_15_9693_18446.png +0 -0
  338. data/examples/tmp/tiles/carto_light_15_9693_18447.png +0 -0
  339. data/examples/tmp/tiles/carto_light_15_9693_18448.png +0 -0
  340. data/examples/tmp/tiles/carto_light_15_9693_18449.png +0 -0
  341. data/examples/tmp/tiles/carto_light_15_9693_18450.png +0 -0
  342. data/examples/tmp/tiles/carto_light_15_9693_18451.png +0 -0
  343. data/examples/tmp/tiles/carto_light_15_9693_18452.png +0 -0
  344. data/examples/tmp/tiles/carto_light_15_9693_18453.png +0 -0
  345. data/examples/tmp/tiles/carto_light_15_9693_18454.png +0 -0
  346. data/examples/tmp/tiles/carto_light_15_9693_18455.png +0 -0
  347. data/examples/tmp/tiles/carto_light_15_9693_18456.png +0 -0
  348. data/examples/tmp/tiles/carto_light_15_9693_18457.png +0 -0
  349. data/examples/tmp/tiles/carto_light_15_9693_18458.png +0 -0
  350. data/examples/tmp/tiles/carto_light_15_9693_18459.png +0 -0
  351. data/examples/tmp/tiles/carto_light_15_9693_18460.png +0 -0
  352. data/examples/tmp/tiles/carto_light_15_9693_18461.png +0 -0
  353. data/examples/tmp/tiles/carto_light_15_9693_18462.png +0 -0
  354. data/examples/tmp/tiles/carto_light_15_9693_18463.png +0 -0
  355. data/examples/tmp/tiles/carto_light_15_9693_18464.png +0 -0
  356. data/examples/tmp/tiles/carto_light_15_9693_18465.png +0 -0
  357. data/examples/tmp/tiles/carto_light_15_9693_18466.png +0 -0
  358. data/examples/tmp/tiles/carto_light_15_9693_18467.png +0 -0
  359. data/examples/tmp/tiles/carto_light_15_9693_18468.png +0 -0
  360. data/examples/tmp/tiles/carto_light_15_9693_18469.png +0 -0
  361. data/examples/tmp/tiles/carto_light_15_9693_18470.png +0 -0
  362. data/examples/tmp/tiles/carto_light_15_9693_18471.png +0 -0
  363. data/examples/tmp/tiles/carto_light_15_9693_18472.png +0 -0
  364. data/examples/tmp/tiles/carto_light_15_9693_18473.png +0 -0
  365. data/examples/tmp/tiles/carto_light_15_9693_18474.png +0 -0
  366. data/examples/tmp/tiles/carto_light_15_9693_18475.png +0 -0
  367. data/examples/tmp/tiles/carto_light_15_9693_18476.png +0 -0
  368. data/examples/tmp/tiles/carto_light_15_9693_18477.png +0 -0
  369. data/examples/tmp/tiles/carto_light_15_9693_18478.png +0 -0
  370. data/examples/tmp/tiles/carto_light_15_9693_18479.png +0 -0
  371. data/examples/tmp/tiles/carto_light_15_9693_18480.png +0 -0
  372. data/examples/tmp/tiles/carto_light_15_9693_18481.png +0 -0
  373. data/examples/tmp/tiles/carto_light_15_9693_18482.png +0 -0
  374. data/examples/tmp/tiles/carto_light_15_9693_18483.png +0 -0
  375. data/examples/tmp/tiles/carto_light_15_9693_18484.png +0 -0
  376. data/examples/tmp/tiles/carto_light_15_9693_18485.png +0 -0
  377. data/examples/tmp/tiles/carto_light_15_9693_18486.png +0 -0
  378. data/examples/tmp/tiles/carto_light_15_9693_18487.png +0 -0
  379. data/examples/tmp/tiles/carto_light_15_9693_18488.png +0 -0
  380. data/examples/tmp/tiles/carto_light_15_9693_18489.png +0 -0
  381. data/examples/tmp/tiles/carto_light_15_9693_18490.png +0 -0
  382. data/examples/tmp/tiles/carto_light_15_9693_18491.png +0 -0
  383. data/examples/tmp/tiles/carto_light_15_9693_18492.png +0 -0
  384. data/examples/tmp/tiles/carto_light_15_9693_18493.png +0 -0
  385. data/examples/tmp/tiles/carto_light_15_9693_18494.png +0 -0
  386. data/examples/tmp/tiles/carto_light_15_9693_18495.png +0 -0
  387. data/examples/tmp/tiles/carto_light_15_9693_18496.png +0 -0
  388. data/examples/tmp/tiles/carto_light_15_9693_18497.png +0 -0
  389. data/examples/tmp/tiles/carto_light_15_9693_18498.png +0 -0
  390. data/examples/tmp/tiles/carto_light_15_9693_18499.png +0 -0
  391. data/examples/tmp/tiles/carto_light_15_9693_18500.png +0 -0
  392. data/examples/tmp/tiles/carto_light_15_9693_18501.png +0 -0
  393. data/examples/tmp/tiles/carto_light_15_9693_18502.png +0 -0
  394. data/examples/tmp/tiles/carto_light_15_9693_18503.png +0 -0
  395. data/examples/tmp/tiles/carto_light_15_9693_18504.png +0 -0
  396. data/examples/tmp/tiles/carto_light_15_9693_18505.png +0 -0
  397. data/examples/tmp/tiles/carto_light_15_9693_18506.png +0 -0
  398. data/examples/tmp/tiles/carto_light_15_9693_18507.png +0 -0
  399. data/examples/tmp/tiles/carto_light_15_9693_18508.png +0 -0
  400. data/examples/tmp/tiles/carto_light_15_9693_18509.png +0 -0
  401. data/examples/tmp/tiles/carto_light_15_9693_18510.png +0 -0
  402. data/examples/tmp/tiles/carto_light_15_9693_18511.png +0 -0
  403. data/examples/tmp/tiles/carto_light_15_9693_18512.png +0 -0
  404. data/examples/tmp/tiles/carto_light_15_9693_18513.png +0 -0
  405. data/examples/tmp/tiles/carto_light_15_9693_18514.png +0 -0
  406. data/examples/tmp/tiles/carto_light_15_9693_18515.png +0 -0
  407. data/examples/tmp/tiles/carto_light_15_9693_18516.png +0 -0
  408. data/examples/tmp/tiles/carto_light_15_9693_18517.png +0 -0
  409. data/examples/tmp/tiles/carto_light_15_9693_18518.png +0 -0
  410. data/examples/tmp/tiles/carto_light_15_9693_18519.png +0 -0
  411. data/examples/tmp/tiles/carto_light_15_9693_18520.png +0 -0
  412. data/examples/tmp/tiles/carto_light_15_9693_18521.png +0 -0
  413. data/examples/tmp/tiles/carto_light_15_9693_18522.png +0 -0
  414. data/examples/tmp/tiles/carto_light_15_9693_18523.png +0 -0
  415. data/examples/tmp/tiles/carto_light_15_9693_18524.png +0 -0
  416. data/examples/tmp/tiles/carto_light_15_9693_18525.png +0 -0
  417. data/examples/tmp/tiles/carto_light_15_9693_18526.png +0 -0
  418. data/examples/tmp/tiles/carto_light_15_9693_18527.png +0 -0
  419. data/examples/tmp/tiles/carto_light_15_9693_18528.png +0 -0
  420. data/examples/tmp/tiles/carto_light_15_9693_18529.png +0 -0
  421. data/examples/tmp/tiles/carto_light_15_9693_18530.png +0 -0
  422. data/examples/tmp/tiles/carto_light_15_9693_18531.png +0 -0
  423. data/examples/tmp/tiles/carto_light_15_9693_18532.png +0 -0
  424. data/examples/tmp/tiles/carto_light_15_9693_18533.png +0 -0
  425. data/examples/tmp/tiles/carto_light_15_9693_18534.png +0 -0
  426. data/examples/tmp/tiles/carto_light_15_9693_18535.png +0 -0
  427. data/examples/tmp/tiles/carto_light_15_9693_18536.png +0 -0
  428. data/examples/tmp/tiles/carto_light_15_9693_18537.png +0 -0
  429. data/examples/tmp/tiles/carto_light_15_9693_18538.png +0 -0
  430. data/examples/tmp/tiles/carto_light_15_9693_18539.png +0 -0
  431. data/examples/tmp/tiles/carto_light_15_9693_18540.png +0 -0
  432. data/examples/tmp/tiles/carto_light_15_9693_18541.png +0 -0
  433. data/examples/tmp/tiles/carto_light_15_9693_18542.png +0 -0
  434. data/examples/tmp/tiles/carto_light_15_9693_18543.png +0 -0
  435. data/examples/tmp/tiles/carto_light_15_9693_18544.png +0 -0
  436. data/examples/tmp/tiles/carto_light_15_9693_18545.png +0 -0
  437. data/examples/tmp/tiles/carto_light_15_9693_18546.png +0 -0
  438. data/examples/tmp/tiles/carto_light_15_9693_18547.png +0 -0
  439. data/examples/tmp/tiles/carto_light_15_9693_18548.png +0 -0
  440. data/examples/tmp/tiles/carto_light_15_9693_18549.png +0 -0
  441. data/examples/tmp/tiles/carto_light_15_9693_18550.png +0 -0
  442. data/examples/tmp/tiles/carto_light_15_9693_18551.png +0 -0
  443. data/examples/tmp/tiles/carto_light_15_9693_18552.png +0 -0
  444. data/examples/tmp/tiles/carto_light_15_9693_18553.png +0 -0
  445. data/examples/tmp/tiles/carto_light_15_9693_18554.png +0 -0
  446. data/examples/tmp/tiles/carto_light_15_9693_18555.png +0 -0
  447. data/examples/tmp/tiles/carto_light_15_9693_18556.png +0 -0
  448. data/examples/tmp/tiles/carto_light_15_9693_18557.png +0 -0
  449. data/examples/tmp/tiles/carto_light_15_9693_18558.png +0 -0
  450. data/examples/tmp/tiles/carto_light_15_9693_18559.png +0 -0
  451. data/examples/tmp/tiles/carto_light_15_9693_18560.png +0 -0
  452. data/examples/tmp/tiles/carto_light_15_9693_18561.png +0 -0
  453. data/examples/tmp/tiles/carto_light_15_9693_18562.png +0 -0
  454. data/examples/tmp/tiles/carto_light_15_9693_18563.png +0 -0
  455. data/examples/tmp/tiles/carto_light_15_9693_18564.png +0 -0
  456. data/examples/tmp/tiles/carto_light_15_9693_18565.png +0 -0
  457. data/examples/tmp/tiles/carto_light_15_9693_18566.png +0 -0
  458. data/examples/tmp/tiles/carto_light_15_9693_18567.png +0 -0
  459. data/examples/tmp/tiles/carto_light_15_9693_18568.png +0 -0
  460. data/examples/tmp/tiles/carto_light_15_9693_18569.png +0 -0
  461. data/examples/tmp/tiles/carto_light_15_9693_18570.png +0 -0
  462. data/examples/tmp/tiles/carto_light_15_9693_18571.png +0 -0
  463. data/examples/tmp/tiles/carto_light_15_9693_18572.png +0 -0
  464. data/examples/tmp/tiles/carto_light_15_9693_18573.png +0 -0
  465. data/examples/tmp/tiles/carto_light_15_9693_18574.png +0 -0
  466. data/examples/tmp/tiles/carto_light_15_9693_18575.png +0 -0
  467. data/examples/tmp/tiles/carto_light_15_9693_18576.png +0 -0
  468. data/examples/tmp/tiles/carto_light_15_9693_18577.png +0 -0
  469. data/examples/tmp/tiles/carto_light_15_9693_18578.png +0 -0
  470. data/examples/tmp/tiles/carto_light_15_9693_18579.png +0 -0
  471. data/examples/tmp/tiles/carto_light_15_9693_18580.png +0 -0
  472. data/examples/tmp/tiles/carto_light_15_9693_18581.png +0 -0
  473. data/examples/tmp/tiles/carto_light_15_9693_18582.png +0 -0
  474. data/examples/tmp/tiles/carto_light_15_9693_18583.png +0 -0
  475. data/examples/tmp/tiles/carto_light_15_9693_18584.png +0 -0
  476. data/examples/tmp/tiles/carto_light_15_9693_18585.png +0 -0
  477. data/examples/tmp/tiles/carto_light_15_9693_18586.png +0 -0
  478. data/examples/tmp/tiles/carto_light_15_9693_18587.png +0 -0
  479. data/examples/tmp/tiles/carto_light_15_9693_18588.png +0 -0
  480. data/examples/tmp/tiles/carto_light_15_9693_18589.png +0 -0
  481. data/examples/tmp/tiles/carto_light_15_9693_18590.png +0 -0
  482. data/examples/tmp/tiles/carto_light_15_9693_18591.png +0 -0
  483. data/examples/tmp/tiles/carto_light_15_9693_18592.png +0 -0
  484. data/examples/tmp/tiles/carto_light_15_9693_18593.png +0 -0
  485. data/examples/tmp/tiles/carto_light_15_9693_18594.png +0 -0
  486. data/examples/tmp/tiles/carto_light_15_9693_18595.png +0 -0
  487. data/examples/tmp/tiles/carto_light_15_9693_18596.png +0 -0
  488. data/examples/tmp/tiles/carto_light_15_9693_18597.png +0 -0
  489. data/examples/tmp/tiles/carto_light_15_9693_18598.png +0 -0
  490. data/examples/tmp/tiles/carto_light_15_9693_18599.png +0 -0
  491. data/examples/tmp/tiles/carto_light_15_9693_18600.png +0 -0
  492. data/examples/tmp/tiles/carto_light_15_9693_18601.png +0 -0
  493. data/examples/tmp/tiles/carto_light_15_9693_18602.png +0 -0
  494. data/examples/tmp/tiles/carto_light_15_9693_18603.png +0 -0
  495. data/examples/tmp/tiles/carto_light_15_9693_18604.png +0 -0
  496. data/examples/tmp/tiles/carto_light_15_9693_18605.png +0 -0
  497. data/examples/tmp/tiles/carto_light_15_9693_18606.png +0 -0
  498. data/examples/tmp/tiles/carto_light_15_9693_18607.png +0 -0
  499. data/examples/tmp/tiles/carto_light_15_9693_18608.png +0 -0
  500. data/examples/tmp/tiles/carto_light_15_9693_18609.png +0 -0
  501. data/examples/tmp/tiles/carto_light_15_9693_18610.png +0 -0
  502. data/examples/tmp/tiles/carto_light_15_9693_18611.png +0 -0
  503. data/examples/tmp/tiles/carto_light_15_9693_18612.png +0 -0
  504. data/examples/tmp/tiles/carto_light_15_9693_18613.png +0 -0
  505. data/examples/tmp/tiles/carto_light_15_9693_18614.png +0 -0
  506. data/examples/tmp/tiles/carto_light_15_9693_18615.png +0 -0
  507. data/examples/tmp/tiles/carto_light_15_9693_18616.png +0 -0
  508. data/examples/tmp/tiles/carto_light_15_9693_18617.png +0 -0
  509. data/examples/tmp/tiles/carto_light_15_9693_18618.png +0 -0
  510. data/examples/tmp/tiles/carto_light_15_9693_18619.png +0 -0
  511. data/examples/tmp/tiles/carto_light_15_9693_18620.png +0 -0
  512. data/examples/tmp/tiles/carto_light_15_9693_18621.png +0 -0
  513. data/examples/tmp/tiles/carto_light_15_9693_18622.png +0 -0
  514. data/examples/tmp/tiles/carto_light_15_9693_18623.png +0 -0
  515. data/examples/tmp/tiles/carto_light_15_9693_18624.png +0 -0
  516. data/examples/tmp/tiles/carto_light_15_9693_18625.png +0 -0
  517. data/examples/tmp/tiles/carto_light_15_9693_18626.png +0 -0
  518. data/examples/tmp/tiles/carto_light_15_9693_18627.png +0 -0
  519. data/examples/tmp/tiles/carto_light_15_9693_18628.png +0 -0
  520. data/examples/tmp/tiles/carto_light_15_9693_18629.png +0 -0
  521. data/examples/tmp/tiles/carto_light_15_9693_18630.png +0 -0
  522. data/examples/tmp/tiles/carto_light_15_9693_18631.png +0 -0
  523. data/examples/tmp/tiles/carto_light_15_9693_18632.png +0 -0
  524. data/examples/tmp/tiles/carto_light_15_9693_18633.png +0 -0
  525. data/examples/tmp/tiles/carto_light_15_9693_18634.png +0 -0
  526. data/examples/tmp/tiles/carto_light_15_9693_18635.png +0 -0
  527. data/examples/tmp/tiles/carto_light_15_9693_18636.png +0 -0
  528. data/examples/tmp/tiles/carto_light_15_9693_18637.png +0 -0
  529. data/examples/tmp/tiles/carto_light_15_9693_18638.png +0 -0
  530. data/examples/tmp/tiles/carto_light_15_9693_18639.png +0 -0
  531. data/examples/tmp/tiles/carto_light_15_9693_18640.png +0 -0
  532. data/examples/tmp/tiles/carto_light_15_9693_18641.png +0 -0
  533. data/examples/tmp/tiles/carto_light_15_9693_18642.png +0 -0
  534. data/examples/tmp/tiles/carto_light_15_9693_18643.png +0 -0
  535. data/examples/tmp/tiles/carto_light_15_9693_18644.png +0 -0
  536. data/examples/tmp/tiles/carto_light_15_9693_18645.png +0 -0
  537. data/examples/tmp/tiles/carto_light_15_9693_18646.png +0 -0
  538. data/examples/tmp/tiles/carto_light_15_9693_18647.png +0 -0
  539. data/examples/tmp/tiles/carto_light_15_9693_18648.png +0 -0
  540. data/examples/tmp/tiles/carto_light_15_9693_18649.png +0 -0
  541. data/examples/tmp/tiles/carto_light_15_9693_18650.png +0 -0
  542. data/examples/tmp/tiles/carto_light_15_9693_18651.png +0 -0
  543. data/examples/tmp/tiles/carto_light_15_9693_18652.png +0 -0
  544. data/examples/tmp/tiles/carto_light_15_9693_18653.png +0 -0
  545. data/examples/tmp/tiles/carto_light_15_9693_18654.png +0 -0
  546. data/examples/tmp/tiles/carto_light_15_9693_18655.png +0 -0
  547. data/examples/tmp/tiles/carto_light_15_9693_18656.png +0 -0
  548. data/examples/tmp/tiles/carto_light_15_9693_18657.png +0 -0
  549. data/examples/tmp/tiles/carto_light_15_9693_18658.png +0 -0
  550. data/examples/tmp/tiles/carto_light_15_9693_18659.png +0 -0
  551. data/examples/tmp/tiles/carto_light_15_9693_18660.png +0 -0
  552. data/examples/tmp/tiles/carto_light_15_9693_18661.png +0 -0
  553. data/examples/tmp/tiles/carto_light_15_9693_18662.png +0 -0
  554. data/examples/tmp/tiles/carto_light_15_9693_18663.png +0 -0
  555. data/examples/tmp/tiles/carto_light_15_9693_18664.png +0 -0
  556. data/examples/tmp/tiles/carto_light_15_9693_18665.png +0 -0
  557. data/examples/tmp/tiles/carto_light_15_9693_18666.png +0 -0
  558. data/examples/tmp/tiles/carto_light_15_9693_18667.png +0 -0
  559. data/examples/tmp/tiles/carto_light_15_9693_18668.png +0 -0
  560. data/examples/tmp/tiles/carto_light_15_9693_18669.png +0 -0
  561. data/examples/tmp/tiles/carto_light_15_9693_18670.png +0 -0
  562. data/examples/tmp/tiles/carto_light_15_9693_18671.png +0 -0
  563. data/examples/tmp/tiles/carto_light_15_9693_18672.png +0 -0
  564. data/examples/tmp/tiles/carto_light_15_9693_18673.png +0 -0
  565. data/examples/tmp/tiles/carto_light_15_9693_18674.png +0 -0
  566. data/examples/tmp/tiles/carto_light_15_9693_18675.png +0 -0
  567. data/examples/tmp/tiles/carto_light_15_9693_18676.png +0 -0
  568. data/examples/tmp/tiles/carto_light_15_9693_18677.png +0 -0
  569. data/examples/tmp/tiles/carto_light_15_9693_18678.png +0 -0
  570. data/examples/tmp/tiles/carto_light_15_9693_18679.png +0 -0
  571. data/examples/tmp/tiles/carto_light_15_9693_18680.png +0 -0
  572. data/examples/tmp/tiles/carto_light_15_9693_18681.png +0 -0
  573. data/examples/tmp/tiles/carto_light_15_9693_18682.png +0 -0
  574. data/examples/tmp/tiles/carto_light_15_9693_18683.png +0 -0
  575. data/examples/tmp/tiles/carto_light_15_9693_18684.png +0 -0
  576. data/examples/tmp/tiles/carto_light_15_9693_18685.png +0 -0
  577. data/examples/tmp/tiles/carto_light_15_9693_18686.png +0 -0
  578. data/examples/tmp/tiles/carto_light_15_9693_18687.png +0 -0
  579. data/examples/tmp/tiles/carto_light_15_9693_18688.png +0 -0
  580. data/examples/tmp/tiles/carto_light_15_9693_18689.png +0 -0
  581. data/examples/tmp/tiles/carto_light_15_9693_18690.png +0 -0
  582. data/examples/tmp/tiles/carto_light_15_9693_18691.png +0 -0
  583. data/examples/tmp/tiles/carto_light_15_9693_18692.png +0 -0
  584. data/examples/tmp/tiles/carto_light_15_9693_18693.png +0 -0
  585. data/examples/tmp/tiles/carto_light_15_9693_18694.png +0 -0
  586. data/examples/tmp/tiles/carto_light_15_9693_18695.png +0 -0
  587. data/examples/tmp/tiles/carto_light_15_9693_18696.png +0 -0
  588. data/examples/tmp/tiles/carto_light_15_9693_18697.png +0 -0
  589. data/examples/tmp/tiles/carto_light_15_9693_18698.png +0 -0
  590. data/examples/tmp/tiles/carto_light_15_9693_18699.png +0 -0
  591. data/examples/tmp/tiles/carto_light_15_9693_18700.png +0 -0
  592. data/examples/tmp/tiles/carto_light_15_9693_18701.png +0 -0
  593. data/examples/tmp/tiles/carto_light_15_9693_18702.png +0 -0
  594. data/examples/tmp/tiles/carto_light_15_9693_18703.png +0 -0
  595. data/examples/tmp/tiles/carto_light_15_9693_18704.png +0 -0
  596. data/examples/tmp/tiles/carto_light_15_9693_18705.png +0 -0
  597. data/examples/tmp/tiles/carto_light_15_9693_18706.png +0 -0
  598. data/examples/tmp/tiles/carto_light_15_9693_18707.png +0 -0
  599. data/examples/tmp/tiles/carto_light_15_9693_18708.png +0 -0
  600. data/examples/tmp/tiles/carto_light_15_9693_18709.png +0 -0
  601. data/examples/tmp/tiles/carto_light_15_9693_18710.png +0 -0
  602. data/examples/tmp/tiles/carto_light_15_9693_18711.png +0 -0
  603. data/examples/tmp/tiles/carto_light_15_9693_18712.png +0 -0
  604. data/examples/tmp/tiles/carto_light_15_9693_18713.png +0 -0
  605. data/examples/tmp/tiles/carto_light_15_9693_18714.png +0 -0
  606. data/examples/tmp/tiles/carto_light_15_9693_18715.png +0 -0
  607. data/examples/tmp/tiles/carto_light_15_9693_18716.png +0 -0
  608. data/examples/tmp/tiles/carto_light_15_9693_18717.png +0 -0
  609. data/examples/tmp/tiles/carto_light_15_9693_18718.png +0 -0
  610. data/examples/tmp/tiles/carto_light_15_9693_18719.png +0 -0
  611. data/examples/tmp/tiles/carto_light_15_9693_18720.png +0 -0
  612. data/examples/tmp/tiles/carto_light_15_9693_18721.png +0 -0
  613. data/examples/tmp/tiles/carto_light_15_9693_18722.png +0 -0
  614. data/examples/tmp/tiles/carto_light_15_9693_18723.png +0 -0
  615. data/examples/tmp/tiles/carto_light_15_9693_18724.png +0 -0
  616. data/examples/tmp/tiles/carto_light_15_9693_18725.png +0 -0
  617. data/examples/tmp/tiles/carto_light_15_9693_18726.png +0 -0
  618. data/examples/tmp/tiles/carto_light_15_9693_18727.png +0 -0
  619. data/examples/tmp/tiles/carto_light_15_9693_18728.png +0 -0
  620. data/examples/tmp/tiles/carto_light_15_9693_18729.png +0 -0
  621. data/examples/tmp/tiles/carto_light_15_9693_18730.png +0 -0
  622. data/examples/tmp/tiles/carto_light_15_9693_18731.png +0 -0
  623. data/examples/tmp/tiles/carto_light_15_9693_18732.png +0 -0
  624. data/examples/tmp/tiles/carto_light_15_9693_18733.png +0 -0
  625. data/examples/tmp/tiles/carto_light_15_9693_18734.png +0 -0
  626. data/examples/tmp/tiles/carto_light_15_9693_18735.png +0 -0
  627. data/examples/tmp/tiles/carto_light_15_9693_18736.png +0 -0
  628. data/examples/tmp/tiles/carto_light_15_9693_18737.png +0 -0
  629. data/examples/tmp/tiles/carto_light_15_9693_18738.png +0 -0
  630. data/examples/tmp/tiles/carto_light_15_9693_18739.png +0 -0
  631. data/examples/tmp/tiles/carto_light_15_9693_18740.png +0 -0
  632. data/examples/tmp/tiles/carto_light_15_9693_18741.png +0 -0
  633. data/examples/tmp/tiles/carto_light_15_9693_18742.png +0 -0
  634. data/examples/tmp/tiles/carto_light_15_9693_18743.png +0 -0
  635. data/examples/tmp/tiles/carto_light_15_9693_18744.png +0 -0
  636. data/examples/tmp/tiles/carto_light_15_9693_18745.png +0 -0
  637. data/examples/tmp/tiles/carto_light_15_9693_18746.png +0 -0
  638. data/examples/tmp/tiles/carto_light_15_9693_18747.png +0 -0
  639. data/examples/tmp/tiles/carto_light_15_9693_18748.png +0 -0
  640. data/examples/tmp/tiles/carto_light_15_9693_18749.png +0 -0
  641. data/examples/tmp/tiles/carto_light_15_9693_18750.png +0 -0
  642. data/examples/tmp/tiles/carto_light_15_9693_18751.png +0 -0
  643. data/examples/tmp/tiles/carto_light_15_9693_18752.png +0 -0
  644. data/examples/tmp/tiles/carto_light_15_9693_18753.png +0 -0
  645. data/examples/tmp/tiles/carto_light_15_9693_18754.png +0 -0
  646. data/examples/tmp/tiles/carto_light_15_9693_18755.png +0 -0
  647. data/examples/tmp/tiles/carto_light_15_9693_18756.png +0 -0
  648. data/examples/tmp/tiles/carto_light_15_9693_18757.png +0 -0
  649. data/examples/tmp/tiles/carto_light_15_9693_18758.png +0 -0
  650. data/examples/tmp/tiles/carto_light_15_9693_18759.png +0 -0
  651. data/examples/tmp/tiles/carto_light_15_9693_18760.png +0 -0
  652. data/examples/tmp/tiles/carto_light_15_9693_18761.png +0 -0
  653. data/examples/tmp/tiles/carto_light_15_9693_18762.png +0 -0
  654. data/examples/tmp/tiles/carto_light_15_9693_18763.png +0 -0
  655. data/examples/tmp/tiles/carto_light_15_9693_18764.png +0 -0
  656. data/examples/tmp/tiles/carto_light_15_9693_18765.png +0 -0
  657. data/examples/tmp/tiles/carto_light_15_9693_18766.png +0 -0
  658. data/examples/tmp/tiles/carto_light_15_9693_18767.png +0 -0
  659. data/examples/tmp/tiles/carto_light_15_9693_18768.png +0 -0
  660. data/examples/tmp/tiles/carto_light_15_9693_18769.png +0 -0
  661. data/examples/tmp/tiles/carto_light_15_9693_18770.png +0 -0
  662. data/examples/tmp/tiles/carto_light_15_9693_18771.png +0 -0
  663. data/examples/tmp/tiles/carto_light_15_9693_18772.png +0 -0
  664. data/examples/tmp/tiles/carto_light_15_9693_18773.png +0 -0
  665. data/examples/tmp/tiles/carto_light_15_9693_18774.png +0 -0
  666. data/examples/tmp/tiles/carto_light_15_9693_18775.png +0 -0
  667. data/examples/tmp/tiles/carto_light_15_9693_18776.png +0 -0
  668. data/examples/tmp/tiles/carto_light_15_9693_18777.png +0 -0
  669. data/examples/tmp/tiles/carto_light_15_9693_18778.png +0 -0
  670. data/examples/tmp/tiles/carto_light_15_9693_18779.png +0 -0
  671. data/examples/tmp/tiles/carto_light_15_9693_18780.png +0 -0
  672. data/examples/tmp/tiles/carto_light_15_9693_18781.png +0 -0
  673. data/examples/tmp/tiles/carto_light_15_9693_18782.png +0 -0
  674. data/examples/tmp/tiles/carto_light_15_9693_18783.png +0 -0
  675. data/examples/tmp/tiles/carto_light_15_9693_18784.png +0 -0
  676. data/examples/tmp/tiles/carto_light_15_9693_18785.png +0 -0
  677. data/examples/tmp/tiles/carto_light_15_9693_18786.png +0 -0
  678. data/examples/tmp/tiles/carto_light_15_9693_18787.png +0 -0
  679. data/examples/tmp/tiles/carto_light_15_9693_18788.png +0 -0
  680. data/examples/tmp/tiles/carto_light_15_9693_18789.png +0 -0
  681. data/examples/tmp/tiles/carto_light_15_9693_18790.png +0 -0
  682. data/examples/tmp/tiles/carto_light_15_9693_18791.png +0 -0
  683. data/examples/tmp/tiles/carto_light_15_9693_18792.png +0 -0
  684. data/examples/tmp/tiles/carto_light_15_9693_18793.png +0 -0
  685. data/examples/tmp/tiles/carto_light_15_9693_18794.png +0 -0
  686. data/examples/tmp/tiles/carto_light_15_9693_18795.png +0 -0
  687. data/examples/tmp/tiles/carto_light_15_9693_18796.png +0 -0
  688. data/examples/tmp/tiles/carto_light_15_9693_18797.png +0 -0
  689. data/examples/tmp/tiles/carto_light_15_9693_18798.png +0 -0
  690. data/examples/tmp/tiles/carto_light_15_9693_18799.png +0 -0
  691. data/examples/tmp/tiles/carto_light_15_9693_18800.png +0 -0
  692. data/examples/tmp/tiles/carto_light_15_9693_18801.png +0 -0
  693. data/examples/tmp/tiles/carto_light_15_9693_18802.png +0 -0
  694. data/examples/tmp/tiles/carto_light_15_9693_18803.png +0 -0
  695. data/examples/tmp/tiles/carto_light_15_9693_18804.png +0 -0
  696. data/examples/tmp/tiles/carto_light_15_9693_18805.png +0 -0
  697. data/examples/tmp/tiles/carto_light_15_9693_18806.png +0 -0
  698. data/examples/tmp/tiles/carto_light_15_9693_18807.png +0 -0
  699. data/examples/tmp/tiles/carto_light_15_9693_18808.png +0 -0
  700. data/examples/tmp/tiles/carto_light_15_9693_18809.png +0 -0
  701. data/examples/tmp/tiles/carto_light_15_9693_18810.png +0 -0
  702. data/examples/tmp/tiles/carto_light_15_9693_18811.png +0 -0
  703. data/examples/tmp/tiles/carto_light_15_9693_18812.png +0 -0
  704. data/examples/tmp/tiles/carto_light_15_9693_18813.png +0 -0
  705. data/examples/tmp/tiles/carto_light_15_9693_18814.png +0 -0
  706. data/examples/tmp/tiles/carto_light_15_9693_18815.png +0 -0
  707. data/examples/tmp/tiles/carto_light_15_9693_18816.png +0 -0
  708. data/examples/tmp/tiles/carto_light_15_9693_18817.png +0 -0
  709. data/examples/tmp/tiles/carto_light_15_9693_18818.png +0 -0
  710. data/examples/tmp/tiles/carto_light_15_9693_18819.png +0 -0
  711. data/examples/tmp/tiles/carto_light_15_9693_18820.png +0 -0
  712. data/examples/tmp/tiles/carto_light_15_9693_18821.png +0 -0
  713. data/examples/tmp/tiles/carto_light_15_9693_18822.png +0 -0
  714. data/examples/tmp/tiles/carto_light_15_9693_18823.png +0 -0
  715. data/examples/tmp/tiles/carto_light_15_9693_18824.png +0 -0
  716. data/examples/tmp/tiles/carto_light_15_9693_18825.png +0 -0
  717. data/examples/tmp/tiles/carto_light_15_9693_18826.png +0 -0
  718. data/examples/tmp/tiles/carto_light_15_9693_18827.png +0 -0
  719. data/examples/tmp/tiles/carto_light_15_9693_18828.png +0 -0
  720. data/examples/tmp/tiles/carto_light_15_9693_18829.png +0 -0
  721. data/examples/tmp/tiles/carto_light_15_9693_18830.png +0 -0
  722. data/examples/tmp/tiles/carto_light_15_9693_18831.png +0 -0
  723. data/examples/tmp/tiles/carto_light_15_9693_18832.png +0 -0
  724. data/examples/tmp/tiles/carto_light_15_9693_18833.png +0 -0
  725. data/examples/tmp/tiles/carto_light_15_9693_18834.png +0 -0
  726. data/examples/tmp/tiles/carto_light_15_9693_18835.png +0 -0
  727. data/examples/tmp/tiles/carto_light_15_9693_18836.png +0 -0
  728. data/examples/tmp/tiles/carto_light_15_9693_18837.png +0 -0
  729. data/examples/tmp/tiles/carto_light_15_9693_18838.png +0 -0
  730. data/examples/tmp/tiles/carto_light_15_9693_18839.png +0 -0
  731. data/examples/tmp/tiles/carto_light_15_9693_18840.png +0 -0
  732. data/examples/tmp/tiles/carto_light_15_9693_18841.png +0 -0
  733. data/examples/tmp/tiles/carto_light_15_9693_18842.png +0 -0
  734. data/examples/tmp/tiles/carto_light_15_9693_18843.png +0 -0
  735. data/examples/tmp/tiles/carto_light_15_9693_18844.png +0 -0
  736. data/examples/tmp/tiles/carto_light_15_9693_18845.png +0 -0
  737. data/examples/tmp/tiles/carto_light_15_9693_18846.png +0 -0
  738. data/examples/tmp/tiles/carto_light_15_9693_18847.png +0 -0
  739. data/examples/tmp/tiles/carto_light_15_9693_18848.png +0 -0
  740. data/examples/tmp/tiles/carto_light_15_9693_18849.png +0 -0
  741. data/examples/tmp/tiles/carto_light_15_9693_18850.png +0 -0
  742. data/examples/tmp/tiles/carto_light_15_9693_18851.png +0 -0
  743. data/examples/tmp/tiles/carto_light_15_9693_18852.png +0 -0
  744. data/examples/tmp/tiles/carto_light_15_9693_18853.png +0 -0
  745. data/examples/tmp/tiles/carto_light_15_9693_18854.png +0 -0
  746. data/examples/tmp/tiles/carto_light_15_9693_18855.png +0 -0
  747. data/examples/tmp/tiles/carto_light_15_9693_18856.png +0 -0
  748. data/examples/tmp/tiles/carto_light_15_9693_18857.png +0 -0
  749. data/examples/tmp/tiles/carto_light_15_9693_18858.png +0 -0
  750. data/examples/tmp/tiles/carto_light_15_9693_18859.png +0 -0
  751. data/examples/tmp/tiles/carto_light_15_9693_18860.png +0 -0
  752. data/examples/tmp/tiles/carto_light_15_9693_18861.png +0 -0
  753. data/examples/tmp/tiles/carto_light_15_9693_18862.png +0 -0
  754. data/examples/tmp/tiles/carto_light_15_9693_18863.png +0 -0
  755. data/examples/tmp/tiles/carto_light_15_9693_18864.png +0 -0
  756. data/examples/tmp/tiles/carto_light_15_9693_18865.png +0 -0
  757. data/examples/tmp/tiles/carto_light_15_9693_18866.png +0 -0
  758. data/examples/tmp/tiles/carto_light_15_9693_18867.png +0 -0
  759. data/examples/tmp/tiles/carto_light_15_9693_18868.png +0 -0
  760. data/examples/tmp/tiles/carto_light_15_9693_18869.png +0 -0
  761. data/examples/tmp/tiles/carto_light_15_9693_18870.png +0 -0
  762. data/examples/tmp/tiles/carto_light_15_9693_18871.png +0 -0
  763. data/examples/tmp/tiles/carto_light_15_9693_18872.png +0 -0
  764. data/examples/tmp/tiles/carto_light_15_9693_18873.png +0 -0
  765. data/examples/tmp/tiles/carto_light_15_9693_18874.png +0 -0
  766. data/examples/tmp/tiles/carto_light_15_9693_18875.png +0 -0
  767. data/examples/tmp/tiles/carto_light_15_9693_18876.png +0 -0
  768. data/examples/tmp/tiles/carto_light_15_9693_18877.png +0 -0
  769. data/examples/tmp/tiles/carto_light_15_9693_18878.png +0 -0
  770. data/examples/tmp/tiles/carto_light_15_9693_18879.png +0 -0
  771. data/examples/tmp/tiles/carto_light_15_9693_18880.png +0 -0
  772. data/examples/tmp/tiles/carto_light_15_9693_18881.png +0 -0
  773. data/examples/tmp/tiles/carto_light_15_9693_18882.png +0 -0
  774. data/examples/tmp/tiles/carto_light_15_9693_18883.png +0 -0
  775. data/examples/tmp/tiles/carto_light_15_9693_18884.png +0 -0
  776. data/examples/tmp/tiles/carto_light_15_9693_18885.png +0 -0
  777. data/examples/tmp/tiles/carto_light_15_9693_18886.png +0 -0
  778. data/examples/tmp/tiles/carto_light_15_9693_18887.png +0 -0
  779. data/examples/tmp/tiles/carto_light_15_9693_18888.png +0 -0
  780. data/examples/tmp/tiles/carto_light_15_9693_18889.png +0 -0
  781. data/examples/tmp/tiles/carto_light_15_9693_18890.png +0 -0
  782. data/examples/tmp/tiles/carto_light_15_9693_18891.png +0 -0
  783. data/examples/tmp/tiles/carto_light_15_9693_18892.png +0 -0
  784. data/examples/tmp/tiles/carto_light_15_9693_18893.png +0 -0
  785. data/examples/tmp/tiles/carto_light_15_9693_18894.png +0 -0
  786. data/examples/tmp/tiles/carto_light_15_9693_18895.png +0 -0
  787. data/examples/tmp/tiles/carto_light_15_9693_18896.png +0 -0
  788. data/examples/tmp/tiles/carto_light_15_9693_18897.png +0 -0
  789. data/examples/tmp/tiles/carto_light_15_9693_18898.png +0 -0
  790. data/examples/tmp/tiles/carto_light_15_9693_18899.png +0 -0
  791. data/examples/tmp/tiles/carto_light_15_9693_18900.png +0 -0
  792. data/examples/tmp/tiles/carto_light_15_9693_18901.png +0 -0
  793. data/examples/tmp/tiles/carto_light_15_9693_18902.png +0 -0
  794. data/examples/tmp/tiles/carto_light_15_9693_18903.png +0 -0
  795. data/examples/tmp/tiles/carto_light_15_9693_18904.png +0 -0
  796. data/examples/tmp/tiles/carto_light_15_9693_18905.png +0 -0
  797. data/examples/tmp/tiles/carto_light_15_9693_18906.png +0 -0
  798. data/examples/tmp/tiles/carto_light_15_9693_18907.png +0 -0
  799. data/examples/tmp/tiles/carto_light_15_9693_18908.png +0 -0
  800. data/examples/tmp/tiles/carto_light_15_9693_18909.png +0 -0
  801. data/examples/tmp/tiles/carto_light_15_9693_18910.png +0 -0
  802. data/examples/tmp/tiles/carto_light_15_9693_18911.png +0 -0
  803. data/examples/tmp/tiles/carto_light_15_9693_18912.png +0 -0
  804. data/examples/tmp/tiles/carto_light_15_9693_18913.png +0 -0
  805. data/examples/tmp/tiles/carto_light_15_9693_18914.png +0 -0
  806. data/examples/tmp/tiles/carto_light_15_9693_18915.png +0 -0
  807. data/examples/tmp/tiles/carto_light_15_9693_18916.png +0 -0
  808. data/examples/tmp/tiles/carto_light_15_9693_18917.png +0 -0
  809. data/examples/tmp/tiles/carto_light_15_9693_18918.png +0 -0
  810. data/examples/tmp/tiles/carto_light_15_9693_18919.png +0 -0
  811. data/examples/tmp/tiles/carto_light_15_9693_18920.png +0 -0
  812. data/examples/tmp/tiles/carto_light_15_9693_18921.png +0 -0
  813. data/examples/tmp/tiles/carto_light_15_9693_18922.png +0 -0
  814. data/examples/tmp/tiles/carto_light_15_9693_18923.png +0 -0
  815. data/examples/tmp/tiles/carto_light_15_9693_18924.png +0 -0
  816. data/examples/tmp/tiles/carto_light_15_9693_18925.png +0 -0
  817. data/examples/tmp/tiles/carto_light_15_9693_18926.png +0 -0
  818. data/examples/tmp/tiles/carto_light_15_9693_18927.png +0 -0
  819. data/examples/tmp/tiles/carto_light_15_9693_18928.png +0 -0
  820. data/examples/tmp/tiles/carto_light_15_9693_18929.png +0 -0
  821. data/examples/tmp/tiles/carto_light_15_9693_18930.png +0 -0
  822. data/examples/tmp/tiles/carto_light_15_9693_18931.png +0 -0
  823. data/examples/tmp/tiles/carto_light_15_9693_18932.png +0 -0
  824. data/examples/tmp/tiles/carto_light_15_9693_18933.png +0 -0
  825. data/examples/tmp/tiles/carto_light_15_9693_18934.png +0 -0
  826. data/examples/tmp/tiles/carto_light_15_9693_18935.png +0 -0
  827. data/examples/tmp/tiles/carto_light_15_9693_18936.png +0 -0
  828. data/examples/tmp/tiles/carto_light_15_9693_18937.png +0 -0
  829. data/examples/tmp/tiles/carto_light_15_9693_18938.png +0 -0
  830. data/examples/tmp/tiles/carto_light_15_9693_18939.png +0 -0
  831. data/examples/tmp/tiles/carto_light_15_9693_18940.png +0 -0
  832. data/examples/tmp/tiles/carto_light_15_9693_18941.png +0 -0
  833. data/examples/tmp/tiles/carto_light_15_9693_18942.png +0 -0
  834. data/examples/tmp/tiles/carto_light_15_9693_18943.png +0 -0
  835. data/examples/tmp/tiles/carto_light_15_9693_18944.png +0 -0
  836. data/examples/tmp/tiles/carto_light_15_9693_18945.png +0 -0
  837. data/examples/tmp/tiles/carto_light_15_9693_18946.png +0 -0
  838. data/examples/tmp/tiles/carto_light_15_9693_18947.png +0 -0
  839. data/examples/tmp/tiles/carto_light_15_9693_18948.png +0 -0
  840. data/examples/tmp/tiles/carto_light_15_9693_18949.png +0 -0
  841. data/examples/tmp/tiles/carto_light_15_9693_18950.png +0 -0
  842. data/examples/tmp/tiles/carto_light_15_9693_18951.png +0 -0
  843. data/examples/tmp/tiles/carto_light_15_9693_18952.png +0 -0
  844. data/examples/tmp/tiles/carto_light_15_9693_18953.png +0 -0
  845. data/examples/tmp/tiles/carto_light_15_9693_18954.png +0 -0
  846. data/examples/tmp/tiles/carto_light_15_9693_18955.png +0 -0
  847. data/examples/tmp/tiles/carto_light_15_9693_18956.png +0 -0
  848. data/examples/tmp/tiles/carto_light_15_9693_18957.png +0 -0
  849. data/examples/tmp/tiles/carto_light_15_9693_18958.png +0 -0
  850. data/examples/tmp/tiles/carto_light_15_9693_18959.png +0 -0
  851. data/examples/tmp/tiles/carto_light_15_9693_18960.png +0 -0
  852. data/examples/tmp/tiles/carto_light_15_9693_18961.png +0 -0
  853. data/examples/tmp/tiles/carto_light_15_9693_18962.png +0 -0
  854. data/examples/tmp/tiles/carto_light_15_9693_18963.png +0 -0
  855. data/examples/tmp/tiles/carto_light_15_9693_18964.png +0 -0
  856. data/examples/tmp/tiles/carto_light_15_9693_18965.png +0 -0
  857. data/examples/tmp/tiles/carto_light_15_9693_18966.png +0 -0
  858. data/examples/tmp/tiles/carto_light_15_9693_18967.png +0 -0
  859. data/examples/tmp/tiles/carto_light_15_9693_18968.png +0 -0
  860. data/examples/tmp/tiles/carto_light_15_9693_18969.png +0 -0
  861. data/examples/tmp/tiles/carto_light_15_9693_18970.png +0 -0
  862. data/examples/tmp/tiles/carto_light_15_9693_18971.png +0 -0
  863. data/examples/tmp/tiles/carto_light_15_9693_18972.png +0 -0
  864. data/examples/tmp/tiles/carto_light_15_9693_18973.png +0 -0
  865. data/examples/tmp/tiles/carto_light_15_9693_18974.png +0 -0
  866. data/examples/tmp/tiles/carto_light_15_9693_18975.png +0 -0
  867. data/examples/tmp/tiles/carto_light_15_9693_18976.png +0 -0
  868. data/examples/tmp/tiles/carto_light_15_9693_18977.png +0 -0
  869. data/examples/tmp/tiles/carto_light_15_9693_18978.png +0 -0
  870. data/examples/tmp/tiles/carto_light_15_9693_18979.png +0 -0
  871. data/examples/tmp/tiles/carto_light_15_9693_18980.png +0 -0
  872. data/examples/tmp/tiles/carto_light_15_9693_18981.png +0 -0
  873. data/examples/tmp/tiles/carto_light_15_9693_18982.png +0 -0
  874. data/examples/tmp/tiles/carto_light_15_9693_18983.png +0 -0
  875. data/examples/tmp/tiles/carto_light_15_9693_18984.png +0 -0
  876. data/examples/tmp/tiles/carto_light_15_9693_18985.png +0 -0
  877. data/examples/tmp/tiles/carto_light_15_9693_18986.png +0 -0
  878. data/examples/tmp/tiles/carto_light_15_9693_18987.png +0 -0
  879. data/examples/tmp/tiles/carto_light_15_9693_18988.png +0 -0
  880. data/examples/tmp/tiles/carto_light_15_9693_18989.png +0 -0
  881. data/examples/tmp/tiles/carto_light_15_9693_18990.png +0 -0
  882. data/examples/tmp/tiles/carto_light_15_9693_18991.png +0 -0
  883. data/examples/tmp/tiles/carto_light_15_9693_18992.png +0 -0
  884. data/examples/tmp/tiles/carto_light_15_9693_18993.png +0 -0
  885. data/examples/tmp/tiles/carto_light_15_9693_18994.png +0 -0
  886. data/examples/tmp/tiles/carto_light_15_9693_18995.png +0 -0
  887. data/examples/tmp/tiles/carto_light_15_9693_18996.png +0 -0
  888. data/examples/tmp/tiles/carto_light_15_9693_18997.png +0 -0
  889. data/examples/tmp/tiles/carto_light_15_9693_18998.png +0 -0
  890. data/examples/tmp/tiles/carto_light_15_9693_18999.png +0 -0
  891. data/examples/tmp/tiles/carto_light_15_9693_19000.png +0 -0
  892. data/examples/tmp/tiles/carto_light_15_9693_19001.png +0 -0
  893. data/examples/tmp/tiles/carto_light_15_9693_19002.png +0 -0
  894. data/examples/tmp/tiles/carto_light_15_9693_19003.png +0 -0
  895. data/examples/tmp/tiles/carto_light_15_9693_19004.png +0 -0
  896. data/examples/tmp/tiles/carto_light_15_9693_19005.png +0 -0
  897. data/examples/tmp/tiles/carto_light_15_9693_19006.png +0 -0
  898. data/examples/tmp/tiles/carto_light_15_9693_19007.png +0 -0
  899. data/examples/tmp/tiles/carto_light_15_9693_19008.png +0 -0
  900. data/examples/tmp/tiles/carto_light_15_9693_19009.png +0 -0
  901. data/examples/tmp/tiles/carto_light_15_9693_19010.png +0 -0
  902. data/examples/tmp/tiles/carto_light_15_9693_19011.png +0 -0
  903. data/examples/tmp/tiles/carto_light_15_9693_19012.png +0 -0
  904. data/examples/tmp/tiles/carto_light_15_9693_19013.png +0 -0
  905. data/examples/tmp/tiles/carto_light_15_9693_19014.png +0 -0
  906. data/examples/tmp/tiles/carto_light_15_9693_19015.png +0 -0
  907. data/examples/tmp/tiles/carto_light_15_9693_19016.png +0 -0
  908. data/examples/tmp/tiles/carto_light_15_9693_19017.png +0 -0
  909. data/examples/tmp/tiles/carto_light_15_9693_19018.png +0 -0
  910. data/examples/tmp/tiles/carto_light_15_9693_19019.png +0 -0
  911. data/examples/tmp/tiles/carto_light_15_9693_19020.png +0 -0
  912. data/examples/tmp/tiles/carto_light_15_9693_19021.png +0 -0
  913. data/examples/tmp/tiles/carto_light_15_9693_19022.png +0 -0
  914. data/examples/tmp/tiles/carto_light_15_9693_19023.png +0 -0
  915. data/examples/tmp/tiles/carto_light_15_9693_19024.png +0 -0
  916. data/examples/tmp/tiles/carto_light_15_9693_19025.png +0 -0
  917. data/examples/tmp/tiles/carto_light_15_9693_19026.png +0 -0
  918. data/examples/tmp/tiles/carto_light_15_9693_19027.png +0 -0
  919. data/examples/tmp/tiles/carto_light_15_9693_19028.png +0 -0
  920. data/examples/tmp/tiles/carto_light_15_9693_19029.png +0 -0
  921. data/examples/tmp/tiles/carto_light_15_9693_19030.png +0 -0
  922. data/examples/tmp/tiles/carto_light_15_9693_19031.png +0 -0
  923. data/examples/tmp/tiles/carto_light_15_9693_19032.png +0 -0
  924. data/examples/tmp/tiles/carto_light_15_9693_19033.png +0 -0
  925. data/examples/tmp/tiles/carto_light_15_9693_19034.png +0 -0
  926. data/examples/tmp/tiles/carto_light_15_9693_19035.png +0 -0
  927. data/examples/tmp/tiles/carto_light_15_9693_19036.png +0 -0
  928. data/examples/tmp/tiles/carto_light_15_9693_19037.png +0 -0
  929. data/examples/tmp/tiles/carto_light_15_9693_19038.png +0 -0
  930. data/examples/tmp/tiles/carto_light_15_9693_19039.png +0 -0
  931. data/examples/tmp/tiles/carto_light_15_9693_19040.png +0 -0
  932. data/examples/tmp/tiles/carto_light_15_9693_19041.png +0 -0
  933. data/examples/tmp/tiles/carto_light_15_9693_19042.png +0 -0
  934. data/examples/tmp/tiles/carto_light_15_9693_19043.png +0 -0
  935. data/examples/tmp/tiles/carto_light_15_9693_19044.png +0 -0
  936. data/examples/tmp/tiles/carto_light_15_9693_19045.png +0 -0
  937. data/examples/tmp/tiles/carto_light_15_9693_19046.png +0 -0
  938. data/examples/tmp/tiles/carto_light_5_10_17.png +0 -0
  939. data/examples/tmp/tiles/carto_light_5_10_18.png +0 -0
  940. data/examples/tmp/tiles/carto_light_5_10_19.png +0 -0
  941. data/examples/tmp/tiles/carto_light_5_10_20.png +0 -0
  942. data/examples/tmp/tiles/carto_light_5_10_21.png +0 -0
  943. data/examples/tmp/tiles/carto_light_5_11_17.png +0 -0
  944. data/examples/tmp/tiles/carto_light_5_11_18.png +0 -0
  945. data/examples/tmp/tiles/carto_light_5_11_19.png +0 -0
  946. data/examples/tmp/tiles/carto_light_5_11_20.png +0 -0
  947. data/examples/tmp/tiles/carto_light_5_11_21.png +0 -0
  948. data/examples/tmp/tiles/carto_light_5_9_17.png +0 -0
  949. data/examples/tmp/tiles/carto_light_5_9_18.png +0 -0
  950. data/examples/tmp/tiles/carto_light_5_9_19.png +0 -0
  951. data/examples/tmp/tiles/carto_light_5_9_20.png +0 -0
  952. data/examples/tmp/tiles/carto_light_5_9_21.png +0 -0
  953. data/examples/verbose.txt +0 -11
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b9545a3b2d5b7dfbe786765e7f8ad378a7af124e934ba29a24d4cbbe411c285b
4
- data.tar.gz: e088ef217d3c3d90f3d9236633e22aa38e60daa4494b2e9ad24141b2fbd2c4c8
3
+ metadata.gz: 9112994f7952782be773dc2a7bb8659d96769903b6e9c81b28a563cb2caa80eb
4
+ data.tar.gz: 569e8be0ac09110cf30b3b888317a5079fc975176988ee8051b7f3419587b721
5
5
  SHA512:
6
- metadata.gz: eb648bfeec8226763a9cb20a2ee82080f45ffff36407fdc000948973c63809f259df5e8464f9849b80142f3cd32e0f230c5fbaa5df1d9091708ec01240c1f876
7
- data.tar.gz: 138e140b503095e790b221e39c27ea3d8384a0d6d059ec7c9e60ae9d8ae8a60097ec3f56c088c167e67393f641b5561b747dc976755204e60d31745502868189
6
+ metadata.gz: 85d38d16fdbc475ed5938c32a94819dabbdee7b4d706c369f8a84faec9753bf3765bcd5b4134a47ba62775ead533dad0c42a40cad46085d520f1333c0aacdb1c
7
+ data.tar.gz: ea38df19e492b85550edcebeb1e85157422e619bb7922cf4e49750bd9dc1978afc58e7a6163773de769aabfe60240803f062037c545774bf29f79bbae5324d4a
data/README.md CHANGED
@@ -32,10 +32,11 @@
32
32
 
33
33
  | Examples | Examples | Examples |
34
34
  | :----: | :----: | :--: |
35
+ | <img src="examples/nyc/nyc.png" height="250"> | <img src="examples/tokyo/tokyo.png" height="250"> | <img src="examples/parana/parana.png" height="250"> |
35
36
  | <img src="docs/examples/america.png" height="250"> | <img src="docs/examples/argentina_museum.png" height="250"> | <img src="docs/examples/museos_parana.png" height="250"> |
36
37
  | <img src="docs/examples/asia.png" height="250"> | <img src="docs/examples/europe.png" height="250"> | <img src="docs/examples/icecream_parana.png" height="250"> |
37
38
  | <img src="docs/examples/argentina_cities.png" height="250"> | <img src="docs/examples/tanzania_hydro.png" height="250"> | <img src="docs/examples/parana_polygon.png" height="250"> |
38
- | <img src="docs/examples/parana_carto_dark.png" height="250"> | <img src="docs/examples/ramirez_avenue.png" height="250"> | |
39
+ | <img src="docs/examples/parana_carto_dark.png" height="250"> | <img src="docs/examples/ramirez_avenue.png" height="250"> | <img src="examples/paris/paris.png" height="250"> |
39
40
 
40
41
  ---
41
42
 
@@ -59,7 +59,7 @@ module GD
59
59
  "https://services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/#{z}/#{y}/#{x}"
60
60
 
61
61
  # ==============================
62
- # STAMEN
62
+ # STAMEN 503
63
63
  # ==============================
64
64
  when :stamen_toner
65
65
  "https://stamen-tiles.a.ssl.fastly.net/toner/#{z}/#{x}/#{y}.png"
@@ -80,7 +80,7 @@ module GD
80
80
  "https://a.tile.opentopomap.org/#{z}/#{x}/#{y}.png"
81
81
 
82
82
  # ==============================
83
- # Wikimedia
83
+ # Wikimedia 403
84
84
  # ==============================
85
85
  when :wikimedia
86
86
  "https://maps.wikimedia.org/osm-intl/#{z}/#{x}/#{y}.png"
@@ -0,0 +1,57 @@
1
+ module GD
2
+ module GIS
3
+ class Classifier
4
+ def self.road(feature)
5
+ tags = feature.properties || {}
6
+
7
+ case tags["highway"]
8
+ when "motorway", "trunk"
9
+ :motorway
10
+ when "primary", "primary_link"
11
+ :primary
12
+ when "secondary", "secondary_link"
13
+ :secondary
14
+ when "tertiary"
15
+ :street
16
+ when "residential", "living_street"
17
+ :street
18
+ when "service", "track"
19
+ :minor
20
+ else
21
+ nil
22
+ end
23
+ end
24
+
25
+ def self.water?(feature)
26
+ p = feature.properties
27
+
28
+ p["waterway"] ||
29
+ p["natural"] == "water" ||
30
+ p["fclass"] == "river" ||
31
+ p["fclass"] == "stream"
32
+ end
33
+
34
+ def self.rail?(feature)
35
+ tags = feature.properties || {}
36
+ tags["railway"]
37
+ end
38
+
39
+ def self.park?(feature)
40
+ tags = feature.properties || {}
41
+ %w[park recreation_ground garden].include?(tags["leisure"]) ||
42
+ %w[park grass forest].include?(tags["landuse"])
43
+ end
44
+
45
+ def self.water_kind(feature)
46
+ p = feature.properties
47
+
48
+ case p["waterway"] || p["fclass"]
49
+ when "river" then :river
50
+ when "stream" then :stream
51
+ else :minor
52
+ end
53
+ end
54
+
55
+ end
56
+ end
57
+ end
@@ -0,0 +1,19 @@
1
+ #!/usr/bin/env bash
2
+
3
+ set -e
4
+
5
+ OUT="all_ruby_sources.txt"
6
+ > "$OUT"
7
+
8
+ echo "### Ruby sources dump ($(date))" >> "$OUT"
9
+ echo >> "$OUT"
10
+
11
+ find . -type f -name "*.rb" | sort | while read -r file; do
12
+ echo "===== FILE: $file =====" >> "$OUT"
13
+ echo >> "$OUT"
14
+ cat "$file" >> "$OUT"
15
+ echo >> "$OUT"
16
+ echo >> "$OUT"
17
+ done
18
+
19
+ echo "Wrote $OUT"
@@ -0,0 +1,152 @@
1
+ module GD
2
+ module GIS
3
+ class Feature
4
+ attr_reader :geometry, :properties
5
+
6
+ def initialize(geometry, properties)
7
+ @geometry = geometry
8
+ @properties = properties || {}
9
+ end
10
+
11
+ # -------------------------------------------------
12
+ # Main draw entry point
13
+ # -------------------------------------------------
14
+ def draw(img, projection, color, width, layer = nil)
15
+ case geometry["type"]
16
+ when "Polygon"
17
+ if layer == :water
18
+ draw_polygon_outline(img, projection, geometry["coordinates"], color, width)
19
+ elsif layer.is_a?(Hash)
20
+ draw_polygon_styled(img, projection, geometry["coordinates"], layer)
21
+ else
22
+ draw_polygon(img, projection, geometry["coordinates"], color)
23
+ end
24
+ when "MultiPolygon"
25
+ geometry["coordinates"].each do |poly|
26
+ if layer == :water
27
+ draw_polygon_outline(img, projection, poly, color, width)
28
+ elsif layer.is_a?(Hash)
29
+ draw_polygon_styled(img, projection, poly, layer)
30
+ else
31
+ draw_polygon(img, projection, poly, color)
32
+ end
33
+ end
34
+ when "LineString", "MultiLineString"
35
+ draw_lines(img, projection, geometry["coordinates"], color, width)
36
+ end
37
+ end
38
+
39
+ # -------------------------------------------------
40
+ # Styled polygon rendering (fill + stroke)
41
+ # -------------------------------------------------
42
+ def draw_polygon_styled(img, projection, rings, style)
43
+ fill = style[:fill] ? GD::Color.rgb(*style[:fill]) : nil
44
+ stroke = style[:stroke] ? GD::Color.rgb(*style[:stroke]) : nil
45
+
46
+ rings.each do |ring|
47
+ pts = ring.map do |lon,lat|
48
+ x,y = projection.call(lon,lat)
49
+ next if x.nil? || y.nil?
50
+ [x.to_i, y.to_i]
51
+ end.compact
52
+
53
+ pts = pts.chunk_while { |a,b| a == b }.map(&:first)
54
+ next if pts.length < 3
55
+
56
+ img.filled_polygon(pts, fill) if fill
57
+
58
+ if stroke
59
+ pts.each_cons(2) { |a,b| img.line(a[0],a[1], b[0],b[1], stroke) }
60
+ img.line(pts.last[0], pts.last[1], pts.first[0], pts.first[1], stroke)
61
+ end
62
+ end
63
+ end
64
+
65
+ # -------------------------------------------------
66
+ # Polygon outline (used for water)
67
+ # -------------------------------------------------
68
+ def draw_polygon_outline(img, projection, rings, color, width)
69
+ return if color.nil?
70
+
71
+ rings.each do |ring|
72
+ pts = ring.map do |lon, lat|
73
+ x, y = projection.call(lon, lat)
74
+ [x.to_i, y.to_i] if x && y
75
+ end.compact
76
+
77
+ next if pts.size < 2
78
+
79
+ img.lines(pts, color, width)
80
+ end
81
+ end
82
+
83
+ # -------------------------------------------------
84
+ # Legacy filled polygon (single color)
85
+ # -------------------------------------------------
86
+ def draw_polygon(img, projection, rings, color)
87
+ return if color.nil?
88
+
89
+ rings.each do |ring|
90
+ pts = ring.map do |lon,lat|
91
+ x,y = projection.call(lon,lat)
92
+ next if x.nil? || y.nil?
93
+ [x.to_i, y.to_i]
94
+ end.compact
95
+
96
+ pts = pts.chunk_while { |a,b| a == b }.map(&:first)
97
+ next if pts.length < 3
98
+
99
+ img.filled_polygon(pts, color)
100
+ end
101
+ end
102
+
103
+ # -------------------------------------------------
104
+ # Lines
105
+ # -------------------------------------------------
106
+ def draw_lines(img, projection, coords, color, width)
107
+ return if color.nil?
108
+
109
+ if coords.first.is_a?(Array) && coords.first.first.is_a?(Array)
110
+ coords.each { |line| draw_line(img, projection, line, color, width) }
111
+ else
112
+ draw_line(img, projection, coords, color, width)
113
+ end
114
+ end
115
+
116
+ def draw_line(img, projection, coords, color, width)
117
+ return if color.nil?
118
+
119
+ coords.each_cons(2) do |(lon1,lat1),(lon2,lat2)|
120
+ x1,y1 = projection.call(lon1,lat1)
121
+ x2,y2 = projection.call(lon2,lat2)
122
+ img.line(x1, y1, x2, y2, color, thickness: width)
123
+ end
124
+ end
125
+
126
+ # -------------------------------------------------
127
+ # Metadata helpers
128
+ # -------------------------------------------------
129
+ def label
130
+ properties["name:ja"] || properties["name"]
131
+ end
132
+
133
+ def centroid
134
+ pts = []
135
+
136
+ case geometry["type"]
137
+ when "LineString"
138
+ pts = geometry["coordinates"]
139
+ when "MultiLineString"
140
+ pts = geometry["coordinates"].flatten(1)
141
+ end
142
+
143
+ return nil if pts.empty?
144
+
145
+ lon = pts.map(&:first).sum / pts.size
146
+ lat = pts.map(&:last).sum / pts.size
147
+
148
+ [lon, lat]
149
+ end
150
+ end
151
+ end
152
+ end
@@ -1,69 +1,16 @@
1
1
  require "json"
2
+ require_relative "feature"
2
3
 
3
4
  module GD
4
5
  module GIS
5
6
  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
7
+ def self.load(path)
8
+ data = JSON.parse(File.read(path))
9
+ features = data["features"]
10
+ features.map do |f|
11
+ Feature.new(f["geometry"], f["properties"])
39
12
  end
40
13
  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
14
  end
68
15
  end
69
16
  end
data/lib/gd/gis/map.rb CHANGED
@@ -1,58 +1,91 @@
1
- require "gd"
2
1
  require_relative "basemap"
3
2
  require_relative "projection"
4
- require_relative "geometry"
3
+ require_relative "classifier"
4
+ require_relative "layer_geojson"
5
5
  require_relative "layer_points"
6
6
  require_relative "layer_lines"
7
7
  require_relative "layer_polygons"
8
- require_relative "layer_geojson"
9
8
 
10
9
  module GD
11
10
  module GIS
12
11
  class Map
13
12
  TILE_SIZE = 256
14
13
 
14
+ attr_reader :image
15
+ attr_accessor :style
16
+
15
17
  def initialize(bbox:, zoom:, basemap:)
16
- @bbox = bbox
17
- @zoom = zoom
18
- @basemap = Basemap.new(zoom, bbox, basemap)
19
- @layers = []
18
+ @bbox = bbox
19
+ @zoom = zoom
20
+ @basemap = Basemap.new(zoom, bbox, basemap)
21
+
22
+ # 🔒 DO NOT CHANGE — this is the working GeoJSON pipeline
23
+ @layers = {
24
+ motorway: [],
25
+ primary: [],
26
+ secondary: [],
27
+ street: [],
28
+ minor: [],
29
+ rail: [],
30
+ water: [],
31
+ park: []
32
+ }
33
+
34
+ # 🆕 overlay layers
35
+ @points_layers = []
36
+ @lines_layers = []
37
+ @polygons_layers = []
38
+
39
+ @style = nil
20
40
  end
21
41
 
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])
27
- @layers << PointsLayer.new(
28
- data,
29
- lon: lon,
30
- lat: lat,
31
- icon: icon,
32
- label: label,
33
- font: font,
34
- size: size,
35
- color: color
36
- )
42
+ # -----------------------------------
43
+ # GeoJSON input (unchanged)
44
+ # -----------------------------------
45
+
46
+ def add_geojson(path)
47
+ features = LayerGeoJSON.load(path)
48
+
49
+ features.each do |feature|
50
+ if Classifier.water?(feature)
51
+ kind = Classifier.water_kind(feature)
52
+ @layers[:water] << [kind, feature]
53
+
54
+ elsif Classifier.park?(feature)
55
+ @layers[:park] << feature
56
+
57
+ elsif Classifier.rail?(feature)
58
+ @layers[:rail] << feature
59
+
60
+ elsif type = Classifier.road(feature)
61
+ @layers[type] << feature
62
+ end
63
+ end
37
64
  end
38
65
 
39
- def add_lines(features, stroke:, width:)
40
- @layers << LinesLayer.new(features, stroke: stroke, width: width)
66
+ # -----------------------------------
67
+ # Overlay layers
68
+ # -----------------------------------
69
+
70
+ def add_points(data, **opts)
71
+ @points_layers << GD::GIS::PointsLayer.new(data, **opts)
41
72
  end
42
73
 
43
- def add_polygons(polygons, fill:, stroke: nil, width: nil)
44
- @layers << PolygonsLayer.new(polygons, fill: fill, stroke: stroke, width: width)
74
+ def add_lines(features, **opts)
75
+ @lines_layers << GD::GIS::LinesLayer.new(features, **opts)
45
76
  end
46
77
 
47
- def add_geojson(path, **options)
48
- @layers << LayerGeoJSON.new(path, options)
78
+ def add_polygons(polygons, **opts)
79
+ @polygons_layers << GD::GIS::PolygonsLayer.new(polygons, **opts)
49
80
  end
50
81
 
51
- # ------------------------------
82
+ # -----------------------------------
52
83
  # Rendering
53
- # ------------------------------
84
+ # -----------------------------------
85
+
86
+ def render
87
+ raise "map.style must be set" unless @style
54
88
 
55
- def render(path = "map.png")
56
89
  tiles, x_min, y_min = @basemap.fetch_tiles
57
90
 
58
91
  xs = tiles.map { |t| t[0] }
@@ -67,42 +100,92 @@ module GD
67
100
  origin_x = x_min * TILE_SIZE
68
101
  origin_y = y_min * TILE_SIZE
69
102
 
70
- @img = GD::Image.new(width, height)
71
- @img.alpha_blending = true
72
- @img.save_alpha = true
103
+ @image = GD::Image.new(width, height)
104
+ @image.antialias(false)
73
105
 
74
- # Draw basemap
106
+ # Basemap
75
107
  tiles.each do |x, y, file|
76
108
  tile = GD::Image.open(file)
77
- cx = x - x_min
78
- cy = y - y_min
79
- @img.copy(tile, cx * TILE_SIZE, cy * TILE_SIZE, 0, 0, TILE_SIZE, TILE_SIZE)
109
+ @image.copy(
110
+ tile,
111
+ (x - x_min) * TILE_SIZE,
112
+ (y - y_min) * TILE_SIZE,
113
+ 0, 0, TILE_SIZE, TILE_SIZE
114
+ )
80
115
  end
81
116
 
82
- # WebMercator projection → local pixels
83
- scale = TILE_SIZE * (2 ** @zoom)
84
-
85
117
  projection = lambda do |lon, lat|
86
- x = (lon + 180.0) / 360.0 * scale
87
-
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
90
-
91
- [
92
- (x - origin_x).round,
93
- (y - origin_y).round
94
- ]
118
+ x, y = GD::GIS::Projection.lonlat_to_global_px(lon, lat, @zoom)
119
+ [(x - origin_x).round, (y - origin_y).round]
95
120
  end
96
121
 
97
- # Draw layers
98
- @layers.each do |layer|
99
- layer.render!(@img, projection)
122
+ # 1️⃣ Semantic GeoJSON layers (this is what was working)
123
+ @style.order.each do |kind|
124
+ draw_layer(kind, projection)
100
125
  end
126
+
127
+ # 2️⃣ Generic overlays
128
+ @polygons_layers.each { |l| l.render!(@image, projection) }
129
+ @lines_layers.each { |l| l.render!(@image, projection) }
130
+ @points_layers.each { |l| l.render!(@image, projection) }
101
131
  end
102
132
 
103
133
  def save(path)
104
- @img.save(path)
134
+ @image.save(path)
105
135
  end
136
+
137
+ def draw_layer(kind, projection)
138
+ items = @layers[kind]
139
+ return if items.nil? || items.empty?
140
+
141
+ style =
142
+ case kind
143
+ when :street, :primary, :motorway, :secondary, :minor
144
+ @style.roads[kind]
145
+ when :rail then @style.rails
146
+ when :water then @style.water
147
+ when :park then @style.parks
148
+ else
149
+ @style.extra[kind] if @style.respond_to?(:extra)
150
+ end
151
+
152
+ return if style.nil?
153
+
154
+ items.each do |item|
155
+ if kind == :water
156
+ water_kind, f = item
157
+
158
+ width =
159
+ case water_kind
160
+ when :river then 2.5
161
+ when :stream then 1.5
162
+ else 1
163
+ end
164
+
165
+ if style[:stroke]
166
+ color = GD::Color.rgb(*style[:stroke])
167
+ f.draw(@image, projection, color, width, :water)
168
+ end
169
+
170
+ else
171
+ f = item
172
+ geom = f.geometry["type"]
173
+
174
+ if geom == "Polygon" || geom == "MultiPolygon"
175
+ # THIS is the critical fix
176
+ f.draw(@image, projection, nil, nil, style)
177
+ else
178
+ if style[:stroke]
179
+ color = GD::Color.rgb(*style[:stroke])
180
+ width = style[:stroke_width] || 1
181
+ f.draw(@image, projection, color, width)
182
+ end
183
+ end
184
+ end
185
+ end
186
+ end
187
+
188
+
106
189
  end
107
190
  end
108
191
  end
@@ -0,0 +1,49 @@
1
+ module GD
2
+ module GIS
3
+ class Style
4
+ DARK = Style.new(
5
+ roads: {
6
+ motorway: {
7
+ stroke: [255,255,255],
8
+ stroke_width: 10,
9
+ fill: [60,60,60],
10
+ fill_width: 6
11
+ },
12
+ primary: {
13
+ stroke: [200,200,200],
14
+ stroke_width: 7,
15
+ fill: [80,80,80],
16
+ fill_width: 4
17
+ },
18
+ street: {
19
+ stroke: [120,120,120],
20
+ stroke_width: 1
21
+ }
22
+ },
23
+ rail: {
24
+ stroke: [255,255,255],
25
+ stroke_width: 6,
26
+ fill: [220,50,50],
27
+ fill_width: 4,
28
+ center: [255,255,255],
29
+ center_width: 1
30
+ },
31
+ water: {
32
+ fill: [40,80,120],
33
+ stroke: [100,160,220]
34
+ },
35
+ park: {
36
+ fill: [40,80,40]
37
+ },
38
+ order: [
39
+ :water,
40
+ :park,
41
+ :street,
42
+ :primary,
43
+ :motorway,
44
+ :rail
45
+ ]
46
+ )
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,49 @@
1
+ module GD
2
+ module GIS
3
+ class Style
4
+ LIGHT = Style.new(
5
+ roads: {
6
+ motorway: {
7
+ stroke: [100,100,100],
8
+ stroke_width: 10,
9
+ fill: [245,245,245],
10
+ fill_width: 6
11
+ },
12
+ primary: {
13
+ stroke: [140,140,140],
14
+ stroke_width: 7,
15
+ fill: [240,240,240],
16
+ fill_width: 4
17
+ },
18
+ street: {
19
+ stroke: [220,220,220],
20
+ stroke_width: 1
21
+ }
22
+ },
23
+ rail: {
24
+ stroke: [80,80,80],
25
+ stroke_width: 6,
26
+ fill: [230,70,70],
27
+ fill_width: 4,
28
+ center: [255,255,255],
29
+ center_width: 1
30
+ },
31
+ water: {
32
+ fill: [168,208,255],
33
+ stroke: [120,180,240]
34
+ },
35
+ park: {
36
+ fill: [205,238,203]
37
+ },
38
+ order: [
39
+ :water,
40
+ :park,
41
+ :street,
42
+ :primary,
43
+ :motorway,
44
+ :rail
45
+ ]
46
+ )
47
+ end
48
+ end
49
+ end