您链接到的教程是一个很好的起点。我希望在尝试自己解决所有问题之前看到它。:)
据我了解,您可能错过了安装gdal
. 如果您看到其他错误,请将它们发布在您的问题中。
您可以通过运行 ogr2ogr 工作:
brew install gdal
这里有一些背景信息,以便您更好地了解那里发生的事情。
topojson
并且ogr2ogr
是两个不同的实用程序。ogr2ogr
是gdal
包的一部分,在我们的例子中用于从 shapefile 生成 GeoJSON。
GDAL 是一个栅格地理空间数据格式的翻译库,由开源地理空间基金会在 X/MIT 风格的开源许可下发布。作为一个库,它为所有支持的格式向调用应用程序提供一个单一的抽象数据模型。它还带有各种有用的命令行实用程序,用于数据转换和处理。
TopoJSON 用于压缩来自先前 GDAL 转换的相当大的 GeoJSON 输出。它通过指定带有弧线而不是离散点的路径来减少冗余。它非常整洁,实际上:
TopoJSON 是对拓扑进行编码的 GeoJSON 的扩展。TopoJSON 文件中的几何不是离散地表示几何,而是从称为弧的共享线段缝合在一起。TopoJSON 消除了冗余,提供比 GeoJSON 更紧凑的几何表示;典型的 TopoJSON 文件比对应的 GeoJSON 文件小 80%。此外,TopoJSON 促进了使用拓扑的应用程序,例如保留拓扑的形状简化、自动地图着色和制图。
这两个步骤(shapefile -> GeoJSON -> TopoJSON)的输出将是一个 JSON 字符串,它很容易被 JavaScript 解释。您需要在绘图代码中使用 topojson 转换回 GeoJSON 以实际绘制地图。
回想一下前面提到的两种密切相关的 JSON 地理数据格式:GeoJSON 和 TopoJSON。虽然我们的数据可以更有效地存储在 TopoJSON 中,但我们必须转换回 GeoJSON 才能显示。打破这一步使其明确:
var subunits = topojson.object(uk, uk.objects.subunits);