Attribut / champ de coloration sur le formulaire de données QGIS basé sur la valeur?

8

L'utilisation de QGIS (2.14) est-il possible sur le formulaire de données pour un attribut d'avoir une couleur (ou une autre mise en forme) basée sur sa valeur?

Par exemple, si mes données ont un champ «qualité» qui a une valeur «bonne» ou «moyenne» ou «mauvaise». J'aimerais que le champ du formulaire d'attribut apparaisse vert / orange / rouge en fonction de cette valeur.

Je serais satisfait d'une solution de contournement - par exemple un symbole ou une icône qui apparaît à côté du champ, un arrière-plan coloré sur le champ, etc.

Je suis heureux d'utiliser QT Designer pour créer le formulaire de données. Je suis heureux de modifier le formulaire xml à la main. Je vais avoir du mal si la réponse est que j'ai besoin d'utiliser plus d'une ligne ou deux de code Python, donc je cherche probablement des réponses qui ne nécessitent pas cela.

J'ai également besoin de la mise en forme pour indiquer si la couche est en mode édition ou non (car les données principales que j'utilise ne seront pas modifiables).

EDIT: Notez que je recherche uniquement des solutions qui fonctionnent pour un formulaire de données QGIS, pas sur la table attributaire, et pas sur les données exportées. L'objectif est de rendre les données aussi faciles à comprendre que possible, afin qu'un utilisateur travaillant avec l'outil d'identification puisse rapidement voir / comprendre les informations clés sur une entité affichée sur la carte. Les vraies données avec lesquelles je travaille sont complexes et les utilisateurs de première ligne doivent être aidés pour les comprendre.

image d'un formulaire de données simple

Rostranimin
la source
Je l'exporterais en tant que feuille Excel et la colorierais. Mais je ne sais pas si c'est une solution de contournement avec laquelle vous pourriez vivre
JoeBe
Merci JoeBe - non, ce n'est pas ce que je recherche. Et comme indiqué par @ahmadhanb, QGIS a déjà des capacités pour styliser la table attributaire. Ce dont j'ai besoin, c'est d'améliorer la convivialité du formulaire de données afin que QGIS puisse être utilisé comme un moyen efficace d'inspecter les données (une fonctionnalité à la fois).
Rostranimin
Peut-être pourriez-vous dire aux utilisateurs d'ouvrir la table attributaire, puis de sélectionner "afficher les objets sélectionnés" (ou comment on l'appelle). Une fois que vous avez défini le style de la table attributaire (comme expliqué par @ahmadhanb), l'utilisateur peut voir un objet à la fois
JoeBe

Réponses:

3

Si je vous comprends très bien, vous pouvez effectuer une mise en forme de la table d'attributs en utilisant les étapes suivantes:

  1. Ouvrez votre table attributaire
  2. Utiliser des règles de mise en forme conditionnelle

entrez la description de l'image ici

  1. Sélectionnez le champ auquel vous souhaitez appliquer les règles de formatage dans la liste déroulante. Dans cet exemple, je veux utiliser un nom de champ"Test"

entrez la description de l'image ici

  1. Sélectionner New Rule
  2. Sélectionnez Nouvelle expression, écrivez l'expression que vous souhaitez "Field name" = 'Very High', Backgroundchoisissez la couleur que vous souhaitez et appuyez surDone

entrez la description de l'image ici

  1. Répétez l'étape 5 pour d'autres conditions et donnez-leur différentes couleurs d'arrière-plan comme vous pouvez le voir ci-dessous:

entrez la description de l'image ici

Voici les résultats finaux:

entrez la description de l'image ici

J'utilise QGIS 2.14.17 LTR

ahmadhanb
la source
Merci. J'en suis conscient, et c'est très utile, mais c'est le FORMULAIRE de données et non la table d'attributs à laquelle j'ai besoin d'ajouter un style.
Rostranimin
1
@Rostranimin Non, il n'y a aucun moyen d'appliquer le style basé sur des règles au formulaire de données. Cette option n'est appliquée qu'à la table attributaire. En tant que JoeBe, la seule option que vous avez est Excel.
ahmadhanb
êtes-vous sûr que cela ne peut pas être fait à l'aide d'un formulaire créé à l'aide de QT / QT Designer? Je peux voir que cela ne peut pas être fait en tant que fonction native / simple de QGIS - en utilisant le formulaire de données produit automatiquement - mais je suis presque sûr que cela pourrait être fait avec des scripts beaucoup plus avancés, etc. Je me demande si cela peut être fait d'une manière suffisamment simple pour que quelqu'un comme moi soit capable, simplement dans les paramètres disponibles à l'aide de QT Designer.
Rostranimin
Je ne sais pas s'il est possible de faire ce que vous voulez en utilisant QT / QT Designer. Mais, d'après mon expérience et basé sur la politique de GIS.SE, si vous voulez que cela se fasse à l'aide d'un script, dans ce cas, vous devez écrire votre propre script et demander de l'aide si vous êtes coincé quelque part dans votre code. Sinon, votre question sera fermée comme hors sujet.
ahmadhanb
Merci. Je l'apprécie. Je pense que cela peut être possible avec des paramètres relativement simples dans QT Designer - et que je ne sais tout simplement pas quels sont ces paramètres. La question est vraiment de savoir si c'est le cas - ou si cela nécessite en effet des scripts plus avancés. La réponse peut en effet être «non, cela ne peut pas être fait sans un script plus avancé». Je serai assez content de le savoir.
Rostranimin
3

Je n'ai pas l'expertise pour répondre (ou la réputation de poster le lien en commentaire) mais sur ce lien https://nathanw.net/2011/09/05/qgis-tips-custom-feature-forms-with-python -logic / , Nathan Woodrow explique comment cela pourrait être fait (la partie couleurs est près du bas de la page). Donc, cela pourrait certainement être fait, mais j'ai peur que cela implique beaucoup de Python ....

JR
la source
Merci. Oui, j'avais remarqué ce message. C'est ce qui me fait penser qu'une solution avancée est possible. Je pensais qu'il était possible de faire quelque chose de court - vous pouvez utiliser QT Designer pour configurer assez simplement des formulaires de données (pas besoin de faire de codage). Je travaille bien. Ce que je ne sais pas, c'est si ce que je demande est beaucoup plus avancé, ou s'il y a un réglage simple pour ça ...
Rostranimin