#Is the .description of the featureclass itself available rather than from the layer object? print str(cnt) + ", " + fd + ", " + fc + ", " + str(count) + ", " + layname + ", " + dattype + ", " + typedat mxd = arcpy.mapping.MapDocument("C:\\temp\\test.mxd") arcpy.env.workspace = gdb + '\\' + fd base_Folder = arcpy.env.workspace df = arcpy.mapping.ListDataFrames(mxd, "*")[0] outlayer = os.path.join(base_Folder, fc) + "_lyr" layerfile = "C:\\temp\\" + fc + ".lyr" arcpy.MakeFeatureLayer_management(os.path.join(base_Folder, fc), outlayer) arcpy.SaveToLayerFile_management(outlayer, layerfile, "ABSOLUTE") addLayer = arcpy.mapping.Layer(outlayer) arcpy.mapping.AddLayer(df, addLayer, "BOTTOM") arcpy.RefreshTOC() arcpy.RefreshActiveView() for lyr in arcpy.mapping.ListLayers(mxd): print lyr.description mxd.save() del mxd ##Output Line1(First Print Statement is okay): #1, ADMIN_BOUNDARY, AZ_cnty_bnd_100, 15, n, Simple, Polygon ##Output Line2(Second Print Statement Same Layer Dropped from Arc Catalog, is okay): #Hi andy how to retrieve this text from ArcCatalog Description Tab. ##Output Line3(Second Print Statement Same Layer Added with .Addlayer, description disappears): #C:\temp\awstmp_serverprj_bak\R9GDL_Data_WM\R9GDL_WM.gdb\ADMIN_BOUNDARY\AZ_cnty_bnd_100_lyr
Solved! Go to Solution.
There must be something simple I'm missing to access the featureclass .description programmatically.
for lyr in arcpy.mapping.ListLayers(mxd): print lyr.description
#Hi andy how to retrieve this text from ArcCatalog Description Tab.
#C:\temp\....\ADMIN_BOUNDARY\AZ_cnty_bnd_100_lyr
def GetDescription(item): """Get Description text from item metadata""" import os import arcpy from xml.etree.ElementTree import ElementTree as ET # get description AGSHOME = arcpy.GetInstallInfo("Desktop")["InstallDir"] exactCopy = os.path.join(AGSHOME,"Metadata/Stylesheets/gpTools/exact copy of.xslt") tmpXML = arcpy.CreateScratchName("",".xml","file",os.environ["TEMP"]) arcpy.XSLTransform_conversion(item, exactCopy, tmpXML) tree = ET().parse(tmpXML) os.remove(tmpXML) node = tree.find("dataIdInfo/idPurp") # if not found try to extract FGDC CSDGM purpose element if node == None: node = tree.find("idinfo/descript/purpose") try: return node.text except: return None
def GetMetadataText(item,elementPath): """Get metadata node text attribute from item metadata example GetMetadataText(r"C:\Users\cprice\Documents\boxdd.shp","dataIdInfo/idPurp") """ import os import arcpy from xml.etree.ElementTree import ElementTree as ET AGSHOME = arcpy.GetInstallInfo("Desktop")["InstallDir"] exactCopy = os.path.join(AGSHOME,"Metadata/Stylesheets/gpTools/exact copy of.xslt") tmpXML = arcpy.CreateScratchName("",".xml","file",os.environ["TEMP"]) arcpy.XSLTransform_conversion(item, exactCopy, tmpXML) tree = ET().parse(tmpXML) os.remove(tmpXML) node = tree.find(elementPath) if node == None: raise Exception, "Element %s not found in metadata" % elementPath try: return node.text except: raise Exception, "No text content for element %s" % elementPath