Advertisement
Guest User

Untitled

a guest
Apr 17th, 2014
53
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.42 KB | None | 0 0
  1. import xlrd, arcpy, os
  2.  
  3. mxd_path = r'C:tempChapters'
  4.  
  5. d = {}
  6. wb = xlrd.open_workbook('U:GISChevron_LokernProjectsFigures_Update_2014Lokern_Source_Paths_KL.xls')
  7. sh = wb.sheet_by_index(0)
  8. for i in range(293):
  9. cell_value_class = sh.cell(i,0).value
  10. cell_value_id = sh.cell(i,1).value
  11. d[cell_value_class] = cell_value_id
  12.  
  13. for dirpath, dirnames, filenames in os.walk(mxd_path):
  14. for filename in filenames:
  15. fullPath = os.path.join(dirpath, filename)
  16. if filename[-4:] == ".mxd":
  17. mxd = arcpy.mapping.MapDocument(fullPath)
  18. print filename
  19.  
  20. for lyr in arcpy.mapping.ListLayers(mxd):
  21. if lyr.supports("DATASOURCE"):
  22. #print lyr.datasetName
  23. for k,v in d.iteritems():
  24. #print k,v
  25. k_path, k_name = os.path.split(k)
  26. v_path, v_name = os.path.split(v)
  27. if lyr.dataSource == k and k != v:
  28. #print 'KEY:',k,'VAL:',v, 'NAME:',v_name
  29. try:
  30. print 'trying to change data source for',lyr.dataSource
  31. lyr.replaceDataSource(v_path,'FILEGDB_WORKSPACE',v_name,True)
  32. except Exception as e:
  33. print 'can't replace',lyr.dataSource, e
  34. try:
  35. print 'trying to change data source for',lyr.dataSource
  36. lyr.replaceDataSource(v_path,'RASTER_WORKSPACE',v_name,True)
  37. except Exception as e:
  38. print 'still can't replace',lyr.dataSource, e
  39. try:
  40. print 'trying to change data source for',lyr.dataSource
  41. lyr.replaceDataSource(v_path,'SHAPEFILE_WORKSPACE',v_name,True)
  42. except Exception as e:
  43. print 'still can't replace',lyr.dataSource, e
  44. try:
  45. print 'trying to change data source for',lyr.dataSource
  46. lyr.findAndReplaceWorkspacePath(k_path,v_path)
  47. except Exception as e:
  48. print 'can't replace workspace path for',lyr.datasetName, e
  49. mxd.relativePaths = 'True'
  50. mxd.save()
  51. del mxd
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement