Enregistrer les équations utilisées dans QGIS Field Calculator?

10

Im essayant de calculer certaines valeurs d'un point nouvellement calculé. J'utilise donc la calculatrice de champ pour écrire une équation afin de déterminer les valeurs.

Existe-t-il un moyen de sauvegarder cette équation, de sorte que si et quand je commence un nouveau travail, je n'ai pas à le retaper?

Quelque chose de similaire à la façon dont vous enregistrez les styles et la symbologie pour un tableau de points.

R Kumar
la source
C'est une bonne demande de fonctionnalité et serait assez facile à ajouter.
Nathan W

Réponses:

5

QGIS enregistre la dernière équation utilisée dans la calculatrice de champ sous l'onglet "Récent" où vous pouvez la réutiliser en double-cliquant dessus

img de calc du champ

Rire
la source
C'est vrai au cas où l'OP n'a pas utilisé d'autres équations plus tard. Mais il disparaîtra avec le temps lorsque l'OP utilisera de nouvelles équations. Le Recentconteneur est juste temporairement.
ahmadhanb
5

Vous pouvez écrire votre équation dans une nouvelle fonction, puis il vous suffira d'appeler la fonction pour réappliquer le calcul.

Ouvrez la calculatrice de champ, cliquez sur l' Function Editoronglet, new filepuis modifiez la fonction. Sélectionnez load. Notez que okce ne sera pas disponible à ce stade.

Revenez à l' Expressiononglet, sélectionnez le customgroupe de fonctions et double-cliquez sur votre fonction. Sélectionnez le champ à mettre à jour et appuyez sur ok.


Si vous ne souhaitez utiliser que des valeurs de champ et des constantes, vous pouvez modifier la signature de fonction par défaut, qui commence par value1. Dans mon exemple, je l'ai supprimé, mais vous pouvez utiliser ce (s) champ (s) pour passer de nouveaux arguments.

Vous pouvez alors accéder aux valeurs des champs d'entités en utilisant feature["fieldName"].... attention à n'appeler cette fonction que sur des calques contenant lesdits champs!

@qgsfunction(args='auto', group='Custom')
def funcTestCalc( feature, parent):
    return feature["fieldA"]+feature["fieldB"];

entrez la description de l'image ici entrez la description de l'image ici

JGH
la source
3

En plus de la solution de @LaughU, vous pouvez incorporer n'importe quelle opération de calculatrice de champ dans un modèle graphique, puis enregistrer et exécuter le modèle. Cela mais nécessite que les noms de vos colonnes soient toujours les mêmes.

Erik
la source
2

Si vous ajoutez un nouveau point à une couche existante et que vous souhaitez exécuter le même calcul pour ce point que pour tous les autres points, voici deux fonctionnalités utiles:

Champ virtuel

Un champ virtuel calcule automatiquement une expression pour chaque nouvel attribut. Il est également mis à jour régulièrement. Ainsi, par exemple, pour un champ virtuel appelé "latitude", vous pouvez utiliser l'expression $y.

Avantages et inconvénients des champs virtuels:

  • Chaque fois que vous ajoutez un nouveau point, la sortie de l'expression sera automatiquement ajoutée à ce champ.
  • Mis à jour automatiquement chaque fois que l'expression est mise à jour. Donc, si vous déplacez le point dans l'exemple, la valeur de "latitude" changera automatiquement.
  • Vous ne pouvez pas modifier une valeur de champ virtuel.
  • Les champs virtuels sont enregistrés en tant que partie du fichier de projet QGIS, et non en tant que partie du fichier de formes (ou quel que soit le format de votre couche). Donc, si vous ouvrez la couche dans un autre projet, elle n'aura pas ses champs virtuels.

Champ normal avec une valeur de champ par défaut

Vous pouvez configurer un champ pour avoir une valeur par défaut basée sur une expression. Lorsque vous créez un nouveau point, son attribut sera rempli automatiquement avec la valeur par défaut. Vous pouvez modifier la valeur de l'attribut. Il n'est pas mis à jour automatiquement. *

Avantages et inconvénients des valeurs de champ par défaut:

  • Chaque fois que vous ajoutez un nouveau point, la sortie de l'expression sera automatiquement ajoutée à ce champ.
  • Pas automatiquement mis à jour. Dans l'exemple, cela signifie que si vous déplacez un point existant, sa valeur de "latitude" ne sera pas mise à jour.
  • Vous pouvez modifier la valeur de ce champ.
  • Enregistré dans le fichier de formes. Donc, si vous ouvrez le calque dans un autre projet, il aura ce champ dans sa table attributaire.

* Dans QGIS 3.2, les valeurs de champ par défaut peuvent (facultativement) être définies sur "appliquer la valeur par défaut à la mise à jour". Avec cette option, si vous déplacez un point où la valeur par défaut est $yla valeur actuelle, elle sera remplacée par la nouvelle coordonnée y.

csk
la source
Je pense que la valeur de champ par défaut peut être définie sur la mise à jour automatique dans QGIS 3.2.
she_weeds
@she_weeds Merci de l'avoir signalé. Je mettrai à jour ma réponse pour inclure ces informations.
csk