对TopoJSON格式的困惑

时间:2013-07-11 18:12:50

标签: map d3.js geojson topojson

我试图在这里关注mbostock的“让我们制作地图”教程:http://bost.ocks.org/mike/map/。在教程的某一点上,他写道:

d3.json("uk.json", function(error, uk) {
    svg.append("path")
       .datum(topojson.feature(uk, uk.objects.subunits))
       .attr("d", d3.geo.path().projection(d3.geo.mercator()));
});

如果没有看到他的topoJSON文件的格式,很难确定我的代码的等效“uk.objects.subunits”行是什么(我可以在这里查看我的topoJSON:https://gist.github.com/jcahan/e1772766f01b68b00dc9)。

有人请帮助澄清我(以及未来的读者)如何确定我的topojson文件的内部属性(例如uk.objects.subunits)吗?

谢谢你的时间!

2 个答案:

答案 0 :(得分:2)

在浏览器中使用Web控制台(我在Firefox中使用Firebug扩展程序)查看Mike的示例页面,您可以观看浏览器下拉uk.json文件并查看其格式。这是相关的片段:

{"type":"Topology","transform":{"scale":
[0.001546403012701271,0.0010939367048704803],"translate":
[-13.69131425699993,49.90961334800009]},"objects":{"subunits":
{"type":"GeometryCollection","geometries":[{"type":"MultiPolygon","id":"ENG","arcs":[[[0]],
[[1]],[[2]],[[3]],[[4]],[[5]],[[6,7,8,9]]],"properties":{"name":"England"}},

您可以看到uk.objects.subunits

的层次结构

子单元包含GeometryCollection。看看你的json文件并做同样的事情。

仔细检查Mike的这条指令是否有效:

d3.json("uk.json", function(error, uk) {
    console.log(uk);
});
  

现在,如果您查看JavaScript控制台,您应该会看到一个拓扑对象,它代表英国的行政边界和人口稠密的地方。

如果你让它工作,请告诉我,因为我无法加载我的个人TopoJSON文件,尽管我可以让所有迈克这样做。我得出的结论是,我的TopoJSON文件必须以某种方式出错。

答案 1 :(得分:1)

不确定。

该JSON文件碰巧是该示例的亲密朋友(实际上是邻居)。所以你可以在http://bost.ocks.org/mike/map/uk.json

看到它

问候。