#1 Wed 07 September 2016 10:06
- Ricola62
- Participant assidu
- Date d'inscription: 24 Apr 2012
- Messages: 167
arcpy.env.overwriteOutput ne fonctionne pas
Bonjour,
lors d'une conversion classe d'entité vers geodatabase dans un model builder, je voudrais écraser les classes d'entité déjà présente.
j'ai ajouté a mon script python (issue du model) arcpy.env.overwriteOutput = True.
J'ai également coché l'autorisation d'écraser des couches en sortie d'outil au niveau des options de géotraitements ArcCatalog/ArcMap.
Je fais suivre mon script:
Code:
# -*- coding: utf-8 -*- # --------------------------------------------------------------------------- # imaluxbis.py # Created on: 2016-08-31 11:38:31.00000 # (generated by ArcGIS/ModelBuilder) # Description: # --------------------------------------------------------------------------- # Import arcpy module import arcpy # Ecrase la classe d'entites cible si elle existe arcpy.env.overwriteOutput = True # Load required toolboxes arcpy.ImportToolbox("G:/Expert/Commun/ToolsBox/Commun.tbx") # Local variables: IMALUX_lum_tvoi = "Connexions aux bases de données\\IMALUX.sde\\IMALUX.lum_tvoi" IMALUX_Imavers = "Connexions aux bases de données\\IMALUX.sde\\IMALUX.Imavers" IMALUX_lum_allu = "Connexions aux bases de données\\IMALUX.sde\\IMALUX.lum_allu" IMALUX_lum_aut = "Connexions aux bases de données\\IMALUX.sde\\IMALUX.lum_aut" IMALUX_lum_cof = "Connexions aux bases de données\\IMALUX.sde\\IMALUX.lum_cof" IMALUX_lum_der = "Connexions aux bases de données\\IMALUX.sde\\IMALUX.lum_der" IMALUX_lum_desi = "Connexions aux bases de données\\IMALUX.sde\\IMALUX.lum_desi" IMALUX_lum_dobj = "Connexions aux bases de données\\IMALUX.sde\\IMALUX.lum_dobj" IMALUX_lum_itv = "Connexions aux bases de données\\IMALUX.sde\\IMALUX.lum_itv" IMALUX_lum_itv_2016_06 = "Connexions aux bases de données\\IMALUX.sde\\IMALUX.lum_itv_2016_06" IMALUX_lum_itv_agt = "Connexions aux bases de données\\IMALUX.sde\\IMALUX.lum_itv_agt" IMALUX_lum_itv_dem = "Connexions aux bases de données\\IMALUX.sde\\IMALUX.lum_itv_dem" IMALUX_lum_itv_fo = "Connexions aux bases de données\\IMALUX.sde\\IMALUX.lum_itv_fo" IMALUX_lum_itv_mat = "Connexions aux bases de données\\IMALUX.sde\\IMALUX.lum_itv_mat" IMALUX_lum_itv_obj = "Connexions aux bases de données\\IMALUX.sde\\IMALUX.lum_itv_obj" IMALUX_lum_itv_prs = "Connexions aux bases de données\\IMALUX.sde\\IMALUX.lum_itv_prs" IMALUX_lum_itv_prs_2016_06 = "Connexions aux bases de données\\IMALUX.sde\\IMALUX.lum_itv_prs_2016_06" IMALUX_lum_itv_rea_sys = "Connexions aux bases de données\\IMALUX.sde\\IMALUX.lum_itv_rea_sys" IMALUX_lum_itv_rue = "Connexions aux bases de données\\IMALUX.sde\\IMALUX.lum_itv_rue" IMALUX_lum_lam = "Connexions aux bases de données\\IMALUX.sde\\IMALUX.lum_lam" IMALUX_lum_lnom = "Connexions aux bases de données\\IMALUX.sde\\IMALUX.lum_lnom" IMALUX_lum_lut = "Connexions aux bases de données\\IMALUX.sde\\IMALUX.lum_lut" IMALUX_lum_nome = "Connexions aux bases de données\\IMALUX.sde\\IMALUX.lum_nome" IMALUX_lum_sup = "Connexions aux bases de données\\IMALUX.sde\\IMALUX.lum_sup" IMALUX_lum_tra = "Connexions aux bases de données\\IMALUX.sde\\IMALUX.lum_tra" IMALUX_hllum = "Connexions aux bases de données\\IMALUX.sde\\IMALUX.hllum" IMALUX_hmlum = "Connexions aux bases de données\\IMALUX.sde\\IMALUX.hmlum" IMALUX_hplum = "Connexions aux bases de données\\IMALUX.sde\\IMALUX.hplum" IMALUX_htlum = "Connexions aux bases de données\\IMALUX.sde\\IMALUX.htlum" IMALUX_lum_arc = "Connexions aux bases de données\\IMALUX.sde\\IMALUX.lum_arc" IMALUX_lum_cant = "Connexions aux bases de données\\IMALUX.sde\\IMALUX.lum_cant" IMALUX_lum_det = "Connexions aux bases de données\\IMALUX.sde\\IMALUX.lum_det" IMALUX_lum_itv_nomade = "Connexions aux bases de données\\IMALUX.sde\\IMALUX.lum_itv_nomade" IMALUX_lum_itv_sect_ope = "Connexions aux bases de données\\IMALUX.sde\\IMALUX.lum_itv_sect_ope" IMALUX_lum_itv_sect_sys = "Connexions aux bases de données\\IMALUX.sde\\IMALUX.lum_itv_sect_sys" IMALUX_lum_itv_site = "Connexions aux bases de données\\IMALUX.sde\\IMALUX.lum_itv_site" IMALUX_lum_lat = "Connexions aux bases de données\\IMALUX.sde\\IMALUX.lum_lat" IMALUX_lum_noeu = "Connexions aux bases de données\\IMALUX.sde\\IMALUX.lum_noeu" IMALUX_lum_plan = "Connexions aux bases de données\\IMALUX.sde\\IMALUX.lum_plan" IMALUX_lum_quar = "Connexions aux bases de données\\IMALUX.sde\\IMALUX.lum_quar" IMALUX_lum_sect = "Connexions aux bases de données\\IMALUX.sde\\IMALUX.lum_sect" IMALUX_lum_squa = "Connexions aux bases de données\\IMALUX.sde\\IMALUX.lum_squa" imalux_gdb = "G:\\Imagis\\VV_Donnes_Specifiques\\Sauvegarde_BDD_SDE\\imalux.gdb" imalux_gdb__2_ = imalux_gdb imalux_gdb__3_ = imalux_gdb__2_ # Process: Classe d’entités vers géodatabase (multiple) arcpy.FeatureClassToGeodatabase_conversion("'Connexions aux bases de données\\IMALUX.sde\\IMALUX.hllum';'Connexions aux bases de données\\IMALUX.sde\\IMALUX.hmlum';'Connexions aux bases de données\\IMALUX.sde\\IMALUX.hplum';'Connexions aux bases de données\\IMALUX.sde\\IMALUX.htlum';'Connexions aux bases de données\\IMALUX.sde\\IMALUX.lum_arc';'Connexions aux bases de données\\IMALUX.sde\\IMALUX.lum_cant';'Connexions aux bases de données\\IMALUX.sde\\IMALUX.lum_det';'Connexions aux bases de données\\IMALUX.sde\\IMALUX.lum_itv_nomade';'Connexions aux bases de données\\IMALUX.sde\\IMALUX.lum_itv_sect_ope';'Connexions aux bases de données\\IMALUX.sde\\IMALUX.lum_itv_sect_sys';'Connexions aux bases de données\\IMALUX.sde\\IMALUX.lum_itv_site';'Connexions aux bases de données\\IMALUX.sde\\IMALUX.lum_lat';'Connexions aux bases de données\\IMALUX.sde\\IMALUX.lum_noeu';'Connexions aux bases de données\\IMALUX.sde\\IMALUX.lum_plan';'Connexions aux bases de données\\IMALUX.sde\\IMALUX.lum_quar';'Connexions aux bases de données\\IMALUX.sde\\IMALUX.lum_sect';'Connexions aux bases de données\\IMALUX.sde\\IMALUX.lum_squa'", imalux_gdb) # Process: Table à géodatabase (multiple) arcpy.TableToGeodatabase_conversion("'Connexions aux bases de données\\IMALUX.sde\\IMALUX.lum_tvoi';'Connexions aux bases de données\\IMALUX.sde\\IMALUX.Imavers';'Connexions aux bases de données\\IMALUX.sde\\IMALUX.lum_allu';'Connexions aux bases de données\\IMALUX.sde\\IMALUX.lum_aut';'Connexions aux bases de données\\IMALUX.sde\\IMALUX.lum_cof';'Connexions aux bases de données\\IMALUX.sde\\IMALUX.lum_der';'Connexions aux bases de données\\IMALUX.sde\\IMALUX.lum_desi';'Connexions aux bases de données\\IMALUX.sde\\IMALUX.lum_dobj';'Connexions aux bases de données\\IMALUX.sde\\IMALUX.lum_itv';'Connexions aux bases de données\\IMALUX.sde\\IMALUX.lum_itv_2016_06';'Connexions aux bases de données\\IMALUX.sde\\IMALUX.lum_itv_agt';'Connexions aux bases de données\\IMALUX.sde\\IMALUX.lum_itv_agt_1';'Connexions aux bases de données\\IMALUX.sde\\IMALUX.lum_itv_dem';'Connexions aux bases de données\\IMALUX.sde\\IMALUX.lum_itv_fo';'Connexions aux bases de données\\IMALUX.sde\\IMALUX.lum_itv_mat';'Connexions aux bases de données\\IMALUX.sde\\IMALUX.lum_itv_obj';'Connexions aux bases de données\\IMALUX.sde\\IMALUX.lum_itv_prs';'Connexions aux bases de données\\IMALUX.sde\\IMALUX.lum_itv_prs_2016_06';'Connexions aux bases de données\\IMALUX.sde\\IMALUX.lum_itv_rea_sys';'Connexions aux bases de données\\IMALUX.sde\\IMALUX.lum_itv_rue';'Connexions aux bases de données\\IMALUX.sde\\IMALUX.lum_lam';'Connexions aux bases de données\\IMALUX.sde\\IMALUX.lum_lnom';'Connexions aux bases de données\\IMALUX.sde\\IMALUX.lum_lut';'Connexions aux bases de données\\IMALUX.sde\\IMALUX.lum_nome';'Connexions aux bases de données\\IMALUX.sde\\IMALUX.lum_sup';'Connexions aux bases de données\\IMALUX.sde\\IMALUX.lum_tra'", imalux_gdb__2_) # Process: log arcpy.gp.toolbox = "G:/Expert/Commun/ToolsBox/Commun.tbx"; # Warning: the toolbox G:/Expert/Commun/ToolsBox/Commun.tbx DOES NOT have an alias. # Please assign this toolbox an alias to avoid tool name collisions # And replace arcpy.gp.log(...) with arcpy.log_ALIAS(...) arcpy.gp.log()
Si vous avez une solution pour m'aider...
Merci d'avance
Hors ligne
#2 Wed 07 September 2016 16:11
- grdfred
- Participant actif
- Lieu: nantes
- Date d'inscription: 17 Jul 2007
- Messages: 56
Re: arcpy.env.overwriteOutput ne fonctionne pas
Bonjour
J’ai l’habitude d'utiliser ce paramètre dans mes scripts python (Arcgis v10.0) sans aucun souci. Par contre je ne maitrise pas du tout les connexions SDE.
Ton script de conversion fonctionne-t-il si tu n'écrase pas la donnée existante ? C'est une question bête mais j'ai pas d'autres pistes.
Bon courage
Fred
Hors ligne
#3 Wed 07 September 2016 17:37
- Ricola62
- Participant assidu
- Date d'inscription: 24 Apr 2012
- Messages: 167
Re: arcpy.env.overwriteOutput ne fonctionne pas
Oui cela marche! et lorsque je lance le script ci dessus au lieu de me les écraser, j'obtiens des données unique avec _1 à la fin de chaque nom.
je bosse avec Arcgis 10.3.1
Hors ligne
#4 Fri 09 September 2016 08:26
Re: arcpy.env.overwriteOutput ne fonctionne pas
Bonjour,
Le renommage des classes d'entités ou des tables avec "_1" si elles existant déjà est exactement le fonctionnement décrit dans la documentation (Classe d'entités vers géodatabase et Table vers géodatabase) :
Si le nom existe déjà dans la géodatabase en sortie, un numéro est ajouté à la fin pour rendre le nom de la classe d'entités unique, par exemple, rivers_1.
Tu pourrrais peut-être supprimmer les tables et les classes juste avant de les copier...
A+
Franck
Hors ligne
#5 Wed 05 October 2016 10:38
- Ricola62
- Participant assidu
- Date d'inscription: 24 Apr 2012
- Messages: 167
Re: arcpy.env.overwriteOutput ne fonctionne pas
j'ai eu la réponse à ce problème, j'évolue avec un arcgis 10.3.1 et il se trouve qu'il existe un bug entre arcpy.env.overwriteOutput et cette version.
(j'ai demandé directement au support ESRI)
Hors ligne