0

我正在使用美国人口普查 ACS API来提取美国所有县的数据。然后,我想生成一个基于这些值着色的县级等值线图。如果我有一个静态数据文件(带有区号的 CSV:值),我可以呈现数据。但是,来自 API 的数据返回为:

0: "B08101_025E"
1: "NAME"
2: "state"
3: "county"
...
0: "42"
1: "Autauga County, Alabama"
2: "01"
3: "001"

:value 中似乎需要数据,使得上面看起来像(忽略标题元素):

01001: 42

我想我对数据的格式和预期的输出应该是什么感到困惑。最后,我正在做的是:

    var pad = d3.format("05d"),
    quantize = d3.scale.quantile().domain([0, 15]).range(d3.range(9));

    d3.json("us-counties.json", function (json) {
        counties.selectAll("path")
        .data(json.features)
        .enter().append("svg:path")
        .attr("class", function (d) {
            return "q" + quantize(dataSet[pad(d.id)]) + "-9";
        })
        .attr("d", path)
        .on("click", click)
        .append("svg:title")
        .text(function (d) {
            return d.properties.name + ": " + dataSet[pad(d.id)] + "%";
        });
    });

这是取自这里。请注意,dataSet[pad(d.id)]没有命中,因为数据不在我认为它需要的键/值对中。如何以预期的格式得到这个?我试过把它dataSet变成一个二维数组:

0: "01001"
1: 42

这仍然没有达到预期的结果。

4

2 回答 2

0

R的acs 包是获取 ACS 数据的另一种有用方法(通过 API,但很友好)。

此外,还有关于使用 R(包括 acs 包)从人口普查数据创建颜色编码地图的有用、广泛的讨论,示例如下:

http://blog.revolutionanalytics.com/2009/11/choropleth-map-r-challenge.html

http://eglenn.scripts.mit.edu/citystate/tag/acs/

https://gist.github.com/hadley/233134

于 2013-12-20T19:13:44.280 回答
0

好吧,看起来问这个问题很有帮助。之后,我又一次解决了这个问题并做了这个:

    var dataObj = {};
            d3.json(jsonRequest, function (data) {
                $.each(data, function (key, val) {
                    if (key > 0) {
                        var apiValue = parseInt(val[0], 10);
                        var apiState = val[2];
                        var apiCounty = val[3];
                        //var elmentArray = [apiState + apiCounty, apiValue];
                        //dataSet.push(elmentArray);
                        dataObj[apiState + apiCounty] = apiValue;
                    }
                });
...
 return d.properties.name + ": " + dataObj[pad(d.id)] + "%";

现在唯一的问题是当我更改数据源时数据没有得到更新。

于 2013-11-01T13:20:11.270 回答