D3 Topojson合并 - 检索多面坐标并保存为JSON

时间:2017-12-05 07:55:09

标签: d3.js topojson

更新

我已经取得了一些进展,并根据我对topojson功能的新理解更新了我的问题。

为了实现我之前的目标,我使用了类似于this example的方法。也就是说,我硬编码了我希望合并到set的县的FIPS ID,然后创建了FeatureCollection来创建我的路径。以下是德克萨斯州北部的一个例子:

var set1 = d3.set([
  48111, 48421, 48195, 48357, 48295, 48205, 48341, 48233, 48393, 48211,
  48359, 48375, 48065, 48179, 48483, 48485, 48077, 48337, 48237, 48009,
  48503, 48023, 48269, 48125, 48107, 48303, 48219, 48079, 48501, 48445,
  48305, 48169,
  48117, 48381, 48011, 48129, 48087, 48369, 48069, 48437, 48045, 48191,
  48075, 48017, 48279, 48189, 48153, 48345, 48101, 48155, 48197, 48487
]);

var region1 = {type: "FeatureCollection", features: counties.filter(function(d) {return set1.has(d.id); })};

countiesG.append("path")
    .datum(region1)
    .attr("class", "region")
    .attr("d", path);

countiesG.append("path")
    .datum(topojson.merge(us, us.objects.counties.geometries.filter(function(d) {return set1.has(d.id); })))
    .attr("class", "region-boundary")
    .attr("d", path);

var set2 = d3.set([
      17035, 17032, 17038, 17083, 17022, 17062
    ]);

var region2 = {type: "FeatureCollection", features: counties.filter(function(d) {return set2.has(d.id); })};

countiesG.append("path")
    .datum(region2)
    .attr("class", "region")
    .attr("d", path);

countiesG.append("path")
    .datum(topojson.merge(us, us.objects.counties.geometries.filter(function(d) {return set2.has(d.id); })))
    .attr("class", "region-boundary")
    .attr("d", path);

我将在上面提供两个地区的代码供参考。实际上,我多次重复这个过程来创建我所需的所有合并的集团区域。硬编码所有这些数据是艰巨的,使我的代码可读性降低。我的希望是我的努力工作已经完成,我可以在某种程度上使用这些新的合并多边形区域。

我的问题是:现在我已经对每个区域进行了硬编码,topojson能否以某种方式将这些新合并多边形的坐标保存到原始的us.json文件中,甚至是新的json文件?这样,当我解析json的坐标时,它将拥有我所有的自定义合并区域 - 这将允许我删除所有硬编码区域。我也可以接受其他方法,只要我能实现导出合并多边形边界坐标的目标。

0 个答案:

没有答案