Suite

Comment gérer les fichiers temporaires créés lors de l'extraction par masque (Spatial Analyst) ?

Comment gérer les fichiers temporaires créés lors de l'extraction par masque (Spatial Analyst) ?


J'ai trois scripts exécutés simultanément qui traitent les données raster dans plusieurs répertoires. Le problème que je rencontre est qu'ArcGIS crée un fichier de grille temporaire appelé "Extract_recl1" lorsque l'outil Extraire par masque (Spatial Analyst) est appelé. Le fichier temporaire est créé dans un répertoire où il recherche des données raster. Voyant que plusieurs scripts s'exécutent simultanément, il y a parfois un conflit lorsqu'un script essaie d'exécuter Extract By Mask et rencontre 'Extract_recl1', qui a été créé par Extract by Mask exécuté dans un script différent. Voici l'erreur que je reçois :

ExecuteError : ERREUR 010429 : Erreur dans GRID IO : CellLyrCreateInternal : le répertoire f:mydirectory
eclass_new_classesextract_recl1 existe déjà. ERREUR 010302 : Impossible de créer le raster en sortie : F:mydirectory
eclass_new_classesExtract_recl1 ERREUR 010067 : Erreur lors de l'exécution de l'expression de grille. Échec de l'exécution (ExtractByMask).

J'ai essayé de gérer cette situation en enregistrant l'objet raster avec un nom unique dans un répertoire temporaire et en supprimant le fichier une fois terminé :

# Extraire par masque reclass_clp = ExtractByMask(reclass, mask_raster_temp) reclass_clp_temp = random_name_generator(temp_ws, "reclass_clp_temp", ".tif") # Ceci est une fonction qui génère un nom de sortie unique reclass_clp.save(reclass_clp_temp) # Faire un traitement… arcpy .Delete_management(reclass_clp_temp)

J'ai également mis leécraser la sortieenvironnement àVrai.

arcpy.env.overwriteOutput = True

Cependant, ni l'un ni l'autre ne semble avoir d'effet. Quelle est la meilleure façon de gérer les fichiers temporaires créés par Extract By Mask (Spatial Analyst) ?

En d'autres termes, existe-t-il un moyen de forcer Extract by Mask à générer un nom unique pour la grille temporaire 'Extract_recl1' ?


L'outil Extraire par masque respecte l'environnement Scratch Workspace. Essayez de définir un autrearcpy.env.scratchWorkspacepour chaque script exécuté avec le python fichier temporaire.mkdtemp une fonction.

importer fichier temporaire, Shutil importer arcpy depuis arcpy.sa importer * tmpdir = tempfile.mkdtemp() arcpy.env.scratchWorkspace = tmpdir reclass_clp = ExtractByMask(reclass, mask_raster_temp) reclass_clp.save(reclass_clp_final) Shutil.rmtree(tmpdir)

Voir la vidéo: Suomi: Miten käsitellä epäonnistumista?