我正在尝试将一个较大的geojson文件(383 MB)转换为topojson,以便与D3.js一起使用它。我在2016年mac图书专业版上运行以下命令:
geo2topo test.json > test.topojson还有以下简化命令:
geo2topo test.json > test.topojson -q 10000它们都会产生相同的错误:
buffer.js:503抛出新错误(‘toString()失败’);^ 错误:"toString ()“在Buffer.toString (buffer.js:503:11)位于JSON.parse () at ReadStream时失败。(/usr/local/lib/node_modules/topojson/node_modules/topojson-server/bin/geo2topo:107:46) at emitNone (events.js:91:20) at ReadStream.emit (events.js:188:7) at endReadableNT (_stream_readable.js:975:12) at _combinedTickCallback (tick.js/process/next_tick.js:80:11) at process._tickCallback (tick.js/process/next_tick.js:104:9)
我查看了各种线程,如this one,但没有找到任何解决方案。请注意,geojson本身是正确格式化的,可以在d3.js中加载,但由于其大小,无法在web应用程序中使用。
发布于 2017-04-20 09:42:34
没有意识到抛出的实际错误,我确实有一些建议:
也许你可以利用ndjson?就像ndjson-split 'd.features' < test.json > test.ndjson。这样,您就可以将文件分解成更小的部分,或者通过ndjson-filter消除不必要的特性。
发布于 2017-12-07 19:16:06
我昨天也遇到了同样的问题。具体来说,v8引擎不能读取大于256 v8的字符串。因为加载geojson的第一步是作为json读取和解析它,所以这是行不通的。
但是,一个好的灵魂将节点实现移植到python:
https://github.com/calvinmetcalf/topojson.py
因为python没有这个限制,所以您可以使用这段代码创建topojson,然后使用它做您想做的任何事情。
https://stackoverflow.com/questions/43514816
复制相似问题