O script básico para iterar recursivamente sobre subpastas e mesclar todos os shapefiles em um único é:
#!/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
Pairando em quase todos os exemplos da Web, notei que, no caso em que atualizo o arquivo de saída, a -nln
tag é adicionada, por exemplo:
ogr2ogr -f "ESRI Shapefile" -update -append $consolidated_file $i -nln merged
De acordo com a documentação, diz:
Atribua um nome alternativo à nova camada
E notei que ele cria um shapefile temporário chamado "mesclado" e, no final do loop, o arquivo é idêntico ao último shapefile que mesclei.
Não entendo por que preciso disso? Porque consegui mesclar com sucesso sem essa tag.