Bienvenue! Inscrivez-vous et rejoignez notre communauté :)
  • Login:

Bienvenue sur Forum SIG - Systèmes d'Information Géographique et Géomatique.

Bienvenue sur le forumSIG. S'il s'agit de votre première visite, assurez vous de faire une recherche préalable dans les FAQ SIG. Vous devez vous inscrire avant de pouvoir poster.

Affichage des résultats 1 à 11 sur 11
  1. #1

    Date d'inscription
    août 2013
    Messages
    12

    Par défaut Exécution par lot et noms de champs variables

    Bonjour à tous,

    je souhaite réaliser sur différentes couches une même opération très simple : créer une colonne "Z" qui contient les valeurs de la colonne "Cote", toutes deux situées sur chacune de mes couches. Pour cela, j'ai créé un modèle que j'exécute par lot.

    Mon problème est que d'une couche à l'autre, le nom de la colonne "Cote" est variable ("Côte", "Côtes", "Cotes", etc.). J'aimerai donc pouvoir indiquer dans la calculatrice de champs "créer une colonne "Z" qui reprend les valeurs de la colonne "Cotes", ou "Cote", ou "Côtes", ou "Côte"" afin que mon modèle s'adapte aux différentes orthographes utilisées dans mon lot de couches. J'ai testé différentes solutions dans la calculatrice de champs, mais aucune ne fonctionne (utilisation de "OR", LIKE "C_te%", etc.). Quelqu'un a-t-il une idée de la bonne expression à utiliser ?

    Merci pour votre aide.

    Cordialement,

    Romain

  2. #2

    Date d'inscription
    octobre 2012
    Localisation
    Clermont-Ferrand
    Emploi
    Archéologue
    Organisme
    Inrap
    Âge
    33
    Messages
    18

    Par défaut Re : Exécution par lot et noms de champs variables

    Bonjour,

    étant donné que l'orthographe de votre champ est variable, il faudrait normalement utiliser l'opérateur ILIKE, qui est indifférent à la casse. Par exemple avec l'expression : ILIKE '%c_te%'.

    L'avez vous testé ?

  3. #3

    Date d'inscription
    août 2013
    Messages
    12

    Par défaut Re : Exécution par lot et noms de champs variables

    Bonjour Bhoudusse, et merci pour votre réponse.

    J'ai effectivement déjà tenté cette expression, mais ça ne fonctionne pas (message d'erreur : "Erreur d'analyse:syntax error, unexpected LIKE Erreur d'évaluation:Pas de nœud racine !" et bouton "ok" grisé). Je pense que l'opérateur "ILIKE" permet seulement la sélection de données, il faut donc enrichir l'expression, mais mes tentatives sont vaines...

    Cliquez sur l'image pour la voir en taille réelle 

Nom : 		Capture.jpg 
Affichages :	24 
Taille :		82,4 Ko 
ID : 			8771

    Romain

  4. #4
    Modérateur
    Date d'inscription
    novembre 2012
    Localisation
    Angers
    Messages
    593

    Par défaut Re : Exécution par lot et noms de champs variables

    Bonjour,
    Le souci est que là, il te faut en gros vérifier l'existence d'un champ (via son orthographe), alors que, à ma connaissance, les expressions QGIS partent du principe que le champ existe: Le "Like" va notamment vérifier un attribut. Par ailleurs, en passant par la calculatrice là, il faudrait procéder couche par couche.

    En pistes de solution (je n'ai essayé aucune):
    - écrire toi-même une fonction Python qui vérifie le champ et rapatrie son contenu dans un autre
    - voir l'algorithme "Refactoriser les champs" et notamment en mode batch. Je ne sais pas du tout comment ça fonctionnerait...
    - Utiliser l'algorithme "Refactoriser les champs" dans un modèle
    Je remarque dans la boîte à outils du menu Traitement, d'autres fonctions d'ajout de champs, notamment une "Calculatrice de champs avancée Python"... Malheureusement la majorité de ces fonctions est sous (voire non) documentée...
    "Les maisons sont proches pour qu'on puisse aller chercher du feu." Proverbe Moba
    Avant de poster, lire au moins une fois : De la bonne manière de poser les questions

  5. #5
    Admin' Portail Supporter(rice)

    Date d'inscription
    mars 2005
    Localisation
    Messanges
    Emploi
    Géomaticien
    Organisme
    CNRS
    Âge
    38
    Messages
    5 016

    Mes réseaux sociaux

    Follow Lud On Twitter

    Par défaut Re : Exécution par lot et noms de champs variables

    Bonjour
    Oui je pense que le plus simple et également le plus propre serait de renommer (refactoriser) les champs pour qu'ils aient le même nom et surtout en même temps supprimer ces accents qui ne devraient pas être utilisés dans un nom de champ
    "comme j' dis toujours C'est pas parce que c'est sérieux que ça doit être lugubre..." Phyto
    --------------
    Vous avez le droit de poster sur différents forums mais prévenez nous qu'on ne perde pas de temps à faire les mêmes réponses !
    --------------
    Merci de respecter les règles du forum
    Un avis, une remarque sur la nouvelle version du PortailSIG, cliquez ici
    Vous souhaitez devenir rédacteur du PortailSIG, contactez moi

  6. #6

    Date d'inscription
    août 2013
    Messages
    12

    Par défaut Re : Exécution par lot et noms de champs variables

    Bonjour,

    merci pour vos réponses. Je suis confronté au même problème avec l'outil "Refactoriser les champs", je n'arrive pas à créer un nouveau champs (ou renommer un existant) avec une expression du type ILIKE '%c_te%' afin que les différentes orthographes existantes puissent être prises en compte.

    Lud, c'est effectivement le but de la manœuvre, mais ayant plusieurs centaines de layers à manipuler et la dénomination de la colonne cible étant orthographier de différentes manières ("Côte", "Cotes", "Cote", etc.), je cherche à pouvoir "automatiser" le processus en indiquant un nom de champs variable ("c_te%"), malheureusement, sans succès pour le moment.

  7. #7
    Admin' Portail Supporter(rice)

    Date d'inscription
    mars 2005
    Localisation
    Messanges
    Emploi
    Géomaticien
    Organisme
    CNRS
    Âge
    38
    Messages
    5 016

    Mes réseaux sociaux

    Follow Lud On Twitter

    Par défaut Re : Exécution par lot et noms de champs variables

    Citation Envoyé par Rom144 Voir le message
    $* ILIKE '%c_te%'
    Cette expression est du sql qui permet d''interroger une valeur d'un champ, pas le nom du champ
    "comme j' dis toujours C'est pas parce que c'est sérieux que ça doit être lugubre..." Phyto
    --------------
    Vous avez le droit de poster sur différents forums mais prévenez nous qu'on ne perde pas de temps à faire les mêmes réponses !
    --------------
    Merci de respecter les règles du forum
    Un avis, une remarque sur la nouvelle version du PortailSIG, cliquez ici
    Vous souhaitez devenir rédacteur du PortailSIG, contactez moi

  8. #8

    Date d'inscription
    février 2016
    Localisation
    Lorraine
    Âge
    24
    Messages
    296

    Par défaut Re : Exécution par lot et noms de champs variables

    Bonjour, un batch qui créer la colonne si elle n'est pas présente dans la table et qui la calcul en utilisant la requête sql ne suffit pas?

    Sinon un combiner toute les couches puis un calcul de la colonne qui comporte le bon nom avec la condition que les valeur ne doivent pas être null/ou égal à zéro
    Diplos

  9. #9

    Date d'inscription
    août 2013
    Messages
    12

    Par défaut Re : Exécution par lot et noms de champs variables

    Bonjour Diplos,

    le problème est que la requête sql du type "ILIKE '%c_te%'" ne fonctionne pas pour interroger le nom d'un champs. Il faut donc que je tape dans le calculateur de champs 'Cote', ou 'Côte', ou 'Côtes' selon l'orthographe de la colonne qui varie d'une couche à une autre. Étant donné que j'ai des centaines de couches à traiter, c'est compliquer de réaliser la manipulation couche par couche.

  10. #10
    Admin' Portail Supporter(rice)

    Date d'inscription
    mars 2005
    Localisation
    Messanges
    Emploi
    Géomaticien
    Organisme
    CNRS
    Âge
    38
    Messages
    5 016

    Mes réseaux sociaux

    Follow Lud On Twitter

    Par défaut Re : Exécution par lot et noms de champs variables

    Bon alors la seule solution qui me vient, assez bidouille ... serai export par lot de ces couches dans un format textuel (csv, json, gml, etc) qui permettrait avec un bon éditeur de texte de faire un rechercher/remplacer qui parcourt un répertoire, puis un export par lot dans le format souhaité ...
    Moi je ferai sûrement comme ça
    Sinon, il se peut qu'un etl type geokettle, fme, talend ait la possibilité de faire des correspondance de champs basé sur une expression régulière
    "comme j' dis toujours C'est pas parce que c'est sérieux que ça doit être lugubre..." Phyto
    --------------
    Vous avez le droit de poster sur différents forums mais prévenez nous qu'on ne perde pas de temps à faire les mêmes réponses !
    --------------
    Merci de respecter les règles du forum
    Un avis, une remarque sur la nouvelle version du PortailSIG, cliquez ici
    Vous souhaitez devenir rédacteur du PortailSIG, contactez moi

  11. #11

    Date d'inscription
    août 2013
    Messages
    12

    Par défaut Re : Exécution par lot et noms de champs variables

    Merci Lud, je vais chercher une solution du côté des etl, je n'y avais pas pensé, c'est une bonne idée.

 

 

Discussions similaires

  1. [ArcGIS 10.x] Model builder : Temps d'exécution augmente à chaque itération et chaque exécution
    Par marieroy dans le forum Programmation
    Réponses: 5
    Dernier message: 11/11/2016, 13h03
  2. [QGIS 2.x] QGIS - Jointures: Noms de champs qui changent de noms...
    Par MauriceAlexander dans le forum Assistance et Programmation
    Réponses: 1
    Dernier message: 03/06/2014, 09h11
  3. Réponses: 3
    Dernier message: 13/04/2012, 11h03
  4. [ArcGIS 9.x] Variables et Custom Geoprocessing
    Par bogdangrega dans le forum Programmation
    Réponses: 2
    Dernier message: 02/12/2010, 20h36
  5. [ArcGIS 8.x] Noms de champs
    Par Saifi dans le forum Programmation
    Réponses: 2
    Dernier message: 20/07/2005, 18h53

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •