用于绘制地图的us.json
文件包含有关每个县的轮廓及其FIPS 代码的信息:
{"type":"Polygon","arcs":[[250,-204,-17]],"id":30047}
每行unemployment.tsv
代表一个县,包含其 FIPS 代码和失业率。加载文件时,它是从对象数组转换而来的:
> unemployment
[{id: '1001', rate: '.097'},
{id: '1004', rate: '.091'},
{id: '1005', rate: '.134'},
... ]
以 key 为县 id 和 rate 为值的对象:
var rateById = {};
unemployment.forEach(function(d) { rateById[d.id] = +d.rate; });
> rateById
{1001: .097,
1004: .091,
1005: .134}
(+d.rate
as 将失业字符串转换为数字。)
完成后,为每个县着色很简单,只需使用形状的 id 即可找到相应的失业率rateById
并将该数字转换为带有color
刻度的颜色。
.style("fill", function(d) { return color(rateById[d.id]); });
为了更直接地回答您的问题:您可能希望使用国家 FIPS代码对您的县级*数据进行编码,并使用它为您的地图着色。如果您不使用县数据,您可以尝试转换它(将纬度/经度或城市/州映射到县)或完全使用另一种地图(对于世界地图,请参阅此示例和以下评论)。
*我没有任何 GIS 背景 - 每次我尝试这样做时,我最终都会使用旧的 FIPS 代码 -> 县名查找表,并且必须手动更正几个;NIST 网站上可能有更好的源文件,但我无法找到。