如何在运行时以编程方式向topojson文件添加属性?

如何在运行时以编程方式向topojson文件添加属性?,json,d3.js,geojson,topojson,Json,D3.js,Geojson,Topojson,我试图在运行时向topojson添加其他属性。我已经看过这个例子,但我不认为有人会操纵原始的json文件 最好的方法是什么 JSON: {“类型”:“拓扑结构”, “对象”:{ “国家”: “bbox”:[…], “类型”:“GeometryCollection”, “几何图形”:[ { “类型”:“多边形”, “财产”:{ “姓名”:“阿富汗”, “计数”:30// 我已经看过了Choropleth示例,但我认为没有人会操纵原始json文件 不,他没有。在你链接的示例中,Mike Bost

我试图在运行时向topojson添加其他属性。我已经看过这个例子,但我不认为有人会操纵原始的json文件

最好的方法是什么

JSON:

{“类型”:“拓扑结构”,
“对象”:{
“国家”:
“bbox”:[…],
“类型”:“GeometryCollection”,
“几何图形”:[
{  
“类型”:“多边形”,
“财产”:{
“姓名”:“阿富汗”,
“计数”:30//
我已经看过了Choropleth示例,但我认为没有人会操纵原始json文件

不,他没有。在你链接的示例中,Mike Bostock创建了一个地图

var unemployment = d3.map();
unemployment.set(d.id, +d.rate);
…然后他用那张地图:

.attr("fill", function(d) { return color(d.rate = unemployment.get(d.id)); })
正如您所见,这种方法不会改变topoJSON。此外,它更快、更优雅

但是,如果您想向topoJSON添加属性,这很容易做到

首先,嵌套您的
d3.json
和您的
d3.csv
(或用于获取数据的任何其他函数):

然后,使用两个嵌套for循环来添加属性(不是更快的解决方案)
pre{
显示:无;
}

国家,伯爵
50年前
AFG,30
.attr("fill", function(d) { return color(d.rate = unemployment.get(d.id)); })
d3.csv("mycsv.csv", function(data) {
    d3.json("mytopojson.json", function(json) {
        //code here
    });
});