Graças a um formato de morte cerebral denominado DBF, a adição de campos aos shapefiles com dados de atributos existentes não é possível sem reescrever ou adicionar preenchimento ao DBF. Não conheço uma solução pronta, mas o que eu faria é escrever um script para criar um novo shapefile com base em um existente e adicionar campos extras ao novo shapefile. Em seguida, copie os dados da geometria / atributo do antigo para o novo shapefile. E como etapa final, remova o antigo shapefile e renomeie o novo. Tudo isso é facilmente realizado usando ligações OGR python.
Como alternativa, você pode usar o dbfpy para fazer o acima com apenas o arquivo DBF. A ordem das etapas permanece a mesma:
- Crie um novo DBF com estrutura idêntica à original
- Crie novos campos de atributo no novo DBF
- Copiar dados do DBF original para o novo DBF
- Remova o DBF antigo, renomeie o novo DBF para DBF antigo
Você não precisa fazer alterações no próprio shapefile (.shp) ou em qualquer outro arquivo, pois eles não fazem referência às informações de atributo contidas no DBF. No entanto, é necessário manter a ordem dos registros exatamente igual no DBF antigo e no novo.