Suite

Comment modifier le nom du fichier de formes écrit dans la table attributaire dans QGIS?


J'ai adapté du code pythonscript QGIS d'une question précédente pour attribuer le nom de fichier d'un fichier de formes à cette table attributaire de fichiers de formes en prélude à la jonction de plusieurs fichiers de formes (le plugin SAGA ne fonctionne pas pour moi). Cela ressemble à ceci :

##Ajouter le nom de fichier à la table=nom ##Input_Folder=Dossier ##nomodeler import os import glob from os.path import expanduser home = expanduser("~") # Input Folder #path_dir = home + "/Documents/GIS Data/TEMP /" + Folder_Name path_dir = Input_Folder #Ceci prend l'entrée du paramètre #Vérifiez que le dossier "results" existe et sinon créez-le sinon os.path.exists(path_dir + "/Results") : os.makedirs(path_dir + "/Results") progress.setInfo("Définition de l'emplacement de sauvegarde") # Définissez l'emplacement de sauvegarde dans le dossier "results" path_res = path_dir + "/Results" progress.setInfo("Démarrage du traitement du fichier") def run() : # Définir le répertoire de travail et rechercher tous les fichiers de formes, puis exécuter l'algorithme os.chdir(path_dir ) pour fname dans glob.glob("*.shp") : formula = "'" + fname + "'" processing.runalg("qgis : fieldcalculator", fname, 'Filename', 2, 50, 0, True, formula , path_res + "/"+ fname) # Chemins des fichiers de formes dans le dossier Result avec la sortie de compréhension de liste = [shp pour shp dans glob.glob( path_res + "*.shp")] run() pr ogresse.setInfo("Terminé")

Actuellement, il ajoute le nom de fichier entier à la table attributaire. Comment modifier la formule pour couper le nom du fichier, par exemple pour extraire le code de tuile du système d'exploitation d'un fichier de formes appelé "HP_SomeText.shp" ?


Vous pouvez utiliser la ligne suivante pour obtenir les deux premiers caractères defnomet faites-le insérer dans votre Table d'attributs. Remplacez votre courantformule:

formule = "'" + nom_f + "'"

avec ça:

formule = "gauche('" + fname + "',2)"

J'espère que cela t'aides!