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