Основной сценарий для рекурсивной итерации по подпапкам и объединения всех шейп-файлов в один:
#!/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
Согласно документации это говорит:
Назначьте альтернативное имя новому слою
И я заметил, что он создает временный шейп-файл под названием «объединенный», и в конце цикла файл идентичен последнему шейп-файлу, который я слил.
Я не понимаю, зачем мне это? Потому что мне удалось слить успешно без этого тега.