Kịch bản cơ bản để lặp lại đệ quy trên các thư mục con và hợp nhất tất cả các shapefile thành một tập lệnh là:
#!/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
Hoverer trong vertaully tất cả các ví dụ trên web Tôi nhận thấy rằng trong trường hợp tôi cập nhật tệp đầu ra, -nln
thẻ được thêm vào, ví dụ:
ogr2ogr -f "ESRI Shapefile" -update -append $consolidated_file $i -nln merged
Theo tài liệu này có ghi:
Gán tên thay thế cho lớp mới
Và tôi nhận thấy nó tạo ra một shapefile tạm thời được gọi là "đã hợp nhất" và ở cuối vòng lặp, tập tin giống hệt với shapefile cuối cùng mà tôi đã hợp nhất.
Tôi không hiểu tại sao tôi cần điều này? Bởi vì tôi đã thành công để hợp nhất thành công mà không có thẻ này.