Logo
Section 1 / 9

GeoJSON 和 TopoJSON

了解 D3 中用于处理地理信息的格式。

导入

GeoJSON 和 TopoJSON

了解 D3 中用于处理地理信息的格式。

D3.js 的另一项强大功能是引入了一套处理地理信息的高效工具。

正如折线图是文档中数据的简单呈现方式一样,地图也可以被视为一组带有基础坐标系统的点。当你这样描述时,似乎将地图作为展示文档使用是显而易见的。然而,我并不想让人觉得这对原始开发者或希望展示地图的你来说是一件微不足道的事;在背后实现这类功能所付出的思考——让代码既可用又可扩展——必然极为深远。

GeoJSON 与 TopoJSON

GeoJSON

将国家及其他地理特征投影到地图上可能是一项数据密集型任务。这意味着,为了呈现地理形状所需的信息可能导致数据文件体积庞大。长期以来,GeoJSON 已成为地理数据文件的默认选择。顾名思义,它以 JSON 的层级结构编码数据。但这些 GeoJSON 文件常常包含大量冗余细节,或精度高得不切实际(过于精细)。

TopoJSON

这时便出现了 TopoJSON。Mike Bostock 设计 TopoJSON 作为 GeoJSON 的一种延伸:其结构类似,但几何数据并非独立编码。共享边界的区域会被合并处理。此外,TopoJSON 对数值的编码更加高效,并支持一定程度的简化。这种简化可使文件大小减少 80% 甚至更多,具体取决于区域范围和压缩程度。其优势显而易见,因此在我的示例图表中也采用了 TopoJSON(尽管使用 GeoJSON 的差异并不大,甚至可以忽略)。

子弹图

从一个简单的 Map 开始