阿根廷没有出现在d3.js的世界地图上

时间:2015-01-06 11:50:22

标签: javascript d3.js maps geojson topojson

使用d3.js和geojson文件绘制完整的世界地图时遇到问题。我使用的文件是https://gist.github.com/phil-pedruco/10447085,在这里您可以看到所有国家/地区都正常显示,但是当我尝试渲染时,我会获得除阿根廷以外的所有国家/地区。我也尝试过使用这些文件:https://github.com/rusanu/geodata-rails/tree/master/vendor/assets/javascripts。这里的110m文件给了我相同的结果(没有阿根廷),但是50m文件显示了整个地图,除了它太详细了,我宁愿使用另一个文件。我已经将代码简化为只绘制地图的路径,看看我的代码中是否有任何错误,但结果是相同的...这是绘制地图的简化代码:

    var projection = d3.geo.mercator()
            .center([0, 40])
            .scale(200)
            .rotate([0, 0]);
    var path = d3.geo.path()
            .projection(projection);
    var width = 2000;
    var height = 2000;

    queue()
        .defer( d3.json,"world-110m.json")
        .await(ready);

    function ready(error,world) {
            // console.log(world)
             makeMap(world);
    }
    function makeMap(world){
        var svg = d3.select("#map").append("svg")
            .attr("width", width)
            .attr("height", height);
         var g = svg.append("g");
          svg.selectAll("path")
                .data(world.features)
                .enter()
                .append("path")
                .attr("d", path)
                .attr("stroke","black")
                .attr("fill","white");

    }

有谁知道问题可能是什么,以及如何解决问题的解决方案?非常感谢帮助:))

编辑:在尝试了一大堆不同的东西后,我注意到如果我指定"填充:无",阿根廷突然被勾勒出来,但是一旦我指定填充颜色,它就会消失。 ..还不知道为什么会这样 - ---

1 个答案:

答案 0 :(得分:0)

每当你看到这种行为(一个国家只通过笔画而不是通过填充显示)时,它通常表示多边形已被翻过来的地理数据损坏(它填充了所有周围的一切多边形边框)。您需要将数据集带入GIS并尝试修复它。在这种情况下,它实际上不是阿根廷,而是百慕大被腐蚀。您可以删除百慕大,它似乎工作正常,或尝试修复GIS应用程序中的地理数据。

阿根廷似乎失踪的原因是因为堕落的百慕大被吸引到阿根廷(以及其他国家)之上。