2017-04-20 70 views
0

我想將一個相對較大的geojson文件(383 MB)轉換爲topojson,以便與D3.js一起使用它。Large geojson topojson

geo2topo test.json > test.topojson 

,也爲簡化以下命令:我在Mac書臨2016運行以下命令

geo2topo test.json > test.topojson -q 10000 

他們都產生相同的以下錯誤:

buffer.js:503 throw new Error('"toString()" failed'); ^

Error: "toString()" failed at Buffer.toString (buffer.js:503:11) at 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 (internal/process/next_tick.js:80:11) at process._tickCallback (internal/process/next_tick.js:104:9)

我看了像this one這樣的線程,但還沒有找到任何解決方案。請注意,geojson本身格式正確,可以在d3.js中加載,但由於其大小不能在Web應用程序中使用。

+0

我遇到了完全相同的問題。你找到解決方案嗎? – normonics

+0

我也被困在這,我的geojson有2GB,可以真正使用一些topojson魔法。 AFAIK,v8無法讀取超過256mb的一個gulp(因此既不能節點,也不能geo2topo) –

回答

0

不瞭解實際的錯誤被拋出我有建議:

也許你可以利用ndjson?像ndjson-split 'd.features' <test.json> test.ndjson。這樣你可以將你的文件分解成更小的部分或通過ndjson-filter擺脫不必要的功能。

+0

這解決了這個問題(256Mb的限制)通過分割成更小的文件,這是我將接下來嘗試,但當你需要再次合併它們時會發生什麼? –

0

我昨天遇到同樣的問題。具體而言,v8引擎無法讀取大於256Mb的字符串。由於加載geojson的第一步是讀取並解析爲json,這是行不通的。

但是,一個良好的靈魂移植節點實施蟒蛇:

https://github.com/calvinmetcalf/topojson.py

因爲Python沒有這個限制,您可以使用此代碼來創建topojson,然後做任何你想要的它。