更新
我已经取得了一些进展,并根据我对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的坐标时,它将拥有我所有的自定义合并区域 - 这将允许我删除所有硬编码区域。我也可以接受其他方法,只要我能实现导出合并多边形边界坐标的目标。