合并 TopoJSON 并只保留新对象

Merge TopoJSON and only keep new objects

我正在尝试使用 TopoJSON 的 CLI 按州合并美国国会选区的形状,效果很好:

topomerge states=districts -k 'd.id.slice(0, 2)' < districts_topo.json > states_topo.json

(合并基于以州代码开头的 ID 字段)

但是,我进行此合并的真正原因是我想要一个较小的输出文件,并删除了所有不必要的几何图形。有没有办法在 TopoJSON 中做到这一点?默认情况下,它也会复制现有的 districts 对象,创建一个比原始输入更大的文件。即使我手动删除 districts 对象,文件仍然太大,大概是因为保留了未使用的弧。

获得仅包含合并几何图形的较小文件的最佳方法是什么?

为了回答我自己的问题,我认为唯一的方法是将有问题的对象转换成 GeoJSON 然后再转换回来...

const statesGeo = topojson.feature(statesTopo, statesTopo.objects.states)
const onlyStatesTopo = topojson.topology({ states : statesGeo })

...这看起来很奇怪但适用于我的用例。

我认为有一种方法可以使用命令行 topojson 工具来完成:

topomerge -f 'false' districts=districts | toposimplify -f

toperge 输出一个空的区域几何图形,然后 toposimplify 将删除未引用的弧。