Renombrar archivos de forma en QGIS?

12

Tengo una gran lista de capas en un proyecto que se nombran en un idioma extranjero. Quiero traducir y agregar el título en inglés al nombre.

Cuando hago clic derecho en una capa y elijo Properties -> Generaly cambio el nombre de la capa, se visualiza en el árbol de capas pero el archivo original permanece igual.

¿Hay alguna manera de cambiar el nombre del archivo original de QGIS?

Hay tantos que buscarlos todos en mis carpetas llevaría demasiado tiempo.

kwai
fuente
1
Creo que tendría que hacer clic derecho y elegir guardar como para cambiar el nombre del archivo si no desea utilizar el explorador de Windows.
landocalrissian
Vinculación de solicitud de funciones relacionadas en QGIS.org: issues.qgis.org/issues/15791 , para que podamos vigilarlo.
Andre Silva

Respuestas:

9

Para hacerlo, necesitaría 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) cargar 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 QGIS en la tabla de contenido, 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 QGIS Python.
  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! Lo probé en GNU / Linux, QGIS 2.6. El orden de las capas en el ToC varía después de ejecutar el código.

Avísame si tienes algún problema.

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

Germán Carrillo
fuente
4

Para los usuarios de R, escribí una función rápida de R que cambia el nombre del archivo .shp y todos los archivos asociados. Es bastante básico, 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."))
}
ndimhypervol
fuente
1

Si tiene un esquema consistente para renombrarlos, puede hacerlo en un script de Python. Un método en python es os.rename (src, dest) . Los detalles específicos dependerán de cuál sea el algoritmo para renombrar los archivos. Esto es para renombrar los archivos reales, no solo los nombres de capa en la tabla de contenido.

De lo contrario, no conozco una alternativa para renombrarlos manualmente, ya que debe traducirlos. Podría, en teoría, construir un diccionario de traducciones en python, pero probablemente tomaría tanto tiempo codificarlo como hacerlo manualmente. Además, tenga en cuenta que cambiar el nombre de los archivos en sí romperá las fuentes de datos. Cambiar el nombre solo de los nombres de capa en la tabla de contenido debería estar bien, pero no estoy tan familiarizado con QGIS como Arc.

recurvata
fuente
1

Sugiero usar este programa para cambiar el nombre de sus archivos http://www.bulkrenameutility.co.uk/Main_Intro.php . Es abierto y fácil de usar. Después de cambiar el nombre de su archivo, debe abrir, con un editor de texto, su archivo de proyecto qgis (intente notepad ++) y haga lo mismo para buscar y reemplazar.

Sergio
fuente