He heredado el control y el soporte de una base de datos ArcSDE GIS. Tenemos un proceso que debemos hacer cada 6 meses para exportar ciertas características de la base de datos ArcSDE en archivos de forma para que puedan ser importados en los datos de Smallworld GIS. Sí, lo sé. ¿Por qué nuestra empresa utiliza dos sistemas SIG diferentes? No preguntes. Esto ya estaba en marcha antes de que yo me involucrara en todo esto.
En cualquier caso, tenemos un conjunto de scripts de Python que se utilizan para unir los archivos shape con las clases de características en la base de datos del SIG. Ejecutamos los scripts de Python a través de ArcMap mediante la consola Geoprocessing->Python.
Sin embargo, sólo funciona si nos conectamos a nuestro servidor SIG y ejecutamos ArcMap desde allí. Si intentamos hacerlo desde fuera del servidor SIG, el archivo shape resultante tiene el número correcto de registros, pero todos los atributos son cero (para los atributos numéricos) o nulos (para los atributos de texto). Una vez más, ejecutar esto en ArcMap 10.0 sp4 en el servidor de ArcGIS funciona. Ejecutándolo desde ArcMap 10.0 sp4 en, por ejemplo, mi máquina local, que tiene acceso a los datos y puedo traerlos, da como resultado que el archivo shape exportado no tiene valores de atributos.
Mi otra pregunta es que no entiendo todos los parámetros que se pasan a la función arcpy.FeatureClassToFeatureClass_conversion.
Este es un ejemplo de la secuencia de comandos:
arcpy.AddJoin_management("AERIALTAP","STATUS","TGIS.AE_STATUS","VALUE","KEEP_ALL")
arcpy.AddJoin_management("AERIALTAP","LOCATION_S","TGIS.AE_LOCATION_SOURCE","VALUE","KEEP_ALL")
arcpy.FeatureClassToFeatureClass_conversion("AERIALTAP","C:\TGIS\Final","AERIALTAP","#","ID ID true false false 9 Long 0 9 ,First,#,C:\TGIS\First\AERIALTAP.shp,AERIALTAP.ID,-1,-1;X X true false false 19 Double 10 18 ,First,#,C:\TGIS\First\AERIALTAP.shp,AERIALTAP.X,-1,-1;Y Y true false false 19 Double 10 18 ,First,#,C:\TGIS\First\AERIALTAP.shp,AERIALTAP.Y,-1,-1;REGION REGION true false false 4 Text 0 0 ,First,#,C:\TGIS\First\AERIALTAP.shp,AERIALTAP.REGION,-1,-1;MAINT_RESP MAINT_RESP true false false 4 Text 0 0 ,First,#,C:\TGIS\First\AERIALTAP.shp,AERIALTAP.MAINT_RESP,-1,-1;OBJECTID OBJECTID true false false 19 Text 0 18 ,First,#,C:\TGIS\First\AERIALTAP.shp,AERIALTAP.OBJECTID,-1,-1;STATUS STATUS true true false 50 Text 0 0 ,First,#,C:\TGIS\First\AERIALTAP.shp,TGIS.AE_STATUS.DESCRIPTION,-1,-1;LOCATION_S LOCATION_S true true false 50 Text 0 0 ,First,#,C:\TGIS\First\AERIALTAP.shp,TGIS.AE_LOCATION_SOURCE.DESCRIPTION,-1,-1","#")
Entiendo lo que hacen las llamadas de unión.
Entiendo los tres primeros parámetros en la llamada de conversión (clase de característica de entrada, directorio de salida, nombre de la clase de característica de salida). El resto tengo alguna idea, pero no estoy completamente seguro. Definitivamente parece que está mapeando la columna de características de entrada a una columna de características de salida. El "#" parece ser una definición de un delimitador entre campos, pero el resto me confunde.
He buscado en la web de ArcSDE y no hay nada muy claro al respecto. Todavía no he encontrado un ejemplo como el que tengo.
Se agradece cualquier ayuda.
Si hago sólo esto funciona, pero eso es sin ninguna unión definida:
arcpy.FeatureClassToFeatureClass_conversion("AERIALTAP","C:\TGIS\Final","AERIALTAP")
Esto funciona. Pero una vez que introduzco la asignación de campos y las uniones, olvídalo. No funcionará a menos que esté en el servidor de producción ArcSDE GIS.