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

Argentina not showing up on world map with d3.js

本文关键字:d3 js 世界地图 阿根廷      更新时间:2023-09-26

我在使用 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");
    }

有谁知道问题可能是什么,以及如何解决它的解决方案?帮助将不胜感激:)

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

每当您看到此行为(一个国家/地区仅通过笔划而不是通过填充显示)时,它通常表示地理数据已损坏,其中多边形已从内到外(它填充了多边形边界周围的所有内容)。您需要将数据集导入 GIS 并尝试修复它。在这种情况下,腐败的实际上不是阿根廷,而是百慕大。您可以删除百慕大(似乎工作正常),也可以尝试修复 GIS 应用程序中的地理数据。

阿根廷似乎

失踪的原因是因为腐败的百慕大被拉到阿根廷(除其他外)之上。

就我而言,列表中的前~20个国家(阿富汗,安哥拉,阿尔巴尼亚,阿根廷......)没有通过中风显示。我假设这些文件对这些元素已损坏,但是,我复制了这些相同的国家/地区,并更改了 JSON 文件中的"ID"(所以我还有 ~20 个国家/地区)并且它起作用了。