#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
Re: Automatisation de calcul de champ sur Arcmap
Merci pour le partage!
Hors ligne