介绍
TopoJSON 是 GeoJSON 的扩展,增加了拓扑逻辑的编码。 TopoJSON 引入了一种新类型“拓扑”,其中包含 GeoJSON 对象。 拓扑有一个对象映射,它按名称索引几何对象。 这些是标准的 GeoJSON 对象,例如多边形、多多边形和几何集合。 但是,这些几何的坐标存储在拓扑的 arcs 数组中,而不是单独存储在每个对象上。arcs是一系列点,类似于线串; 弧线缝合在一起形成几何图形。 最后,拓扑有一个变换,它指定如何将增量编码的整数坐标转换为其原始值(例如经度和纬度)。
TopoJSON 文件中的几何图形不是独立地表示,而是由共享的线段(称为弧线)拼接而成。TopoJSON 消除了冗余,提供了比 GeoJSON 更紧凑的几何表示;典型的 TopoJSON 文件比 GeoJSON 等价文件小 80%。此外,TopoJSON 还为使用拓扑的应用提供了便利,如拓扑保护形状简化、自动地图着色和制图。
{
"type": "Topology",
"transform": {
"scale": [0.036003600360036005, 0.017361589674592462],
"translate": [-180, -89.99892578124998]
},
"objects": {
"aruba": {
"type": "Polygon",
"arcs": [[0]],
"id": 533
}
},
"arcs": [
[[3058, 5901], [0, -2], [-2, 1], [-1, 3], [-2, 3], [0, 3], [1, 1], [1, -3], [2, -5], [1, -1]]
]
}
TopoJSON 文件中的几何图形不是离散地表示几何图形,而是由称为弧的共享线段拼接在一起。这种技术类似于 Matt Bloch 的 MapShaper 和 Arc/Info 导出格式,.e00。 TopoJSON 消除了冗余,允许将相关几何图形有效地存储在同一文件中。例如,加利福尼亚州和内华达州之间的共享边界只出现一次,而不是两个州都重复。单个 TopoJSON 文件可以包含多个不重复的要素集合,例如州和县。或者,一个 TopoJSON 文件可以有效地将多边形(用于填充)和边界(用于笔画)表示为共享相同弧形网格的两个要素集合。
因此,TopoJSON 比 GeoJSON 更加紧凑。上面美国县的shapefile作为GeoJSON文件是2.2M,但是作为边界网格只有436K,不简化也减少了80.4%。 TopoJSON 也可以更有效地呈现,因为共享控制点只需要投影一次。为了进一步减小文件大小,TopoJSON 对整数坐标而不是浮点数使用固定精度的增量编码。这类似于舍入坐标值(例如 LilJSON),但精度更高。与 GeoJSON 一样,TopoJSON 文件可以在文本编辑器中轻松修改,并且可以进行 gzip 压缩。
最后,编码拓扑在地图和可视化方面有许多有用的应用。它促进了几何简化,保留了相邻特征的连通性;这甚至适用于跨要素集合,例如同时一致地简化州和县边界。拓扑也可用于多林地图和其他需要共享边界信息的技术。
数据制作
- 在线工具
- QGIS(安装TopoJSON Writer插件)