geojson to topojson:将一个文件夹中找到的每个文件转换为多个文件

时间:2015-10-14 13:06:25

标签: geojson topojson

我正在尝试将所有geojson文件从文件夹转换为另一个文件夹中的 topojson文件

  • 我想要相同数量的文件,相同的文件名。
  • 我想保留数据属性(多边形样式,名称,ID等)

我正在为一个文件运行的命令工作正常:

topojson -o topojson/filename.json geojson/filename.json -p

但是为了定位所有文件,我尝试了很多这样的事情:

topojson -o topojson/*.json geojson/*.json -p

...但我一直遇到这种错误:

$ topojson -o /topojson/*.json geojson/*.json -p
bounds: 2.2547809 48.8183713 2.412474 48.8994609 (spherical)
pre-quantization: 0.0175m (1.58e-7°) 0.00902m (8.11e-8°)
topology: 111711 arcs, 357075 points
post-quantization: 1.75m (0.0000158°) 0.902m (0.00000811°)
prune: retained 111711 / 111711 arcs (100%)
fs.js:549
  return binding.open(pathModule._makeLong(path), stringToFlags(flags), mode);
                 ^

Error: ENOENT: no such file or directory, open 'C:\projectname\topojson\*.json'
    at Error (native)
    at Object.fs.openSync (fs.js:549:18)
    at Object.fs.writeFileSync (fs.js:1161:15)
    at Object.module.exports [as writeFileSync] (C:\Users\my_username\AppData\Roaming\npm\node_modules\topojson\node_modules\rw\lib\rw\write-file-sync.js:14:8)
    at output (C:\Users\my_username\AppData\Roaming\npm\node_modules\topojson\bin\topojson:313:6)
    at notify (C:\Users\my_username\AppData\Roaming\npm\node_modules\topojson\node_modules\queue-async\queue.js:47:18)
    at Object.q.await (C:\Users\my_username\AppData\Roaming\npm\node_modules\topojson\node_modules\queue-async\queue.js:62:25)
    at Object. (C:\Users\my_username\AppData\Roaming\npm\node_modules\topojson\bin\topojson:201:3)
    at Module._compile (module.js:434:26)
    at Object.Module._extensions..js (module.js:452:10)

当您将所有geojson文件合并到一个topojson文件中时,它正在工作,但我找不到如何编写源文件夹中找到的文件数。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

正如snkashis在他关于topojson不支持通配符的评论中所猜测的那样,我在wiki搜索并发现了任何内容。

相反,我写了这个bash循环,工作正常:

for i in geojson/*.json -maxdepth 1; do
    topojson -o topojson/$i $i -p
done

虽然我在完成时遇到错误。但这将是另一个stackoverflow问题:)