阿根廷没有出现在世界地图上,d3.js
Argentina not showing up on world map with d3.js
我在使用 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 个国家/地区)并且它起作用了。
- 如何在d3.js中返回路径的y坐标
- 有条件更新d3.js力图中节点的最佳方法
- 使用D3.js计算带有字母间距的文本长度
- D3.js模式不适用于弧形或圆环图
- d3.js Chord图的动态工具提示
- 在D3.js中,有没有任何方法可以将x和y方向上的滚动事件绑定到平移svg
- HTML5FileReader输出到D3.js图表
- D3.js生成有效的SVG,但不显示任何内容
- d3.js:限制画笔的大小
- d3.js用按钮更新条形图工具提示
- 如何为d3.js图表输出组织/嵌套数据
- d3-js快速事件调用问题
- D3.JS向rect添加缩放和列表项
- d3.js圆的半径是否可以由样式属性指定
- 如何在d3.js中自定义事件侦听器
- 在新窗口上使用d3.js
- 如何用d3.js绘制折线图
- 使用dc.js、d3.js和crossfilter引用错误
- D3.js剪辑路径截断了我的图的边缘
- D3.js和坐标系