【问题标题】:Difference between GeoJSON and TopoJSONGeoJSON 和 TopoJSON 的区别
【发布时间】:2013-01-22 08:06:43
【问题描述】:

GeoJSON 和 TopoJSON 有什么区别,我什么时候可以使用其中的一种?

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

【问题讨论】:

    标签: d3.js gis geojson topojson


    【解决方案1】:

    如果您关心文件大小或拓扑,请使用 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。

    【讨论】:

    【解决方案2】:

    TopoJSON 非常适合用于“捕捉”彼此的整洁特征,例如行政区域,但对更杂乱或有机的数据无济于事。如果你的数据只是点,那么 TopoJSON 就没有任何帮助了。

    【讨论】:

    • 即使在没有共享拓扑的情况下,TopoJSON 的定精度整数编码也可以比 GeoJSON 的浮点更高效。
    • 是的。我错了。我会删除我的答案,但我们会失去您的宝贵意见!
    • 哈,谢谢。 :) 我已经提交了一个单独的答案,其中包括其他注意事项。
    【解决方案3】:

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

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

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

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

    【讨论】:

    • 感谢 wsvekla。我一直在这样做 - 事实上,我在 bl.ocks.org 上找到了你的要点(bl.ocks.org/wsvekla/4533258bl.ocks.org/4348435),但对谷歌来说并不容易。但是,正如您指出的那样,有很多考虑因素,我正在尝试并排比较以了解这一点。
    • 这两个块引用了相同的原始 shapefile:bl.ocks.org/4485308bl.ocks.org/4348435。当我终于掌握了如何在同一个文件中用相同的数据表示多个特征(国家、部门和市政边界)时,TopoJSON 才真正开始深入人心(你不能用 geojson 做到这一点)。这是通过过滤函数完成的:function(a,b){return a.id !== b.id;})。尝试理解这一点,topojson 将开始变得有意义。如需更好的代码参考和极简主义,请参阅 Mike 的块:bl.ocks.org/4108203
    猜你喜欢
    • 2017-09-16
    • 2014-01-13
    • 2015-07-29
    • 2015-03-28
    • 1970-01-01
    • 2014-09-02
    • 1970-01-01
    • 2013-06-29
    • 2021-02-08
    相关资源
    最近更新 更多