Advertisement
Guest User

Untitled

a guest
Feb 27th, 2017
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.76 KB | None | 0 0
  1. import os
  2. from collections import defaultdict
  3. from comtypes.client import GetModule, CreateObject
  4. from snippets102 import GetStandaloneModules, InitStandalone
  5.  
  6. GetStandaloneModules()
  7. InitStandalone()
  8. esriCarto = GetModule(r"C:\Program Files (x86)\ArcGIS\Desktop10.4\com\esriCarto.olb")
  9.  
  10. #----------------------------------------------------------------------
  11. def update_mxd_layers_field_aliases(mxd_path,output_mxd_path=None):
  12. """update field aliases for layers in a map document based on the field aliases stored in geodatabase"""
  13. pMapDocument = CreateObject(esriCarto.MapDocument, interface=esriCarto.IMapDocument)
  14. pMapDocument.Open(mxd_path)
  15. pMap = pMapDocument.Map(0)
  16. pEnumLayer = pMap.Layers(None,True)
  17. pLayer = pEnumLayer.Next()
  18.  
  19. source_aliases = defaultdict(list)
  20. edited_aliases = defaultdict(list)
  21.  
  22. while pLayer:
  23. print "Layer: ", pLayer.Name
  24. fields = pLayer.QueryInterface(esriCarto.ILayerFields)
  25.  
  26. for i in xrange(fields.FieldCount):
  27. print "Name:", fields.Field(i).name, "Alias:", fields.FieldInfo(i).alias
  28. source_aliases[pLayer.Name].append((fields.Field(i).Name,fields.FieldInfo(i).alias))
  29. fields.FieldInfo(i).alias = fields.Field(i).AliasName
  30. edited_aliases[pLayer.Name].append((fields.Field(i).Name,fields.Field(i).AliasName))
  31.  
  32. pLayer = pEnumLayer.Next()
  33.  
  34. if not output_mxd_path:
  35. output_mxd_path = os.path.join(os.path.dirname(mxd_path),os.path.splitext(os.path.basename(mxd_path))[0] + '_upd' +
  36. os.path.splitext(os.path.basename(mxd_path))[1])
  37.  
  38. pMapDocument.SaveAs(output_mxd_path)
  39. return (source_aliases,edited_aliases)
  40.  
  41. mxd_path = r"C:\GIS\Temp\alias_mxd.mxd"
  42. print update_mxd_layers_field_aliases(mxd_path)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement