1 votos

ArcGIS 10.2 Error en la fuente de datos del proyecto al publicar un servicio de geoprocesamiento

Tengo un script de python que crea una clase de característica temporal, crea una capa de característica a partir de la clase de característica temporal, utiliza la capa de característica, y luego elimina la capa de característica y la clase de característica. Cuando intento publicar el script de python como un servicio de geoprocesamiento, obtengo un ERROR diciendo que mi proyecto contiene una fuente de datos de proyecto rota en mi capa de características temporal. Hasta ahora mi solución es dejar la clase de característica temporal en mi espacio de trabajo. ¿Hay alguna forma de eliminarla antes de que se complete el proceso? Aquí está el fragmento de código que genera el error:

acadian_holder_fpath = "\\\\my_server\\GIS\Geodatabases\\Acadian_Holder.gdb\\Acadian_Holder_Dataset\\Acadian_Holder"
xxcrown_fpath = "\\\\my_server\\GIS\\Geodatabases\\Temp_WorkSpace.gdb\\xxholder_src"
arcpy.analysis.Select(acadian_holder_fpath,xxcrown_fpath,"LOC in ('BB','BC','BM','IQ','JC','JN','JS','JW','PH','QB','RB','RG','RS','SQ','SV','UG')")
dnr_regions_fpath = "\\\\my_server\\GIS\\Geodatabases\\Acadian.gdb\\dnr_regions"
xxregions_fpath = "\\\\my_server\\GIS\\Geodatabases\\Temp_Workspace.gdb\\xxregions_src"

arcpy.analysis.Intersect([xxcrown_fpath,dnr_regions_fpath],xxregions_fpath)

arcpy.management.Delete(xxcrown_fpath)

at_road_network_fpath = "\\\\my_server\\GIS\\Geodatabases\\connection_to_my_sde.SDE\\AT_Road_Network"

# Use select by location instead of intersect so we get the entire road if it exits crown land.

at_road_network_flayer = arcpy.management.MakeFeatureLayer(at_road_network_fpath,"at_road_network_flayer")

xxregions_flayer = arcpy.management.MakeFeatureLayer(xxregions_fpath,"xxregions_flayer")

# Select YTD roads

where_clause = "Region = 1 or Region = 3 or Region = 4"
arcpy.management.SelectLayerByAttribute(xxregions_flayer, "NEW_SELECTION", where_clause)
arcpy.management.SelectLayerByLocation(at_road_network_flayer, "INTERSECT", xxregions_flayer)

# Do stuff with at_road_network_flayer

# Delete the temporary feature class

arcpy.management.Delete(xxregions_flayer)
del xxregions_flayer
arcpy.management.Delete(xxregions_fpath)

2voto

alxcpa01101 Puntos 1

Considere la posibilidad de utilizar el en la memoria espacio de trabajo. Es mucho más rápido que escribir en el disco y debería resolver tu bloqueo de lectura/escritura.

Por ejemplo:

xxregions_flayer = arcpy.management.MakeFeatureLayer("in_memory","xxregions_flayer")

Cuando esté listo para eliminar su clase de característica temporal, llame a

arcpy.Delete_management("in_memory\xxregions_flayer")
arcpy.Delete_management("in_memory\xxregions_fpath")

0voto

Galbrezu Puntos 142

Yo haría algunas cosas aquí.

1) No utilice la supresión al final. No hay realmente ningún punto que puedo ver como es sólo la capa de características que está eliminando. Una vez que el servicio GP ha terminado de ejecutar, eso es todo, su hecho. La limpieza ocurre, así que no hay necesidad de borrar nada.

2) No utilice MakeFeatureLayer. Solo use capas dentro de su script. Usando una capa puede omitir la llamada a MakeFeatureLayer. Claro que sólo puede ser 0,4 segundos para ejecutar que, pero ¿por qué hacer que innecesariamente cuando se puede utilizar capas para empezar.

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