Gracias a un formato bastante descerebrado llamado DBF, añadir campos a los shapefiles con datos de atributos existentes no es posible sin reescribir o añadir relleno al DBF. No conozco ninguna solución, pero lo que yo haría sería escribir un script para crear un nuevo shapefile basado en uno existente y añadir los campos adicionales al nuevo shapefile. A continuación, copie los datos de geometría y atributos del shapefile antiguo al nuevo. Y como paso final, eliminar el shapefile antiguo y renombrar el nuevo. Todo esto es bastante fácil de lograr utilizando OGR python bindings.
Alternativamente, puede utilizar dbfpy para hacer lo anterior sólo con el archivo DBF. El orden de los pasos sigue siendo el mismo:
- Crear un nuevo DBF con estructura idéntica al original
- Crear nuevos campos de atributos en el nuevo DBF
- Copiar datos del DBF original al nuevo DBF
- Eliminar DBF antiguo, renombrar DBF nuevo a DBF antiguo
No es necesario realizar ningún cambio en el propio archivo shape (.shp) ni en ninguno de los otros archivos, ya que no hacen referencia a la información de atributos contenida en el DBF. Sin embargo, debe mantener el orden de los registros exactamente igual en el DBF antiguo y en el nuevo.