当我使用带有Albers USA投影的long / lat绘制它们时,为什么这些9个美国城市与D3地图上的实际位置不对应?

时间:2015-09-03 22:08:32

标签: javascript d3.js

我正试图建立一个似乎是美国基本的D3地图,其中有9个人口最多的城市被标记为圆圈,但却遇到了一个非常明显但却令人困惑的问题。 / p>

我正在使用 Albers USA投影美国。陈述GeoJSON文件,以及 .csv ,其中包括:

  1. 城市名称
  2. 2014年估计人口
  3. 纬度
  4. 经度
  5. 我使用Google Fusion表格的地理编码功能计算了长/纬度值,它们与Scott Murray's D3 book github page上提供的值匹配。

    当我尝试绘制每个城市所在的圆圈时,几乎每个城市都不合适。在我试图策划的9个城市中 - 纽约,费城,芝加哥,休斯顿,达拉斯,圣安东尼奥,凤凰城,圣地亚哥,洛杉矶 - 只有纽约和费城才能显示相对完整。芝加哥转移到了明尼阿波利斯。圣地亚哥和洛杉矶是一团糟。德克萨斯州和亚利桑那州的城市已完全从他们的州消失。

    这是d3.csv代码:

            d3.csv("city_pop.csv", function(data){
                    console.log(data);
                var rScale = d3.scale.linear()
                                .domain([0, d3.max(data, function(d){
                                    return parseFloat(d.estimate_2014);
                                })])
                                .range([1,15]);
    
                dataset = data;
    
                svg.selectAll("circle")
                .data(dataset)
                .enter()
                .append("circle")
                .attr({
                    "cx": function(d) { return projection([d.lon, d.lat])[0];},
                    "cy": function(d) { return projection([d.lon, d.lat])[1];},
                    "r": function (d) { return rScale(parseFloat(d.estimate_2014));}
                })
                .style({
                    "fill": "red",
                    "opacity": 0.8
                });
            }); 
    

    这是要点:http://bl.ocks.org/iblind/2e90a6f516fee793380e

    我整天都在玩这个。有没有人有任何想法?我一直在撞墙去寻找永远的感觉,而且完全迷失了。

      

    tl; dr:为什么这个D3地图中的城市   http://bl.ocks.org/iblind/2e90a6f516fee793380e没有出现在他们的位置   应该出现?

1 个答案:

答案 0 :(得分:2)

基础数据错误(city_pop.csv)。通过谷歌地图运行您的纬度和经度,您将看到相同的模式形式。 例如宾夕法尼亚州费城(37.15477,-94.486114)不是宾夕法尼亚州的所在地 - https://goo.gl/maps/1G754