2017-05-30 112 views
2

是否有一般D3/topojson调试提示吗?我对这个格式比较陌生,并且已经通过d3为美国各州做了一个可视化。 JavaScript和d3适用于我手头的topojson文件。然而,随着更多的说明更改文件的东西时,没有错误或问题被抛出,但我得到了以下结果:D3 Topojson调试转换

enter image description here

我不想张贴整个JSON,因为它是相当大的,但是在d3中处理topojson可视化时,您会推荐哪些调试实践?我认为错误与转型有关,但我不确定如何处理和解决问题。

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() 

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

{"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:这是工作的topojson。

{"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"},.... 

他们都是topojson格式,可以通过mapshaper.org进行验证,但略有不同。任何人都可以解释这些差异。

+1

你可以尝试加载在[mapshaper.org(HTTP的topojson文件异常:// mapshaper。 ORG)。 – Peter

+0

我试图核实几个地图观众topojson文件如。他们都返回地图的正确格式 – Anna

+1

如果您包括您topojson的部分可能会有所帮助。文件的开头和结尾应该有所帮助。此外,包括您的d3投影参数也可以提供帮助。 –

回答

1

显然,转换属性只是关闭。线条生成的长度应为我的svg大小的1/1000。由于线条有一定的厚度,它看起来像一些斑点;地图正确生成。

我想回答我的问题,只是玩弄topojson属性,直到它像你想要的东西。如果JavaScript没有崩溃,假设该地图已正确加载(但也许不是你的标准)

一般清单:

  • 确保文件是正确的topojson格式(这可以被证实,甚至转换在mapshaper.org
  • 确保topojson文件被正确加载。这可以用一些console.log
  • 确保数据的特征都指向了topojson正确的对象进行测试。对我来说,这是x.objects.states
  • 如果地图成功加载,但看起来不对,考虑“变换”