Comment définir une valeur par défaut pour les attributs dans les fichiers de formes?

8

Dans QGIS 2.14.6, je voudrais définir une valeur par défaut pour un attribut dans un fichier de formes (ou une couche de spatialite également) qui est appliquée si l'utilisateur ne définit pas explicitement la valeur.

Existe-t-il un moyen d'y parvenir en utilisant des outils / paramètres standard (sans python)?

Jochen Schwarze
la source
1
Mais à part que ces champs virtuels ne sont pas des attributs «réels» de ma source de données (pour autant que je sache uniquement stockés avec le projet), comment pourrais-je dire à un champ virtuel de réagir aux modifications des utilisateurs de manière à définir sa valeur, disons 3.1415926, si l'utilisateur ne définit pas de valeur d'attribut? Et peut-il être converti en attributs réels? Questions sur questions ... D'ailleurs, 'sans python' n'était pas obligatoire, je serais bien même si je pouvais y arriver avec 'un peu de python' ;-) (Et où est le commentaire de @ Joseph?!)
Jochen Schwarze
Désolé, supprimé mon commentaire: "Vous pouvez utiliser des champs virtuels" pour fournir une méthode possible en utilisant un plugin =)
Joseph
vérifiez cette question, mais c'est un code python. gis.stackexchange.com/questions/192105/…
Fran Raga

Réponses:

16

QGIS 3

Sélectionnez le calque dans le panneau des calques et cliquez avec le bouton gauche. Sélectionnez les propriétés. Sélectionnez le "formulaire d'attributs" comme indiqué ci-dessous. Sélectionnez les champs de la liste "Widgets disponibles" comme indiqué. Fournissez une expression pour la valeur par défaut dans la boîte de dialogue "Paramètres par défaut". Si la case "Appliquer la valeur par défaut à la mise à jour" est cochée, la valeur sera ajustée chaque fois que la géométrie de l'entité ou un autre attribut est modifié. Cela rend possible des choses comme un horodatage "last_modified" ou une "zone" mise à jour.

Définir la valeur par défaut du champ QGIS 3.0.3


QGIS 2.18

À partir de QGIS 2.18, cela est possible sans outils supplémentaires.

Accédez simplement aux propriétés du champ, cliquez sur le bouton dans le champ auquel vous souhaitez attribuer une valeur par défaut et entrez une expression. Il peut également prendre la géométrie en entrée.

entrez la description de l'image ici

Sidenote: Je sais que la question d'origine cible QGIS 2.14, mais je pense que cela intéresse toujours les futurs lecteurs de cette question.

Matthias Kuhn
la source
1
Certainement d'intérêt;)
Joseph
1
Je viens de jeter un œil à la fonctionnalité de la 2.17. Exactement ce que je cherchais.
Jochen Schwarze
7

Il existe le plugin AutoFields qui vous permet de créer (ou modifier) ​​des champs d'attributs et de les mettre à jour automatiquement avec une expression personnalisée .

Il a également été testé avec différents formats et les champs automatiques ne sont pas considérés comme des champs virtuels (cités sur la page d'accueil du plugin ):

Les champs automatiques fonctionnent-ils avec le format vectoriel «X»?

Nous avons déjà testé les champs automatiques sur les couches PostgreSQL / PostGIS, SpatiaLite , Shapefiles, WFS-T (Transactional Web Feature Service) et Memory. Veuillez me faire savoir si vous utilisez les champs automatiques sur d'autres formats vectoriels.

Les champs automatiques sont-ils comme des champs virtuels?

Nan. Contrairement aux champs virtuels, les champs automatiques:

  • Stockez les valeurs calculées dans les données;
  • Sont indépendants des projets QGIS, c'est-à-dire que vous pouvez basculer entre les projets QGIS et les champs automatiques fonctionneront toujours;
  • Ne fonctionne que sur des calques vectoriels modifiables.
Joseph
la source
5

Étant donné que je voudrais utiliser ces valeurs d'attributs mentionnées ci-dessus pour contrôler certains aspects de la symbologie (taille des symboles, opacité), certaines recherches approfondies ont révélé qu'avec les propriétés définies par les données, il existe un autre excellent moyen (et flexible) pour y parvenir. Une expression (générique)

if("attribute_name" is null, @default_value, "attribute_name")

@default_valueest défini en tant que variable de projet, renvoie une valeur par défaut qui peut être définie par l'utilisateur lorsqu'aucune valeur n'est définie pour l'attribut attribute_nameet sa valeur autrement.

Définissez les variables dans les propriétés du projet:

entrez la description de l'image ici

Configurez une expression avec des propriétés définies par les données (couleur rouge avec opacité définie par l'utilisateur dans ce cas):

entrez la description de l'image ici

Jochen Schwarze
la source