Le script de base pour itérer récursivement sur des sous-dossiers et fusionner tous les fichiers de formes en un seul est:
#!/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 dans vertaully tous les exemples sur le web, j'ai remarqué que pour le cas où je mets à jour le fichier de sortie, une -nln
balise est ajoutée, par exemple:
ogr2ogr -f "ESRI Shapefile" -update -append $consolidated_file $i -nln merged
Selon la documentation, il est dit:
Attribuer un autre nom au nouveau calque
Et j'ai remarqué qu'il crée un fichier de formes temporaire appelé "fusionné", et à la fin de la boucle, le fichier est identique au dernier fichier de formes que j'ai fusionné.
Je ne comprends pas pourquoi j'ai besoin de ça? Parce que j'ai réussi à fusionner avec succès sans cette balise.