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.
- checksums.yaml +4 -4
- data/README.md +2 -1
- data/lib/gd/gis/basemap.rb +2 -2
- data/lib/gd/gis/classifier.rb +57 -0
- data/lib/gd/gis/dump.sh +19 -0
- data/lib/gd/gis/feature.rb +152 -0
- data/lib/gd/gis/layer_geojson.rb +6 -59
- data/lib/gd/gis/map.rb +137 -54
- data/lib/gd/gis/style/dark.rb +49 -0
- data/lib/gd/gis/style/light.rb +49 -0
- data/lib/gd/gis/style/solarized.rb +49 -0
- data/lib/gd/gis/style.rb +45 -0
- data/lib/gd/gis.rb +12 -1
- metadata +12 -944
- data/examples/argentina.rb +0 -82
- data/examples/argentina_cities.rb +0 -89
- data/examples/argentina_museums.rb +0 -70
- data/examples/asia-peaks.rb +0 -42
- data/examples/avenue_ramirez.rb +0 -44
- data/examples/europe-peaks.rb +0 -29
- data/examples/flag.png +0 -0
- data/examples/fonts/DejaVu Fonts License.txt +0 -97
- data/examples/fonts/DejaVuSans-Bold.ttf +0 -0
- data/examples/fonts/DejaVuSans-BoldOblique.ttf +0 -0
- data/examples/fonts/DejaVuSans-ExtraLight.ttf +0 -0
- data/examples/fonts/DejaVuSans-Oblique.ttf +0 -0
- data/examples/fonts/DejaVuSans.ttf +0 -0
- data/examples/fonts/DejaVuSansCondensed-Bold.ttf +0 -0
- data/examples/fonts/DejaVuSansCondensed-BoldOblique.ttf +0 -0
- data/examples/fonts/DejaVuSansCondensed-Oblique.ttf +0 -0
- data/examples/fonts/DejaVuSansCondensed.ttf +0 -0
- data/examples/ice-cream-shops.rb +0 -37
- data/examples/localidades.json +0 -1
- data/examples/map.png +0 -0
- data/examples/mountains.rb +0 -98
- data/examples/museum.png +0 -0
- data/examples/museums.csv +0 -1183
- data/examples/output/argentina.png +0 -0
- data/examples/output/argentina_localidades.png +0 -0
- data/examples/parana-city.rb +0 -29
- data/examples/parana.osm +0 -186897
- data/examples/parana.png +0 -0
- data/examples/parana_museums.rb +0 -48
- data/examples/parana_streets.geojson +0 -1
- data/examples/parana_streets.rb +0 -48
- data/examples/streets.geojson +0 -1
- data/examples/streets.png +0 -0
- data/examples/streets_geojson.rb +0 -33
- data/examples/tanzania.rb +0 -32
- data/examples/target.rb +0 -19
- data/examples/the_america_peaks.rb +0 -43
- data/examples/tmp/tiles/7_37_71.png +0 -0
- data/examples/tmp/tiles/7_37_72.png +0 -0
- data/examples/tmp/tiles/7_37_73.png +0 -0
- data/examples/tmp/tiles/7_37_74.png +0 -0
- data/examples/tmp/tiles/7_37_75.png +0 -0
- data/examples/tmp/tiles/7_37_76.png +0 -0
- data/examples/tmp/tiles/7_37_77.png +0 -0
- data/examples/tmp/tiles/7_37_78.png +0 -0
- data/examples/tmp/tiles/7_37_79.png +0 -0
- data/examples/tmp/tiles/7_37_80.png +0 -0
- data/examples/tmp/tiles/7_37_81.png +0 -0
- data/examples/tmp/tiles/7_37_82.png +0 -0
- data/examples/tmp/tiles/7_37_83.png +0 -0
- data/examples/tmp/tiles/7_37_84.png +0 -0
- data/examples/tmp/tiles/7_37_85.png +0 -0
- data/examples/tmp/tiles/7_37_86.png +0 -0
- data/examples/tmp/tiles/7_37_87.png +0 -0
- data/examples/tmp/tiles/7_38_71.png +0 -0
- data/examples/tmp/tiles/7_38_72.png +0 -0
- data/examples/tmp/tiles/7_38_73.png +0 -0
- data/examples/tmp/tiles/7_38_74.png +0 -0
- data/examples/tmp/tiles/7_38_75.png +0 -0
- data/examples/tmp/tiles/7_38_76.png +0 -0
- data/examples/tmp/tiles/7_38_77.png +0 -0
- data/examples/tmp/tiles/7_38_78.png +0 -0
- data/examples/tmp/tiles/7_38_79.png +0 -0
- data/examples/tmp/tiles/7_38_80.png +0 -0
- data/examples/tmp/tiles/7_38_81.png +0 -0
- data/examples/tmp/tiles/7_38_82.png +0 -0
- data/examples/tmp/tiles/7_38_83.png +0 -0
- data/examples/tmp/tiles/7_38_84.png +0 -0
- data/examples/tmp/tiles/7_38_85.png +0 -0
- data/examples/tmp/tiles/7_38_86.png +0 -0
- data/examples/tmp/tiles/7_38_87.png +0 -0
- data/examples/tmp/tiles/7_39_71.png +0 -0
- data/examples/tmp/tiles/7_39_72.png +0 -0
- data/examples/tmp/tiles/7_39_73.png +0 -0
- data/examples/tmp/tiles/7_39_74.png +0 -0
- data/examples/tmp/tiles/7_39_75.png +0 -0
- data/examples/tmp/tiles/7_39_76.png +0 -0
- data/examples/tmp/tiles/7_39_77.png +0 -0
- data/examples/tmp/tiles/7_39_78.png +0 -0
- data/examples/tmp/tiles/7_39_79.png +0 -0
- data/examples/tmp/tiles/7_39_80.png +0 -0
- data/examples/tmp/tiles/7_39_81.png +0 -0
- data/examples/tmp/tiles/7_39_82.png +0 -0
- data/examples/tmp/tiles/7_39_83.png +0 -0
- data/examples/tmp/tiles/7_39_84.png +0 -0
- data/examples/tmp/tiles/7_39_85.png +0 -0
- data/examples/tmp/tiles/7_39_86.png +0 -0
- data/examples/tmp/tiles/7_39_87.png +0 -0
- data/examples/tmp/tiles/7_40_71.png +0 -0
- data/examples/tmp/tiles/7_40_72.png +0 -0
- data/examples/tmp/tiles/7_40_73.png +0 -0
- data/examples/tmp/tiles/7_40_74.png +0 -0
- data/examples/tmp/tiles/7_40_75.png +0 -0
- data/examples/tmp/tiles/7_40_76.png +0 -0
- data/examples/tmp/tiles/7_40_77.png +0 -0
- data/examples/tmp/tiles/7_40_78.png +0 -0
- data/examples/tmp/tiles/7_40_79.png +0 -0
- data/examples/tmp/tiles/7_40_80.png +0 -0
- data/examples/tmp/tiles/7_40_81.png +0 -0
- data/examples/tmp/tiles/7_40_82.png +0 -0
- data/examples/tmp/tiles/7_40_83.png +0 -0
- data/examples/tmp/tiles/7_40_84.png +0 -0
- data/examples/tmp/tiles/7_40_85.png +0 -0
- data/examples/tmp/tiles/7_40_86.png +0 -0
- data/examples/tmp/tiles/7_40_87.png +0 -0
- data/examples/tmp/tiles/7_41_71.png +0 -0
- data/examples/tmp/tiles/7_41_72.png +0 -0
- data/examples/tmp/tiles/7_41_73.png +0 -0
- data/examples/tmp/tiles/7_41_74.png +0 -0
- data/examples/tmp/tiles/7_41_75.png +0 -0
- data/examples/tmp/tiles/7_41_76.png +0 -0
- data/examples/tmp/tiles/7_41_77.png +0 -0
- data/examples/tmp/tiles/7_41_78.png +0 -0
- data/examples/tmp/tiles/7_41_79.png +0 -0
- data/examples/tmp/tiles/7_41_80.png +0 -0
- data/examples/tmp/tiles/7_41_81.png +0 -0
- data/examples/tmp/tiles/7_41_82.png +0 -0
- data/examples/tmp/tiles/7_41_83.png +0 -0
- data/examples/tmp/tiles/7_41_84.png +0 -0
- data/examples/tmp/tiles/7_41_85.png +0 -0
- data/examples/tmp/tiles/7_41_86.png +0 -0
- data/examples/tmp/tiles/7_41_87.png +0 -0
- data/examples/tmp/tiles/7_42_71.png +0 -0
- data/examples/tmp/tiles/7_42_72.png +0 -0
- data/examples/tmp/tiles/7_42_73.png +0 -0
- data/examples/tmp/tiles/7_42_74.png +0 -0
- data/examples/tmp/tiles/7_42_75.png +0 -0
- data/examples/tmp/tiles/7_42_76.png +0 -0
- data/examples/tmp/tiles/7_42_77.png +0 -0
- data/examples/tmp/tiles/7_42_78.png +0 -0
- data/examples/tmp/tiles/7_42_79.png +0 -0
- data/examples/tmp/tiles/7_42_80.png +0 -0
- data/examples/tmp/tiles/7_42_81.png +0 -0
- data/examples/tmp/tiles/7_42_82.png +0 -0
- data/examples/tmp/tiles/7_42_83.png +0 -0
- data/examples/tmp/tiles/7_42_84.png +0 -0
- data/examples/tmp/tiles/7_42_85.png +0 -0
- data/examples/tmp/tiles/7_42_86.png +0 -0
- data/examples/tmp/tiles/7_42_87.png +0 -0
- data/examples/tmp/tiles/7_43_71.png +0 -0
- data/examples/tmp/tiles/7_43_72.png +0 -0
- data/examples/tmp/tiles/7_43_73.png +0 -0
- data/examples/tmp/tiles/7_43_74.png +0 -0
- data/examples/tmp/tiles/7_43_75.png +0 -0
- data/examples/tmp/tiles/7_43_76.png +0 -0
- data/examples/tmp/tiles/7_43_77.png +0 -0
- data/examples/tmp/tiles/7_43_78.png +0 -0
- data/examples/tmp/tiles/7_43_79.png +0 -0
- data/examples/tmp/tiles/7_43_80.png +0 -0
- data/examples/tmp/tiles/7_43_81.png +0 -0
- data/examples/tmp/tiles/7_43_82.png +0 -0
- data/examples/tmp/tiles/7_43_83.png +0 -0
- data/examples/tmp/tiles/7_43_84.png +0 -0
- data/examples/tmp/tiles/7_43_85.png +0 -0
- data/examples/tmp/tiles/7_43_86.png +0 -0
- data/examples/tmp/tiles/7_43_87.png +0 -0
- data/examples/tmp/tiles/7_44_71.png +0 -0
- data/examples/tmp/tiles/7_44_72.png +0 -0
- data/examples/tmp/tiles/7_44_73.png +0 -0
- data/examples/tmp/tiles/7_44_74.png +0 -0
- data/examples/tmp/tiles/7_44_75.png +0 -0
- data/examples/tmp/tiles/7_44_76.png +0 -0
- data/examples/tmp/tiles/7_44_77.png +0 -0
- data/examples/tmp/tiles/7_44_78.png +0 -0
- data/examples/tmp/tiles/7_44_79.png +0 -0
- data/examples/tmp/tiles/7_44_80.png +0 -0
- data/examples/tmp/tiles/7_44_81.png +0 -0
- data/examples/tmp/tiles/7_44_82.png +0 -0
- data/examples/tmp/tiles/7_44_83.png +0 -0
- data/examples/tmp/tiles/7_44_84.png +0 -0
- data/examples/tmp/tiles/7_44_85.png +0 -0
- data/examples/tmp/tiles/7_44_86.png +0 -0
- data/examples/tmp/tiles/7_44_87.png +0 -0
- data/examples/tmp/tiles/carto_light_15_10871_19430.png +0 -0
- data/examples/tmp/tiles/carto_light_15_10871_19431.png +0 -0
- data/examples/tmp/tiles/carto_light_15_10871_19432.png +0 -0
- data/examples/tmp/tiles/carto_light_15_10871_19433.png +0 -0
- data/examples/tmp/tiles/carto_light_15_10871_19434.png +0 -0
- data/examples/tmp/tiles/carto_light_15_10871_19435.png +0 -0
- data/examples/tmp/tiles/carto_light_15_10872_19430.png +0 -0
- data/examples/tmp/tiles/carto_light_15_10872_19431.png +0 -0
- data/examples/tmp/tiles/carto_light_15_10872_19432.png +0 -0
- data/examples/tmp/tiles/carto_light_15_10872_19433.png +0 -0
- data/examples/tmp/tiles/carto_light_15_10872_19434.png +0 -0
- data/examples/tmp/tiles/carto_light_15_10872_19435.png +0 -0
- data/examples/tmp/tiles/carto_light_15_10873_19430.png +0 -0
- data/examples/tmp/tiles/carto_light_15_10873_19431.png +0 -0
- data/examples/tmp/tiles/carto_light_15_10873_19432.png +0 -0
- data/examples/tmp/tiles/carto_light_15_10873_19433.png +0 -0
- data/examples/tmp/tiles/carto_light_15_10873_19434.png +0 -0
- data/examples/tmp/tiles/carto_light_15_10873_19435.png +0 -0
- data/examples/tmp/tiles/carto_light_15_10874_19430.png +0 -0
- data/examples/tmp/tiles/carto_light_15_10874_19431.png +0 -0
- data/examples/tmp/tiles/carto_light_15_10874_19432.png +0 -0
- data/examples/tmp/tiles/carto_light_15_10874_19433.png +0 -0
- data/examples/tmp/tiles/carto_light_15_10874_19434.png +0 -0
- data/examples/tmp/tiles/carto_light_15_10874_19435.png +0 -0
- data/examples/tmp/tiles/carto_light_15_10875_19430.png +0 -0
- data/examples/tmp/tiles/carto_light_15_10875_19431.png +0 -0
- data/examples/tmp/tiles/carto_light_15_10875_19432.png +0 -0
- data/examples/tmp/tiles/carto_light_15_10875_19433.png +0 -0
- data/examples/tmp/tiles/carto_light_15_10875_19434.png +0 -0
- data/examples/tmp/tiles/carto_light_15_10875_19435.png +0 -0
- data/examples/tmp/tiles/carto_light_15_10876_19430.png +0 -0
- data/examples/tmp/tiles/carto_light_15_10876_19431.png +0 -0
- data/examples/tmp/tiles/carto_light_15_10876_19432.png +0 -0
- data/examples/tmp/tiles/carto_light_15_10876_19433.png +0 -0
- data/examples/tmp/tiles/carto_light_15_10876_19434.png +0 -0
- data/examples/tmp/tiles/carto_light_15_10876_19435.png +0 -0
- data/examples/tmp/tiles/carto_light_15_10877_19430.png +0 -0
- data/examples/tmp/tiles/carto_light_15_10877_19431.png +0 -0
- data/examples/tmp/tiles/carto_light_15_10877_19432.png +0 -0
- data/examples/tmp/tiles/carto_light_15_10877_19433.png +0 -0
- data/examples/tmp/tiles/carto_light_15_10877_19434.png +0 -0
- data/examples/tmp/tiles/carto_light_15_10877_19435.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18339.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18340.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18341.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18342.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18343.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18344.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18345.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18346.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18347.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18348.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18349.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18350.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18351.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18352.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18353.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18354.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18355.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18356.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18357.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18358.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18359.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18360.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18361.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18362.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18363.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18364.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18365.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18366.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18367.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18368.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18369.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18370.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18371.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18372.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18373.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18374.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18375.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18376.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18377.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18378.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18379.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18380.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18381.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18382.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18383.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18384.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18385.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18386.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18387.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18388.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18389.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18390.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18391.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18392.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18393.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18394.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18395.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18396.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18397.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18398.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18399.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18400.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18401.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18402.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18403.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18404.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18405.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18406.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18407.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18408.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18409.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18410.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18411.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18412.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18413.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18414.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18415.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18416.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18417.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18418.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18419.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18420.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18421.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18422.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18423.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18424.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18425.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18426.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18427.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18428.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18429.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18430.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18431.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18432.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18433.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18434.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18435.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18436.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18437.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18438.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18439.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18440.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18441.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18442.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18443.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18444.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18445.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18446.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18447.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18448.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18449.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18450.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18451.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18452.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18453.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18454.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18455.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18456.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18457.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18458.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18459.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18460.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18461.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18462.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18463.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18464.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18465.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18466.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18467.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18468.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18469.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18470.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18471.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18472.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18473.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18474.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18475.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18476.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18477.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18478.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18479.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18480.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18481.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18482.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18483.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18484.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18485.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18486.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18487.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18488.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18489.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18490.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18491.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18492.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18493.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18494.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18495.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18496.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18497.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18498.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18499.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18500.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18501.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18502.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18503.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18504.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18505.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18506.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18507.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18508.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18509.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18510.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18511.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18512.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18513.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18514.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18515.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18516.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18517.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18518.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18519.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18520.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18521.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18522.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18523.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18524.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18525.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18526.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18527.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18528.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18529.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18530.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18531.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18532.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18533.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18534.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18535.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18536.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18537.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18538.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18539.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18540.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18541.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18542.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18543.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18544.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18545.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18546.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18547.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18548.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18549.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18550.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18551.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18552.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18553.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18554.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18555.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18556.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18557.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18558.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18559.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18560.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18561.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18562.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18563.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18564.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18565.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18566.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18567.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18568.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18569.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18570.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18571.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18572.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18573.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18574.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18575.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18576.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18577.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18578.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18579.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18580.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18581.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18582.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18583.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18584.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18585.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18586.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18587.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18588.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18589.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18590.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18591.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18592.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18593.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18594.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18595.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18596.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18597.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18598.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18599.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18600.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18601.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18602.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18603.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18604.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18605.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18606.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18607.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18608.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18609.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18610.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18611.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18612.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18613.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18614.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18615.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18616.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18617.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18618.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18619.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18620.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18621.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18622.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18623.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18624.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18625.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18626.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18627.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18628.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18629.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18630.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18631.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18632.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18633.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18634.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18635.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18636.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18637.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18638.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18639.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18640.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18641.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18642.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18643.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18644.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18645.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18646.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18647.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18648.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18649.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18650.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18651.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18652.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18653.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18654.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18655.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18656.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18657.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18658.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18659.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18660.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18661.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18662.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18663.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18664.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18665.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18666.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18667.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18668.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18669.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18670.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18671.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18672.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18673.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18674.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18675.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18676.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18677.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18678.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18679.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18680.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18681.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18682.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18683.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18684.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18685.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18686.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18687.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18688.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18689.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18690.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18691.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18692.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18693.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18694.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18695.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18696.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18697.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18698.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18699.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18700.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18701.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18702.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18703.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18704.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18705.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18706.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18707.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18708.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18709.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18710.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18711.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18712.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18713.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18714.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18715.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18716.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18717.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18718.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18719.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18720.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18721.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18722.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18723.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18724.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18725.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18726.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18727.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18728.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18729.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18730.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18731.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18732.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18733.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18734.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18735.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18736.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18737.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18738.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18739.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18740.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18741.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18742.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18743.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18744.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18745.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18746.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18747.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18748.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18749.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18750.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18751.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18752.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18753.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18754.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18755.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18756.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18757.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18758.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18759.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18760.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18761.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18762.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18763.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18764.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18765.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18766.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18767.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18768.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18769.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18770.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18771.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18772.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18773.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18774.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18775.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18776.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18777.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18778.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18779.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18780.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18781.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18782.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18783.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18784.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18785.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18786.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18787.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18788.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18789.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18790.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18791.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18792.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18793.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18794.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18795.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18796.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18797.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18798.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18799.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18800.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18801.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18802.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18803.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18804.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18805.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18806.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18807.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18808.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18809.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18810.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18811.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18812.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18813.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18814.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18815.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18816.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18817.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18818.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18819.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18820.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18821.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18822.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18823.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18824.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18825.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18826.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18827.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18828.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18829.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18830.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18831.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18832.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18833.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18834.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18835.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18836.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18837.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18838.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18839.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18840.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18841.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18842.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18843.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18844.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18845.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18846.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18847.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18848.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18849.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18850.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18851.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18852.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18853.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18854.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18855.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18856.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18857.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18858.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18859.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18860.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18861.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18862.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18863.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18864.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18865.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18866.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18867.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18868.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18869.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18870.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18871.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18872.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18873.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18874.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18875.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18876.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18877.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18878.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18879.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18880.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18881.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18882.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18883.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18884.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18885.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18886.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18887.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18888.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18889.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18890.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18891.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18892.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18893.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18894.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18895.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18896.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18897.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18898.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18899.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18900.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18901.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18902.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18903.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18904.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18905.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18906.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18907.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18908.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18909.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18910.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18911.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18912.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18913.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18914.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18915.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18916.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18917.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18918.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18919.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18920.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18921.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18922.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18923.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18924.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18925.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18926.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18927.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18928.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18929.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18930.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18931.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18932.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18933.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18934.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18935.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18936.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18937.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18938.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18939.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18940.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18941.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18942.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18943.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18944.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18945.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18946.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18947.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18948.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18949.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18950.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18951.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18952.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18953.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18954.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18955.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18956.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18957.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18958.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18959.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18960.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18961.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18962.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18963.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18964.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18965.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18966.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18967.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18968.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18969.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18970.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18971.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18972.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18973.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18974.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18975.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18976.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18977.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18978.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18979.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18980.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18981.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18982.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18983.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18984.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18985.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18986.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18987.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18988.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18989.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18990.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18991.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18992.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18993.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18994.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18995.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18996.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18997.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18998.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_18999.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_19000.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_19001.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_19002.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_19003.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_19004.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_19005.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_19006.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_19007.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_19008.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_19009.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_19010.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_19011.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_19012.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_19013.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_19014.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_19015.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_19016.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_19017.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_19018.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_19019.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_19020.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_19021.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_19022.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_19023.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_19024.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_19025.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_19026.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_19027.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_19028.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_19029.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_19030.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_19031.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_19032.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_19033.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_19034.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_19035.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_19036.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_19037.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_19038.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_19039.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_19040.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_19041.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_19042.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_19043.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_19044.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_19045.png +0 -0
- data/examples/tmp/tiles/carto_light_15_9693_19046.png +0 -0
- data/examples/tmp/tiles/carto_light_5_10_17.png +0 -0
- data/examples/tmp/tiles/carto_light_5_10_18.png +0 -0
- data/examples/tmp/tiles/carto_light_5_10_19.png +0 -0
- data/examples/tmp/tiles/carto_light_5_10_20.png +0 -0
- data/examples/tmp/tiles/carto_light_5_10_21.png +0 -0
- data/examples/tmp/tiles/carto_light_5_11_17.png +0 -0
- data/examples/tmp/tiles/carto_light_5_11_18.png +0 -0
- data/examples/tmp/tiles/carto_light_5_11_19.png +0 -0
- data/examples/tmp/tiles/carto_light_5_11_20.png +0 -0
- data/examples/tmp/tiles/carto_light_5_11_21.png +0 -0
- data/examples/tmp/tiles/carto_light_5_9_17.png +0 -0
- data/examples/tmp/tiles/carto_light_5_9_18.png +0 -0
- data/examples/tmp/tiles/carto_light_5_9_19.png +0 -0
- data/examples/tmp/tiles/carto_light_5_9_20.png +0 -0
- data/examples/tmp/tiles/carto_light_5_9_21.png +0 -0
- data/examples/verbose.txt +0 -11
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 9112994f7952782be773dc2a7bb8659d96769903b6e9c81b28a563cb2caa80eb
|
|
4
|
+
data.tar.gz: 569e8be0ac09110cf30b3b888317a5079fc975176988ee8051b7f3419587b721
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
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
|
|
data/lib/gd/gis/basemap.rb
CHANGED
|
@@ -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
|
data/lib/gd/gis/dump.sh
ADDED
|
@@ -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
|
data/lib/gd/gis/layer_geojson.rb
CHANGED
|
@@ -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
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
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 "
|
|
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
|
|
17
|
-
@zoom
|
|
18
|
-
@basemap
|
|
19
|
-
|
|
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
|
-
#
|
|
24
|
-
#
|
|
25
|
-
|
|
26
|
-
def
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
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
|
-
|
|
40
|
-
|
|
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
|
|
44
|
-
@
|
|
74
|
+
def add_lines(features, **opts)
|
|
75
|
+
@lines_layers << GD::GIS::LinesLayer.new(features, **opts)
|
|
45
76
|
end
|
|
46
77
|
|
|
47
|
-
def
|
|
48
|
-
@
|
|
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
|
-
@
|
|
71
|
-
@
|
|
72
|
-
@img.save_alpha = true
|
|
103
|
+
@image = GD::Image.new(width, height)
|
|
104
|
+
@image.antialias(false)
|
|
73
105
|
|
|
74
|
-
#
|
|
106
|
+
# Basemap
|
|
75
107
|
tiles.each do |x, y, file|
|
|
76
108
|
tile = GD::Image.open(file)
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
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
|
|
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
|
-
#
|
|
98
|
-
@
|
|
99
|
-
|
|
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
|
-
@
|
|
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
|