Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
require 'rubygems'
require 'simpler_tiles'
breaks = [0.05, 0.15, 0.30, 0.45, 0.60]
cbreaks = [0.40, 0.50, 0.60, 0.70, 0.80]
colors = [[236, 231, 242], [166, 189, 219], [116, 169, 207], [54, 144, 192], [5, 112, 176], [3, 78, 123]]
def color(color)
sprintf("#%2x%2x%2x", *color).gsub(" ", "0")
end
map = SimplerTiles::Map.new do |m|
m.srs = "EPSG:102003"
m.set_bounds -2356113.743199, -1337508.077280, 2258243.997100, 1565781.660000
m.width = 630
m.height = 400
m.layer '10m-ocean/10m_ocean.shp' do |l|
l.query 'select * from "10m_ocean"' do |q|
q.styles 'fill' => '#eaeaea',
'seamless' => 'true',
"line-join" => 'round'
end
end
m.layer 'us.shp' do |l|
l.query 'select * from "us"' do |q|
q.styles 'stroke' => '#888888',
'line-join' => 'round',
'weight' => '0.2'
end
end
m.layer '10m-lakes/ne_10m_lakes.shp' do |l|
l.query 'select * from "ne_10m_lakes"' do |q|
q.styles 'fill' => '#eaeaea',
'seamless' => 'true',
"line-join" => 'round'
end
end
end
File.open("images/background.png", 'w+') {|f| f.write map.to_png }
(1890..2010).step(10).each do |epoch|
p epoch
map = SimplerTiles::Map.new do |m|
m.srs = "EPSG:102003"
m.set_bounds -2356113.743199, -1337508.077280, 2258243.997100, 1565781.660000
m.width = 630
m.height = 400
m.layer 'PG:dbname=migration' do |l|
breaks.each_with_index do |brk, i|
l.query "SELECT * FROM counties where black::float / total > #{brk} and total > 100 and epoch = #{epoch}" do |q|
q.styles "seamless" => 'true',
"fill" => color(colors[i]),
"line-join" => 'round'
end
end
end
end
File.open("images/#{epoch}.png", 'w+') {|f| f.write map.to_png }
p epoch
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.