d3 Topojson 调试转换

d3 Topojson debugging transformations

是否有通用的 d3/topojson 调试提示?我对这种格式比较陌生,并且通过 d3 为美国各州制作了可视化。 JavaScript 和 d3 适用于我手头的 topojson 文件。但是,当将文件更改为具有更多描述的文件时,没有出现任何错误或问题,但我得到以下结果:

我不想 post 整个 json,因为它很大,但是在处理 d3 中的拓扑 json 可视化时,您是否推荐任何调试实践?我假设错误与转换有关,但我不确定如何处理和补救该问题。

var svg = d3.select("#map1");
var path = d3.geoPath();
svg.append("g")
   .attr("class", "states")
   .selectAll("path")
   .data(topojson.feature(x, x.objects.states).features)
   .enter()

更新:没有寻找任何人明确调试我的代码。我需要了解其他项目出了什么问题。但如果这有帮助,这里有一个非常小的整体拓扑样本json:

{"type":"Topology",
 "arcs":[[[1071248,837478],[27,35],[64,83],[44,75],[38,57],[42,29],[32,-10],[38,-33],[35,-57],[32,-447],[-10,-33],[-28,6],[-216,188],[-85,81],[-13,26]],... ]
 "transform":{"scale":[0.00008503679331736181,0.00005379922226014208],
              "translate":[-179.148909,-14.548699000000001]},
 "objects":{"states":{"type":"GeometryCollection",
                      "geometries":[ {"arcs":[[[0]],[[1]],[[2]],[[3]],[[4]],[[5]],[[6,7,8,9,10]]],
                                      "type":"MultiPolygon",
                                      "properties":{"STATEFP":"01",
                                                    "STUSPS":"AL",
                                                    "NAME":"Alabama"}},...

Update2:这是有效的拓扑json。

{"type":"Topology",
 "bbox":[-56.77775821661018,12.469025989284091,942.7924311762474,596.9298966319916],
 "transform":{"scale":[0.009995801851947097,0.005844667153098606],
              "translate":[-56.77775821661018,12.469025989284091]},
 "objects":{"states":{"type":"GeometryCollection","geometries":[{"type":"Polygon","arcs":[[0,1,2,3,4]],"id":"05089"},....

它们都是拓扑json格式,可以通过mapshaper.org验证,但略有不同。谁能解释一下区别。

显然转换属性刚刚关闭。生成的线条长度是我的 svg 尺寸应有的长度的 1/1000。因为线条有一定的粗细要求,看起来就是一些斑点;地图生成正确。

我想回答我自己的问题,只是尝试使用 topojson 属性,直到它类似于您想要的东西。如果 JavaScript 没有崩溃,则假设地图已正确加载(但可能不符合您的标准)

一般检查清单:

  • 确保文件是正确的 topojson 格式(这可以在 mapshaper.org 上确认甚至转换)
  • 确保 topojson 文件正确加载。这可以用一些 console.log
  • 来测试
  • 确保数据特征指向 topojson 的正确对象。对我来说,这是 x.objects.states
  • 如果地图加载成功,但看起来不对,请考虑 'transform'
  • 中的异常