Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import os
- from collections import defaultdict
- from comtypes.client import GetModule, CreateObject
- from snippets102 import GetStandaloneModules, InitStandalone
- GetStandaloneModules()
- InitStandalone()
- esriCarto = GetModule(r"C:\Program Files (x86)\ArcGIS\Desktop10.4\com\esriCarto.olb")
- #----------------------------------------------------------------------
- def update_mxd_layers_field_aliases(mxd_path,output_mxd_path=None):
- """update field aliases for layers in a map document based on the field aliases stored in geodatabase"""
- pMapDocument = CreateObject(esriCarto.MapDocument, interface=esriCarto.IMapDocument)
- pMapDocument.Open(mxd_path)
- pMap = pMapDocument.Map(0)
- pEnumLayer = pMap.Layers(None,True)
- pLayer = pEnumLayer.Next()
- source_aliases = defaultdict(list)
- edited_aliases = defaultdict(list)
- while pLayer:
- print "Layer: ", pLayer.Name
- fields = pLayer.QueryInterface(esriCarto.ILayerFields)
- for i in xrange(fields.FieldCount):
- print "Name:", fields.Field(i).name, "Alias:", fields.FieldInfo(i).alias
- source_aliases[pLayer.Name].append((fields.Field(i).Name,fields.FieldInfo(i).alias))
- fields.FieldInfo(i).alias = fields.Field(i).AliasName
- edited_aliases[pLayer.Name].append((fields.Field(i).Name,fields.Field(i).AliasName))
- pLayer = pEnumLayer.Next()
- if not output_mxd_path:
- output_mxd_path = os.path.join(os.path.dirname(mxd_path),os.path.splitext(os.path.basename(mxd_path))[0] + '_upd' +
- os.path.splitext(os.path.basename(mxd_path))[1])
- pMapDocument.SaveAs(output_mxd_path)
- return (source_aliases,edited_aliases)
- mxd_path = r"C:\GIS\Temp\alias_mxd.mxd"
- print update_mxd_layers_field_aliases(mxd_path)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement