Javascript 从D3中的贴图中删除形状

Javascript 从D3中的贴图中删除形状,javascript,map,d3.js,topojson,Javascript,Map,D3.js,Topojson,我正在用D3.js从topojson文件导入地图 为了绘制它,我使用以下代码: d3.json(input_file, function(error, data) { var units = topojson.feature(data, data.objects.countries), view = d3.select("#map_view"); // ... SETUP OF THE PROJECTION AND PATH view.selectAll("path")

我正在用D3.js从topojson文件导入地图

为了绘制它,我使用以下代码:

d3.json(input_file, function(error, data) {
  var units = topojson.feature(data, data.objects.countries),
  view = d3.select("#map_view");
  // ... SETUP OF THE PROJECTION AND PATH
  view.selectAll("path")
    .data(units.features)
    .enter()
    .append("path")
    .attr("d", path);
}
此代码将绘制输入topojson文件中定义的所有形状。 现在,我想删除几个我不需要的离群小岛,它们位于球坐标系中的指定区域

由于现在units对象定义了绘制的所有对象,因此我尝试通过以下方式删除这些形状:

我识别特征列表中国家的索引和位于所需区域的弧的索引,并从阵列中删除弧:

var coordinates = units.features[5].geometry.coordinates,
    outlierId = 23;
coordinates.splice(outlierId, 1);
现在,当我检查这个国家的坐标数组时,我没有看到坐标位于排除区域的弧


但它仍然绘制在地图上,尽管修改的单位对象进入.data方法。看起来有关形状的信息来自其他地方。怎么可能呢?

几乎可以肯定,在用D3加载数据之前,修改数据会更容易。是的,我想是这样,一旦确定了弧索引。但我更喜欢以编程方式进行,特别是当地图更新为其他更详细的版本时,例如。我仍然想理解为什么修改.data方法的输入不会改变输出。如果没有一个完整的例子,很难说发生了什么。