GeoJSON和TopoJSON之间的区别

时间:2013-02-06 23:14:08

标签: d3.js gis geojson topojson

GeoJSON和TopoJSON之间的区别是什么?我何时使用其中一个?

description of TopoJSON on GitHub表示TopoJSON文件小80%。那么为什么不一直只使用TopoJSON呢?

3 个答案:

答案 0 :(得分:136)

如果您关心文件大小或拓扑,请使用TopoJSON。如果你不关心任何一个,那么为了简单起见使用GeoJSON。

TopoJSON的主要优点是尺寸。通过消除冗余并使用更高效的固定精度整数坐标编码,TopoJSON文件通常比GeoJSON文件小一个数量级。 TopoJSON文件的第二个优点是编码拓扑具有有用的应用程序,例如拓扑保留简化(类似于MapShaper)和自动网格生成(如this example choropleth中的状态边界)。

这些优势需要付出代价:更复杂的文件格式。例如,在JavaScript中,您通常使用TopoJSON client library将TopoJSON转换为GeoJSON,以便与d3.geoPath等标准工具一起使用。 (在Python中,您可以使用topojson.py。)此外,TopoJSON的整数格式需要量化坐标,这意味着如果您不小心它可能会引入舍入错误。 (请参阅topojson -q的文档。)

对于不需要拓扑的几何的服务器端操作,GeoJSON可能是更简单的选择。否则,如果您需要拓扑或想要通过线路将几何图形发送到客户端,请使用TopoJSON。

答案 1 :(得分:9)

TopoJSON非常适合与管理区域相互“快速”捕捉的整洁功能,但对于更混乱或有机数据无济于事。如果你的数据只是点数,那么TopoJSON根本没有帮助。

答案 2 :(得分:3)

这取决于许多因素。其中包括:

1)您要表示的要素的性质(数据模型) 2)您希望与这些功能相关联的任何属性 3)您希望这些功能在页面上的行为(静态与动态)

然而,这是一个难以回答的问题。关于某些细节,如果您有连续的多边形覆盖或其他特征共享边界的情况,topojson的模型允许您利用冗余并将其纳入模型中。

阅读文档,剖析示例(例如,bl.ocks.org),然后获取一些数据并在geojson和topojson中表示它们并创建自己的可视化。