2 votos

¿Cómo ejecutar varias herramientas desde diferentes entornos de trabajo?

He creado 1 script para realizar 2 tareas específicas pero no está funcionando correctamente debido a cómo se establece arcpy.env.workspace.

La primera parte del script elimina y vuelve a crear las subcarpetas en "C:/EIS/SHP Files"

arcpy.env.workspace = "C:/EIS/SHP Files"

La segunda parte del script busca dentro de una subcarpeta específica en "C:/EIS/SHP Files/Master folder" y copia datos de tubería de regreso a las carpetas recién creadas

arcpy.env.workspace = "C:/EIS/SHP Files/Master Folder"

Problema: No puedo hacer referencia a 2 entornos a la vez en un script. El script mostrará un mensaje de error ya que no puede mirar en 2 rutas a la vez. Entonces, ¿cómo podemos hacer esto?

import sys
import platform
import imp
print "Importando arcpy... esto puede tardar un momento\n"
import arcpy
from arcpy import env

# Establecer espacio de trabajo
arcpy.env.workspace = "C:/EIS/SHP Files"

# Crea las carpetas del condado
out_folder_path = "C:/EIS/SHP Files/"

# Establecer variables locales
# Lista de valores de carpeta en orden de carga
folderList = ["1","2","3","4","5"]

# Almacene todos los nombres de carpeta en un diccionario con el código de carpeta como la
# "clave" y la descripción de la carpeta como el "valor" (folderDict[código])
folderDict ={"1":"OH_ADAMS","2":"OH_ALLEN","3":"OH_ASHLAND","4":"OH_ASHTABULA","5":"OH_ATHENS"}

# Tubería de Wayne
in_data_WayneMain =  "WayneMain.shp"
out_Geauga_WayneMain = "C:/EIS/SHP Files/OH_GEAUGA/WayneMain.shp"

# El código a continuación utilizará la herramienta [arcpy.CreateFolder_management] para
# reconstruir el directorio para C:\EIS\SHP Files\.. Carpetas del condado

# Proceso: Agregar tipos de material válidos al dominio
# use un bucle for para recorrer todos los códigos de dominio en el diccionario
for code in folderList:
    if arcpy.Exists(out_folder_path):
        arcpy.Delete_management(folderDict[código])
        arcpy.CreateFolder_management(out_folder_path, folderDict[código])

# El código a continuación utilizará la herramienta [arcpy.Copy_management] para
# copiar archivos desde C:\EIS\SHP Files\Master Folder a C:\EIS\SHP Files..
# Carpetas del condado

# Tubería de Wayne (Copiada) A => Carpetas del condado
arcpy.Copy_management(in_data_WayneMain, out_Geauga_WayneMain)

7voto

Gavin Schulz Puntos 592

Restablezca su espacio de trabajo de ambiente según sea necesario:

workspace1 = "C:/EIS/SHP Files"
workspace2 = "C:/EIS/SHP Files/Master Folder"

arcpy.env.workspace = workspace1 
# Realice las operaciones que requieran workspace1 como el espacio de trabajo de ambiente

arcpy.env.workspace = workspace2 
# Realice las operaciones que requieran workspace2 como el espacio de trabajo de ambiente

arcpy.env.workspace = workspace1 
# Cambie de nuevo a workspace1 si es necesario.

Alternativamente, use las variables workspace1 etc. en lugar de la configuración del entorno para especificar las carpetas relevantes:

os.path.join(workspace1, in_data_WayneMain)

1voto

Tor Thommesen Puntos 226

Desde ArcGIS Pro 2.8, es posible utilizar arcpy.EnvManager() en un bloque with para establecer temporalmente un entorno de espacio de trabajo.

Esta página de documentación explica cómo funciona: https://pro.arcgis.com/en/pro-app/latest/arcpy/classes/envmanager.htm

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X