This commit is contained in:
Mike Bostock 2012-12-19 17:01:55 -08:00
Родитель 211ae9fd39
Коммит 301abe6f99
1 изменённых файлов: 0 добавлений и 70 удалений

Просмотреть файл

@ -1,70 +0,0 @@
require("../../test/env");
var fs = require("fs"),
util = require("util"),
Canvas = require("canvas");
var w = 1920,
h = 1080;
var projection = d3.geo.albersUsa()
.scale(2000)
.translate([w / 2, h / 2]);
var path = d3.geo.path()
.projection(projection);
var canvas = new Canvas(w, h),
context = canvas.getContext("2d");
context.antialias = "none";
context.lineWidth = 8;
context.lineJoin = "round";
d3.json(__dirname + "/../data/us-counties.json", function(error, collection) {
renderAll("stroke");
renderAll("fill");
var out = fs.createWriteStream("us-counties.png");
canvas.createPNGStream().on("data", function(chunk) { out.write(chunk); });
function renderAll(action) {
collection.features.forEach(function(feature) {
var re = /[MLZ]/g,
d = path(feature),
i = 0,
m;
context[action + "Style"] = "#" + pad((+feature.id).toString(16));
context.beginPath();
re.lastIndex = 1;
while (m = re.exec(d)) render(m.index);
render();
context[action]();
function render(j) {
switch (d.charAt(i)) {
case "M": {
var p = d.substring(i + 1, j).split(",").map(Number);
context.moveTo(p[0], p[1]);
break;
}
case "L": {
var p = d.substring(i + 1, j).split(",").map(Number);
context.lineTo(p[0], p[1]);
break;
}
case "Z": {
context.closePath();
break;
}
}
i = j;
}
});
}
});
function pad(s) {
return s.length < 6 ? new Array(7 - s.length).join("0") + s : s;
}