Saltar al contenido

¿Cambiar el nombre de Shapefiles en QGIS?

este problema se puede tratar de variadas maneras, pero en este caso te mostramos la respuesta más completa en nuestra opinión.

Solución:

Para hacerlo, tendría que i) eliminar la capa del ToC, ii) cambiar el nombre de los archivos que conforman el Shapefile (es decir, shp, dbf, shx, prj y similares), y iii) cargue la capa renombrada en QGIS. ¡Pero necesitamos automatizar ese flujo de trabajo!

Si observa los pasos, son similares a lo que hace el complemento Table Manager. Entonces, adapté el código de dicho complemento para cambiar el nombre de Shapefiles, puede descargarlo desde aquí.

Puede usarlo de esta manera (primero intente con un pequeño proyecto de copia de seguridad para ver cómo funciona):

  1. Cambie el nombre de sus capas de QGIS en el ToC, estos nuevos nombres se tomarán para sobrescribir sus nombres de Shapefiles correspondientes.
  2. Guarde su proyecto QGIS en la misma carpeta que el script rename_shapefiles.py
  3. Abra la consola Python de QGIS.
  4. Copie el siguiente fragmento de código allí:

    from rename_shapes import RenameShapefiles
    for lyr in iface.mapCanvas().layers():
        rn = RenameShapefiles( iface, lyr )
        rn.doSave()
    

¡Eso es todo! Lo he probado en GNU/Linux, QGIS 2.6. El orden de las capas en la ToC varía después de ejecutar el código.

Avísame si tienes algún problema.

Si necesita que se conserve el orden de las capas, haga una nueva pregunta, tal vez pueda verla :).

Para los usuarios de R, escribí una función R rápida que cambia el nombre por lotes del archivo .shp y todos los archivos asociados. Es bastante simple, y no hay verificación de errores, etc., por lo que si falla, deberá investigar un poco.

# Function to rename shapefile (.shp) and all associated files
# fpath = full file path of any of the associated files (character)
# newName = new name for the files (character)

renameShp <- function(fpath, newName) 
  dir <- dirname(fpath)
  base <- basename(fpath)
  fname <- strsplit(base, '[.]')[[1]][1]
  ls <- list.files(path=dir, pattern=fname, full.names=TRUE)
  sapply(ls, FUN=function(p)
    file.rename(from=p, to=sub(pattern=fname,replacement=newName, p))
  )
  print(paste("Renamed", length(ls), "files."))

Calificaciones y reseñas

Al final de la artículo puedes encontrar las crónicas de otros gestores de proyectos, tú de igual manera tienes la opción de mostrar el tuyo si te gusta.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *