Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Printemps des cartes 2024

#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

Njoy a écrit:

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: 717

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

dominique.lys a écrit:

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: 717

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 wink

Hors ligne

 

Pied de page des forums

Powered by FluxBB