5 votos

Cómo encontrar si los datos de la capa están de un .mdb o un .gdb de código Python de ArcGIS

En mi ArcGIS código de Python, tengo que recorrer un par de capas, y de esas sólo las capas seleccione la operativa de los accesorios:

arcpy.SelectLayerByAttribute_management(fittings, "NEW_SELECTION", whereClause)

Algunos de mis capas son almacenados en una geodatabase personal (.mdb) y algunos en una geodatabase de archivos (.gdb), que tiene un impacto en la sintaxis de la "whereClause" de la cadena, debido a que el mdb necesidades de los corchetes para la consulta de nombre de campo, mientras que el bgf no:

if database = GDB:    # This line is pseudo-code which I need resolving
    whereClause = "LIFECYCLESTATUS = 'LIVE'"
else:
    whereClause = "[LIFECYCLESTATUS] = 'LIVE'"

Mi pregunta es: ¿cómo puedo determinar si una capa de origen de datos en una mdb o en un gdb? Me las he arreglado para llegar a

desc = arcpy.Describe(fittings)
delm = desc.dataElement

Pero después de esto, estoy atascado. ¿Donde puedo encontrar las propiedades disponibles para el "dataElement" de la clase?

7voto

Alex Tereshenkov Puntos 13433

Usted no debe molestar el uso de Describir para describir el camino a la clase de entidad de primera y luego describir la geodatabase de sí mismo para saber si es personal o de archivo.

Recomiendo el uso de la AddFieldDelimiters de arcpy función que va a averiguar el origen de datos y el uso correcto de la sintaxis. Esto significa que cualquiera que sea la fuente que va a utilizar, usted siempre tendrá la sintaxis correcta (archivo, personales, DBMS, shapefile).

sql_exp = """{0} = {1}""".format(
    arcpy.AddFieldDelimiters('c:/data', field_name),
    field_name)

# Use delimited field for Select tool SQL expression
arcpy.Select_analysis(in_features, out_feat_class, sql_exp)

Sólo en caso de que usted no va a usar el AddFieldDelimiters (por cualquier razón), aquí está el código que puede utilizar de otra manera. Primero Describir el fc camino (su geodatabase en este caso), a continuación, utilizar las propiedades del área de trabajo.

import arcpy
fc = r"C:\ArcGIS\pgdb.mdb\Fittings"
gdb_type = ""
desc_fc = arcpy.Describe(fc)
desc_gdb = arcpy.Describe(desc_fc.path)

if desc_gdb.workspaceFactoryProgID == 'esriDataSourcesGDB.AccessWorkspaceFactory.1':
    gdb_type = "Personal gdb"
elif desc_gdb.workspaceFactoryProgID == 'esriDataSourcesGDB.FileGDBWorkspaceFactory.1':
    gdb_type = "File gdb"
print gdb_type

6voto

alasdairg Puntos 1518

Utilice el atributo de origen de datos para la capa.

4voto

Bruce Aldridge Puntos 1498

Otra opción es obtener la extensión de archivo con el módulo de python os.

Ruta de acceso es "C:/ruta/mygdb", es de extensión .gdb

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