【发布时间】:2013-01-22 08:06:43
【问题描述】:
GeoJSON 和 TopoJSON 有什么区别,我什么时候可以使用其中的一种?
description of TopoJSON on GitHub 表示 TopoJSON 文件小了 80%。那么为什么不一直使用 TopoJSON 呢?
【问题讨论】:
标签: d3.js gis geojson topojson
GeoJSON 和 TopoJSON 有什么区别,我什么时候可以使用其中的一种?
description of TopoJSON on GitHub 表示 TopoJSON 文件小了 80%。那么为什么不一直使用 TopoJSON 呢?
【问题讨论】:
标签: d3.js gis geojson topojson
如果您关心文件大小或拓扑,请使用 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。
【讨论】:
TopoJSON 非常适合用于“捕捉”彼此的整洁特征,例如行政区域,但对更杂乱或有机的数据无济于事。如果你的数据只是点,那么 TopoJSON 就没有任何帮助了。
【讨论】:
这取决于许多因素。其中有:
1) 您要表示的特征的性质(数据模型) 2)您希望与这些功能相关联的任何属性 3) 您希望这些功能在页面上的行为方式(静态与动态)
但是,这是一个很难抽象地回答的问题。关于某些细节,如果您有一个连续的多边形覆盖或其他特征共享边界的情况,topojson 的模型允许您利用冗余并将其纳入模型。
阅读文档,剖析示例(例如 bl.ocks.org),然后获取一些数据并在 geojson 和 topojson 中表示并创建您自己的可视化。
【讨论】: