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

Pour sécuriser votre compte sur les forums du GeoRezo, nous demandons de changer votre mot de passe.

Vous allez recevoir un message pour effectuer ce changement de mot de passe.

Merci de bien respecter les règles préconisées.

#1 Fri 07 August 2015 10:19

chrismat
Juste Inscrit !
Date d'inscription: 9 Jun 2015
Messages: 5

QGIS 2.10 : Calcul d'âge à partir d'une date de naissance

Bonjour,
J'ai cherché sur plusieurs forums la méthode pour calculer un âge à partir d'une date de naissance.
J'ai crée dans ma couche le champ "Date_nais1" et le champ "Age_1".
J'ai trouvé l'expression "year extract the year part from a date, or the number of years from an interval" (dont je ne suis sûr qu'il s'agisse de la plus adaptée) que j'ai mis que la calculatrice de champ dans l'onglet expression. N'étant pas franchement un expert dans ce type de démarche, je n'arrive pas à trouver ma solution puisque QGIS affiche : l'expression est invalide.
Merci d'avance pour votre aide.

Hors ligne

 

#2 Fri 07 August 2015 10:24

MathieuB
Membre du bureau
Lieu: Montpellier
Date d'inscription: 18 Jan 2006
Messages: 1223
Site web

Re: QGIS 2.10 : Calcul d'âge à partir d'une date de naissance

Bonjour et bienvenue sur Georezo,

vous disposez de la fonction age qui retourne un intervalle :

Code:

 year(age(now(),"Date_nais1"))

Mathieu BOSSAERT
Association GeoRezo

Hors ligne

 

#3 Fri 07 August 2015 14:16

chrismat
Juste Inscrit !
Date d'inscription: 9 Jun 2015
Messages: 5

Re: QGIS 2.10 : Calcul d'âge à partir d'une date de naissance

MathieuB a écrit:

Bonjour et bienvenue sur Georezo,

vous disposez de la fonction age qui retourne un intervalle :

Code:

 year(age(now(),"Date_nais1"))


Re bonjour,
Merci pour votre réponse.
J'ai saisi l'expression que vous m'avez indiquée mais le résultat n'est pas probant; j'obtiens - 59; même si l'on ne tient pas compte du signe moins, le résultat n'est pas bon non plus. Ca peut être pratique si l'on veut rajeunir mais ce n'est pas vraiment la démarche :-)
J'ai regardé mon format date au niveau du champ Age_1 : j'ai mis le même format que pour la date de naissance, à savoir Date/Heure : yyyy-MM-dd, car au départ j'avais mis un chiffre entier mais ça n'a pas réglé le problème ...
D'où peut venir le problème ?
Une idée ? Merci

Hors ligne

 

#4 Fri 07 August 2015 17:08

simo lay
Participant assidu
Date d'inscription: 8 Dec 2011
Messages: 172

Re: QGIS 2.10 : Calcul d'âge à partir d'une date de naissance

Bonjour,

Code:

  year( now())  -  year(  "Date_nais1" )

Dernière modification par simo lay (Fri 07 August 2015 17:11)

Hors ligne

 

#5 Fri 07 August 2015 17:47

chrismat
Juste Inscrit !
Date d'inscription: 9 Jun 2015
Messages: 5

Re: QGIS 2.10 : Calcul d'âge à partir d'une date de naissance

Parfait, le calcul se fait bien. Par contre, n'est-ce normal que pour des nouveaux enregistrements, la mise à jour ne fasse pas automatiquement ????

Hors ligne

 

#6 Fri 07 August 2015 18:09

SANTANNA
Moderateur
Lieu: Angers
Date d'inscription: 18 Jan 2008
Messages: 3824

Re: QGIS 2.10 : Calcul d'âge à partir d'une date de naissance

Bonsoir,
Bizarre que la formule de MathieuB ne marche pas chez vous. Ça m'a l'air de renvoyer des résultats cohérents de mon côté, plutôt sur un champ en format "nombre" que "date", vu que c'est un âge qui est calculé et pas une date.
Pour la mise à jour automatique, c'est normal. C'est du one-shot, QGIS inscrivant en dur le résultat plutôt que la formule dans ce champ. Pour l'automatique, il faut créer un champ virtuelet y calculer l'âge. Ça se mettra à jour tant pour les nouvelles données qu'au fil des jours.
Et recalculer à terme en dur dans un champ si besoin dans un autre projet.

Hors ligne

 

#7 Sat 08 August 2015 08:16

chrismat
Juste Inscrit !
Date d'inscription: 9 Jun 2015
Messages: 5

Re: QGIS 2.10 : Calcul d'âge à partir d'une date de naissance

Bonjour,
Merci pour toutes ces infos. J'ai croisé vos explications et j'ai crée mon champ virtuel avec la formule de Simo Lay. J'ai activé l'extension Memory Layer Saver. Du coup, même en réouvrant le projet, le champ virtuel reste et le calcul se fait bien. Nickel !
Merci encore.

Hors ligne

 

#8 Sat 08 August 2015 16:25

chrismat
Juste Inscrit !
Date d'inscription: 9 Jun 2015
Messages: 5

Re: QGIS 2.10 : Calcul d'âge à partir d'une date de naissance

Quelques remarques après les 1ers tests : si l'on ferme le projet et que l'on veut rajouter un champ virtuel le premier disparait, l'extension Memory Layer Saver ne fonctionne pas apparemment dans ce cas.
Avec la solution de Simo Lay (year( now())  -  year(  "Date_nais1" ) dans un champ normal, cela signifie dans la pratique qu'il faut que tous habitants aient été saisis préalablement avant de lancer la formule et donc si on saisit un nouvel arrivé, l'âge ne se met pas mis à jour. Je pense que la secrétaire travaillant sur la base de données va avoir quelques difficultés à re-saisir la formule dans les champs. Verriez-vous une solution moins contraignante ???
Merci

Hors ligne

 

#9 Mon 10 August 2015 12:43

SANTANNA
Moderateur
Lieu: Angers
Date d'inscription: 18 Jan 2008
Messages: 3824

Re: QGIS 2.10 : Calcul d'âge à partir d'une date de naissance

Bonjour,
Je n'ai pas forcément suivi toutes les évolutions de l'extension Memory Layer mais il me semblait qu'elle avait vocation à conserver dans un projet les couches mémoires (ou virtuelles) plutôt que les champs virtuels. Je ne suis donc pas sûr qu'elle ait un usage dans le cas présent. Les champs virtuels sont par défaut conservés sur la couche, dans le projet où ils ont été créés.
Je n'ai pas essayé avec la formule ci-dessus mais j'ai un projet avec un champ virtuel qui est conservé au fil des ouvertures/fermetures. Et je viens d'y ajouter un nouveau champ virtuel sans souci. Et le fichier se rouvre sans perte. Il doit y avoir une manip particulière que vous faites, non?
Pour ce qui est des alternatives :
- rédiger la procédure étape par étape pour la personne en charge de faire les modifs, avec la formule en question à copier/coller. Elle n'aura qu'à appliquer ce que vous aurez rédigé;
- migrer cette couche (au moins) dans une base de données spatialite où vous pourrez aussi créer une règle qui fait qu'à chaque création/modification de données, la base (re)calculera directement l'age.
Mais je me permets de répéter que pour ma part, le champ virtuel sur un fichier shapefile est conservé au fil des ouvertures et que je peux en ajouter de nouveaux sur la même couche, dans le même projet. Revérifiez peut-être votre procédure.

Hors ligne

 

Pied de page des forums

Powered by FluxBB