Annonce
Pour sa 21ème année, l’association GeoRezo a toujours besoin de vous !
10€ = 1 mois de frais bancaires ; 15€ = 12 mois de nom de domaine ; 30€ = 1 semaine de location des serveurs …
Retrouver nos membres bienfaiteurs
Pages: 1
- Sujet précédent - QGIS: creer chemin d'acces avec constructeur de chaine d'expression - Sujet suivant
#1 Mon 08 June 2020 20:30
- yoll
- Juste Inscrit !
- Date d'inscription: 11 Feb 2015
- Messages: 9
QGIS: creer chemin d'acces avec constructeur de chaine d'expression
Bonsoir à tous,
J'espère que vous pourrez m'aider sur ce problème:
Dans mon dossier de travail de QGIS (@project_folder) j'ai plusieurs sous dossiers nommés "Artère 1", "Artère 2" ...
Dans ces dossiers j'ai un autre sous dossier nommé XXXXX_Photos pour "Artère 1", YYYYYY_Photos pour "Artère 2", etc...
J'aimerai savoir s'il est possible de passer outre les les caractères précédent "_Photos" pour ne garder que le "_Photos" et créer un chemin d'accès unique dans le constructeur de chaîne d'expression?
En gros j'aimerai que ça ressemble à ça :
@project_folder ||'/Artère ' || right( @layout_name ,1) || .......... || '_Photos/'
Merci d'avance pour me débloquer car là je sèche ...
Bonne soirée
Hors ligne
#2 Tue 09 June 2020 09:15
- Njoy
- Participant actif
- Lieu: Lyon
- Date d'inscription: 29 Nov 2018
- Messages: 89
Re: QGIS: creer chemin d'acces avec constructeur de chaine d'expression
Bonjour,
Je dis peut être une bêtise, mais quelque chose de comme ça ?
Code:
@project_folder || '/Artère ' || right( @layout_name ,1) || '******' || '_Photos/' ou @project_folder || '/Artère ' || right( @layout_name ,1) || '******_Photos/'
Hors ligne
#3 Tue 09 June 2020 10:14
- yoll
- Juste Inscrit !
- Date d'inscription: 11 Feb 2015
- Messages: 9
Re: QGIS: creer chemin d'acces avec constructeur de chaine d'expression
Bonjour,
Je dis peut être une bêtise, mais quelque chose de comme ça ?Code:
@project_folder || '/Artère ' || right( @layout_name ,1) || '******' || '_Photos/' ou @project_folder || '/Artère ' || right( @layout_name ,1) || '******_Photos/'
Bonjour et merci pour ta réponse Njoy,
Effectivement je recherche une formule de ce type pour que QGIS trouve tout seul ce qu'il y derrière les *.
Cependant ta solution ne fonctionne pas. Elle ne fait que écrire les * car elles sont entre ' '.
Mais merci encore car ça fait avancer mon problème.
De plus, le nombre de caractère derrière les * n'est pas constant. Il peut y avoir 5 caractères ou 9 ou 15 etc...
Bonne journée
Hors ligne
#4 Tue 09 June 2020 11:19
- Njoy
- Participant actif
- Lieu: Lyon
- Date d'inscription: 29 Nov 2018
- Messages: 89
Re: QGIS: creer chemin d'acces avec constructeur de chaine d'expression
Je sèche également
Et des dossiers photos tu en as beaucoup ? Tu peux pas te permettre de tous les écrire en dur via des conditions ?
D'autres pistes :
"le caractère "_" remplace n'importe quel caractère
le caractère "%" remplace n'importe qu'elle chaîne de caractères
le caractère "~" ???"
Hors ligne
#5 Tue 09 June 2020 12:13
- yoll
- Juste Inscrit !
- Date d'inscription: 11 Feb 2015
- Messages: 9
Re: QGIS: creer chemin d'acces avec constructeur de chaine d'expression
J'ai un dossier photo par dossier nommé "Artère X".
Ce dossier photo ne peut être renommé car il est lié à un fichier d'un logiciel qui va chercher ces photos dans ce dossier.
Mon chemin d'accès ressemble à ça :
"@project_folder/COMAC/Artère 1/BT-44109-00CL_Rue Paul Bert_Photos/"
et c'est "BT-44109-00CL_Rue Paul Bert" qui est aléatoire...
Hors ligne
#6 Tue 09 June 2020 12:17
- chanteclair
- Participant assidu
- Lieu: Pau
- Date d'inscription: 3 Jan 2007
- Messages: 726
Re: QGIS: creer chemin d'acces avec constructeur de chaine d'expression
Bonjour,
Vous pourriez peut-être stocker le nom de votre fichier dans un champ et générer le lien pour y accéder dans un champ virtuel qui se mettra automatiquement à jour en fonction du nom du fichier ?
Hors ligne
#7 Tue 09 June 2020 12:56
- yoll
- Juste Inscrit !
- Date d'inscription: 11 Feb 2015
- Messages: 9
Re: QGIS: creer chemin d'acces avec constructeur de chaine d'expression
Bonjour chanteclair,
Merci pour votre participation.
Je ne vois pas comment faire ce que vous dites.
Pourriez-vous développer un peu plus?
Hors ligne
#8 Tue 09 June 2020 13:03
- dominique.lys
- Participant assidu
- Date d'inscription: 5 Oct 2006
- Messages: 473
- Site web
Re: QGIS: creer chemin d'acces avec constructeur de chaine d'expression
A mon avis le plus simple est de passer par une fonction Python pour lister le sous-dossier, exemple :
Code:
from qgis.core import * from qgis.gui import * from pathlib import Path @qgsfunction(args='auto', group='Custom') def getFirstSubFolder(folder, feature, parent): return [str(p.stem) for p in Path(folder).rglob('*') if p.is_dir()][0]
A utiliser ensuite dans votre expression :
Code:
with_variable( 'root', @project_folder || '/Artère ' || right(@layout_name ,1), @root || getFirstSubFolder(@root))
Dernière modification par dominique.lys (Tue 09 June 2020 14:12)
Hors ligne
#9 Tue 09 June 2020 13:59
- yoll
- Juste Inscrit !
- Date d'inscription: 11 Feb 2015
- Messages: 9
Re: QGIS: creer chemin d'acces avec constructeur de chaine d'expression
A mon avis le plus simple est de passer par une fonction Python pour lister le sous-dossier, exemple :
Code:
from qgis.core import * from qgis.gui import * from pathlib import Path @qgsfunction(args='auto', group='Custom') def getFirstSubFolders(folder, feature, parent): return [str(p.stem) for p in Path(folder).rglob('*') if p.is_dir()][0]A utiliser ensuite dans votre expression :
Code:
with_variable( 'root', @project_folder || '/Artère ' || right(@layout_name ,1), @root || getFirstSubFolders(@root) || '_Photos/')
Bonjour dominique.lys,
Merci pour votre contribution!
Je n'ai jamais fais de fonction python. Où dois-je mettre la commande et quelles sont les variables que je dois adapter?
Hors ligne
#10 Tue 09 June 2020 14:06
- chanteclair
- Participant assidu
- Lieu: Pau
- Date d'inscription: 3 Jan 2007
- Messages: 726
Re: QGIS: creer chemin d'acces avec constructeur de chaine d'expression
Voici le procédé :
- les utilisateurs saisissent le nom d'un fichier avec son extension dans un champ texte.
- dans un champ virtuel, je génère l'URL qui pointe sur le fichier en question situé sur un serveur en local (formule saisie dans mon champ virtuel : '<a target="_blank" href=file://\\\\monserveur\\rep1\\sous_rep1\\sous_rep1_1\\'||"monchamp"||'>Consulter le lien</a>').
Les utilisateurs n'ont plus qu'à cliquer sur l'hyperlien pour ouvrir le document avec l'application appropriée.
Peut-être pourriez-vous détourner ce mode de fonctionnement ?
Hors ligne
#11 Tue 09 June 2020 14:11
- dominique.lys
- Participant assidu
- Date d'inscription: 5 Oct 2006
- Messages: 473
- Site web
Re: QGIS: creer chemin d'acces avec constructeur de chaine d'expression
Cela se fait dans l'éditeur d'expression : https://imgur.com/Abn1vBI
Ci-dessous un autre proposition peu un plus facile à utilisée dans l'expression
Code:
from qgis.core import * from qgis.gui import * from pathlib import Path @qgsfunction(args='auto', group='Custom') def getFirstSubFolder(folder, feature, parent): return [str(p) for p in Path(folder).iterdir() if p.is_dir()][0]
Qui devrait fonctionner avec cette syntaxe:
Code:
getFirstSubFolder(@project_folder || '/Artère ' || right(@layout_name ,1))
Dernière modification par dominique.lys (Tue 09 June 2020 14:49)
Hors ligne
#12 Tue 09 June 2020 14:31
- yoll
- Juste Inscrit !
- Date d'inscription: 11 Feb 2015
- Messages: 9
Re: QGIS: creer chemin d'acces avec constructeur de chaine d'expression
Merci à vous chanteclair mais la solution de dominique.lys est plus adéquat.
dominique.lys votre solution fonctionne mais par contre ça prend le premier dossier et ça ajoute '_Photos' au chemin d'accès.
Du coup j'ai supprimer '_Photos' à la formule et ça fonctionne !
Par contre si j'ai 5 sous dossiers et que mon dossier '_Photos' est à une place quelconque parmi c'est 5. Comment trouver ce dossier vu que ce n'est plus mon premier dossier?
un grand merci à tous pour votre aide et plus particulièrement à dominique.lys
Hors ligne
#13 Tue 09 June 2020 14:48
- dominique.lys
- Participant assidu
- Date d'inscription: 5 Oct 2006
- Messages: 473
- Site web
Re: QGIS: creer chemin d'acces avec constructeur de chaine d'expression
oui il faut virer _Photos dans la première proposition, erreur de ma part. Vous n'avez pas précisé qu'il pouvait y avoir d'autres sous dossier... Une solution :
Code:
@qgsfunction(args='auto', group='Custom') def getPhotoSubFolder(folder, feature, parent): for p in Path(folder).iterdir(): if p.is_dir() and str(p).endswith('_Photos'): return str(p)
Dernière modification par dominique.lys (Tue 09 June 2020 14:49)
Hors ligne
#14 Tue 09 June 2020 16:05
- yoll
- Juste Inscrit !
- Date d'inscription: 11 Feb 2015
- Messages: 9
Re: QGIS: creer chemin d'acces avec constructeur de chaine d'expression
Effectivement je n'avais pas précisé car il n'y a que ce dossier pour l'instant mais peut-être qu'un jour il y en aura d'autres
Hors ligne
Pages: 1
- Sujet précédent - QGIS: creer chemin d'acces avec constructeur de chaine d'expression - Sujet suivant