10 votos

Con arcpy, ¿cómo puedo detectar las clases de relación en un archivo GDB (o puede ' t I)?

Me gustaría ser capaz de detectar las clases de relación en un archivo GDB. Porque los usuarios de mi script podrían tener sólo una nivel licencia de ArcView, no serían capaces de manipular el esquema de una clase de característica (específicamente para agregar un campo) que está en un espacio de trabajo que tiene clases de relación. Cómo detectar la presencia de las clases de relación, así que puedo documentarlos, evitarlas mediante programación y permite la escritura a continuar?

6voto

auramo Puntos 161

La relationshipClassNames propiedad es supone para ello pero parece que me funciona (probado en una geodatabase de archivos, clase de la relación creada entre dos clases, comprobar la propiedad, la lista devuelta está vacía para ambos). Tal vez trabajará para usted.

4voto

Farid Cher Puntos 5306

Por @blah238 suggustion, este código python muestra todas las clases de relashionship amistoso dentro de una geodatabase y ponerlos en una lista única (relClasses):

inGDB = r"D:\mygeodatabase.gdb"
env.workspace = inGDB
#################Getting all Tables and Feature Classes###########
fcs = []
#root of workspace
for item in arcpy.ListFeatureClasses("*"):    fcs.append(item)
for item in arcpy.ListTables("*"):    fcs.append(item)

fds = arcpy.ListDatasets("*","Feature")
for fd in fds:
    env.workspace = inGDB +'\\'+fd
    for fc in arcpy.ListFeatureClasses("*"):
        fcs.append(fd+'/'+fc)
    for tb in arcpy.ListTables("*"):
        fcs.append(fd+'/'+tb)

env.workspace = inGDB
relClasses = set()
for i,fc in enumerate(fcs): 
    desc = arcpy.Describe(fc)
    for j,rel in enumerate(desc.relationshipClassNames):
        relDesc = arcpy.Describe(rel)
        if relDesc.isAttachmentRelationship:
            continue
        relClasses.add(rel)

print relClasses

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