为了在子文件夹上递归迭代并将所有shapefile合并为一个脚本,基本脚本是:
#!/bin/bash
consolidated_file="./consolidated.shp"
for i in $(find . -name '*.shp'); do
if [ ! -f "$consolidated_file" ]; then
# first file - create the consolidated output file
ogr2ogr -f "ESRI Shapefile" $consolidated_file $i
else
# update the output file with new file content
ogr2ogr -f "ESRI Shapefile" -update -append $consolidated_file $i
fi
done
悬停在网络上的所有示例中,我确实注意到,在更新输出文件的情况下,-nln
会添加标记,例如:
ogr2ogr -f "ESRI Shapefile" -update -append $consolidated_file $i -nln merged
根据文档说:
为新图层分配一个备用名称
我注意到它创建了一个名为“ merged”的临时shapefile,在循环的最后,该文件与我合并的最后一个shapefile相同。
我不明白为什么我需要这个?因为我成功地合并了没有这个标签的人。