使用:
topojson -o foobar.json -- foo.json bar.json
我们可以将两个foo.json
和bar.json
组合成foobar.json
:
上面的foobar.json看起来像这样:
{
"type": "Topology",
"transform": …,
"objects": {
"foo": …,
"bar": …
},
"arcs": …
}
现在,我有foobar.json
,如何从中提取foo.json
?
注:
我不需要将TopoJSON转换为GeoJSON。foobar.json也可以是TopoJSON格式。我只需要缩小foobar.json的大小,并删除"bar"对象及其相应的圆弧。
例如,这里的us.jsonhttps://gist.github.com/mbostock/4090846#file-usjson,包括三个对象:"countries"、"states"one_answers"landlines"。我只需要州。
您可以使用客户端库从TopoJSON对象中提取foo
。假设foobar
在这里保存您的TopoJSON对象:
var foo = topojson.feature(foobar, foobar.objects.foo),
bar = topojson.feature(foobar, foobar.objects.bar);
现在,变量foo
和bar
保存最初存储在各自文件中的Feature/FeatureCollection。请参阅存储库维基上的客户端API参考:
https://github.com/mbostock/topojson/wiki/API-Reference#client-api
评论和问题编辑后编辑:
另一种选择可能是手动从TopoJSON中的objects
对象中删除其他属性。如何做到这一点取决于您可以使用的语言。在php中,例如:
$string = file_get_contents('foobar.json');
$topojson = json_decode($string);
unset($topojson->objects->bar);
$string = json_encode($topojson);
file_put_contents('foo.json', $string);
问题是,之后TopoJSON中会有未使用的弧,但据我所知,您可以使用命令行接口的prune
方法修剪这些弧:
从指定拓扑中删除任何未使用的圆弧。
https://github.com/mbostock/topojson/wiki/API-Reference#prune