合并 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 将删除未引用的弧。
我正在尝试使用 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 将删除未引用的弧。