Renommer des fichiers de formes dans QGIS?

12

J'ai une énorme liste de couches dans un projet qui sont nommées dans une langue étrangère. Je veux traduire et ajouter le titre anglais au nom.

Lorsque je clique avec le bouton droit sur un calque et que je choisis Properties -> Generalet modifie le nom du calque, il est visualisé dans l'arborescence des calques mais le fichier d'origine reste le même.

Existe-t-il un moyen de modifier le nom du fichier d'origine à partir de QGIS?

Il y en a tellement que les chercher tous dans mes dossiers prendrait trop de temps.

kwai
la source
1
Je pense que vous devrez cliquer avec le bouton droit et choisir Enregistrer sous pour changer le nom du fichier si vous ne souhaitez pas utiliser l'Explorateur Windows.
landocalrissian
Lier la demande de fonctionnalité associée dans QGIS.org: issues.qgis.org/issues/15791 , afin que nous puissions garder un œil dessus.
Andre Silva

Réponses:

9

Pour ce faire, vous devrez i) supprimer la couche de la ToC, ii) renommer les fichiers conformes au Shapefile (c.-à-d. Shp, dbf, shx, prj, etc.) et iii) charger la couche renommée dans QGIS. Mais nous devons automatiser un tel flux de travail!

Si vous regardez les étapes, elles sont similaires à ce que fait le plugin Table Manager. J'ai donc adapté le code de ce plugin pour renommer les Shapefiles, vous pouvez le télécharger ici .

Vous pouvez l'utiliser de cette façon (essayez d'abord avec un petit projet de sauvegarde pour voir comment cela fonctionne):

  1. Renommez vos couches QGIS dans la ToC, ces nouveaux noms seront utilisés pour remplacer vos noms de Shapefiles correspondants.
  2. Enregistrez votre projet QGIS dans le même dossier que le script rename_shapefiles.py
  3. Ouvrez la console QGIS Python.
  4. Copiez ici l'extrait de code suivant:

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

C'est ça! Je l'ai testé sur GNU / Linux, QGIS 2.6. L'ordre des couches dans la ToC varie après l'exécution du code.

Faites-moi savoir si vous avez un problème.

Si vous avez besoin que l'ordre des calques soit préservé, posez une nouvelle question, peut-être que je peux le regarder :).

Germán Carrillo
la source
4

Pour les utilisateurs de R, j'ai écrit une fonction R rapide qui renomme par lots le fichier .shp et tous les fichiers associés. Ce sont des os assez nus, et il n'y a pas de vérification d'erreur, etc., donc s'il échoue, vous devrez faire une petite enquête.

# 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
la source
1

Si vous avez un schéma cohérent pour les renommer, vous pouvez le faire dans un script python. Une méthode en python est os.rename (src, dest) . Les détails spécifiques dépendraient de l'algorithme pour renommer les fichiers. C'est pour renommer les fichiers réels, pas seulement les noms de couches dans la table des matières.

Sinon, je ne connais pas d'alternative à les renommer manuellement, car vous devez les traduire. Vous pourriez, en théorie, construire un dictionnaire de traductions en python, mais cela prendrait probablement autant de temps à coder qu'à le faire manuellement. Sachez également que renommer les fichiers eux-mêmes entraînera la rupture des sources de données. Renommer uniquement les noms de couche dans la table des matières devrait être correct, mais je ne suis pas aussi familier avec QGIS qu'Arc.

recurvata
la source
1

Je suggère d'utiliser ce programme pour renommer vos fichiers http://www.bulkrenameutility.co.uk/Main_Intro.php . C'est ouvert et facile à utiliser. Après avoir renommé votre fichier, vous devez ouvrir, avec un éditeur de texte, votre fichier de projet qgis (essayez notepad ++) et faire la même recherche et remplacer.

Sergio
la source