Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
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

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Sat 20 April 2024 16:08

Djakaridja
Juste Inscrit !
Date d'inscription: 27 Feb 2023
Messages: 2

Automatisation de calcul de champ sur Arcmap

Bonjour la communauté
J'ai besoin d'aide en python.
J'ai 3 champs.
Le champ X est en format texte et contient les expressions suivantes: 1an; 2ans; 3ans
Le champ Y est au format date jj/mm/AAAA
Le champ Z est aussi au format date jj/mm/aaaa.

Sous Arcmap, je veux automatiser la mise à jour du champ Z de sorte que lorsque je vais entrer la date dans le Y,

si X==1an, Z soit égal à AAAA de Y +1

si X==2ans, Z soit égal à AAAA de Y +2

si X==3ans, Z soit égal à AAAA de Y +3

Je vous remercie d'avance pour votre contribution

Hors ligne

 

#2 Fri 26 April 2024 09:58

Djakaridja
Juste Inscrit !
Date d'inscription: 27 Feb 2023
Messages: 2

Re: Automatisation de calcul de champ sur Arcmap

J'ai pu trouver la solution. Je la mets là si cela peut aider quelqu'un plu tard.
X= delai_co
Y= date_dia
Z= date_f_d

Code:

# Import system modules
import arcpy
import sys
from datetime import datetime, timedelta


inFeatures = r"\\srv-esriapp\connexion\sig_ev@srv-esribdd_dc.sde\sig.ev.ev_arbre_GBA"
fields = ['date_dia', 'delai_co', 'date_f_d']  
  
# Retrieve the field values  
data = []  
with arcpy.da.UpdateCursor(inFeatures, fields) as cursor:
    for row in cursor:
        date_dia, delai_co, date_f_d = row
        if date_dia is None or date_dia == "":
            # Si date_dia est nul ou vide, ne rien renseigner dans date_f_d
            row[2] = None
        elif delai_co in ["Aucun", "Indefini", None, ""]:
            # Si delai_co est "Aucun", "Indefini", nul ou vide, mettre nul ou ne rien renseigner dans date_f_d
            row[2] = None
        else:
            if delai_co == "1_an":
                date_f_d = date_dia + timedelta(days=365)
            elif delai_co == "2_ans":
                date_f_d = date_dia + timedelta(days=365*2)
            elif delai_co == "3_ans":
                date_f_d = date_dia + timedelta(days=365*3)
            # Update the field 
            row[2] = date_f_d
        cursor.updateRow(row)

Dernière modification par Djakaridja (Fri 26 April 2024 09:58)

Hors ligne

 

#3 Sat 27 April 2024 21:44

Bruno
Membre du bureau
Lieu: Toulouse
Date d'inscription: 22 Jun 2005
Messages: 11953
Site web

Re: Automatisation de calcul de champ sur Arcmap

Merci pour le partage!

Hors ligne

 

Pied de page des forums

Powered by FluxBB