Lo script di base per iterare ricorsivamente su sottocartelle e unire tutti gli shapefile in uno solo è:
#!/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
Passando il mouse sopra tutti gli esempi sul Web, ho notato che per il caso in cui aggiorno il file di output, -nln
viene aggiunto un tag, ad esempio:
ogr2ogr -f "ESRI Shapefile" -update -append $consolidated_file $i -nln merged
Secondo la documentazione si dice:
Assegna un nome alternativo al nuovo livello
E ho notato che crea un file di forma temporaneo chiamato "unito" e alla fine del ciclo il file è identico all'ultimo file di forma che ho unito.
Non capisco perché ho bisogno di questo? Perché sono riuscito a unirmi con successo senza questo tag.