我在用着草皮-cli(它可以与 一起安装sudo npm install -g turf-cli
)用于创建一些地理空间数据。turf-cli
是一个包装器turf.js 库这样我们就可以从命令行使用它的功能。假设我有以下脚本:
turf random points 1000 {} > geojsonFile.json
turf sample geojsonFile.json 2
在此示例中,第一行生成包含 1000 个随机点的 GeoJSON,第二行选择该文件的两个特征。到目前为止一切都很好。
好吧,我不想生成临时文件来存储第一行的数据,也不想将其存储在变量中,以便我可以在第二行中使用它。我发现的解决方法xargs
如下:
turf random points 1000 {} | jq -c '' | xargs -0 -I {} turf sample {} 2
这个脚本也运行得很好。基本上,它正在做:
- 用于
turf
在 GeoJSON 输出中生成 1000 个随机点。 - 用于
jq
将 GeoJSON 输出压缩为一行。 - 与参数一起使用
xargs
以便turf
第二次执行(因为turf
不接受stdin
参数)。
到目前为止,在我的示例中,我仅使用 .生成了 1000 个随机点turf
。这就是为什么一切都有效。但是,如果我尝试通过执行以下命令将随机点数增加到 10000:
turf random points 10000 {} | jq -c '' | xargs -0 -I {} turf sample {} 2
它返回给我错误:
xargs: argument line too long
我见过类似的xargs
问题这个解决方案是使用| xargs -I {} -0 ...
...但我已经在使用这些参数,但它在我的情况下不起作用。有没有什么方法可以让它工作,xargs
这样turf
即使它从管道接收到巨大的 GeoJSON,我也可以在其中执行?