Acces Metadata for map service Arcpy

3483
1
04-18-2015 03:37 AM
EQUIPEIS
New Contributor

HI communauty geonet, and users,

I try to update the metadatas (summary, details, Authors, ...) of many mxds in a folder and when i execute my python script all is ok (no error).

When i have for exemple 3 mxds in a folder, and when i open the propriety of the first mxd in the list the information is ok.

But when i  open the second mxd the information in the case is null. And when Open Mapdocument the information is ok for this second mxd.

My problem is for my second script when a push the mxds in arcgis server. On the service map the information is ok for the first and not for the other. My code is this one (sorry for my english):

# -*- coding: cp1252 -*-

#import modules

import arcpy, sys, os, string

import xml.dom.minidom as DOM

import codecs

#Read parameters from dialog

filedoss = arcpy.GetParameterAsText(0)

u = arcpy.GetParameterAsText(1)

Summary = u.encode('cp1252', 'strict')

i = arcpy.GetParameterAsText(2)

Description = i.encode('cp1252', 'strict')

o = arcpy.GetParameterAsText(3)

Author = o.encode('cp1252', 'strict')

Credits = o.encode('cp1252', 'strict')

fileanc =  arcpy.GetParameterAsText(4)

MapPath= []

MapFolder = os.listdir(filedoss)

arcpy.env.workspace = filedoss

for file in MapFolder:

  fileExt = os.path.splitext(file)[1]

  if fileExt == ".mxd":

  MapPath = os.path.join(filedoss, file)

  arcpy.AddMessage (MapPath)

  #set map document to change

  mxd = arcpy.mapping.MapDocument(MapPath)

  base = os.path.basename(filedoss).upper()

  #Nouveau nom

  file_name_temp = "NOM_" + base + "_" + file 

  #arcpy.AddMessage ("MXD a sauvegarder :" + file_name)

  arcpy.AddMessage ("MXD sauvegarde :"  + file_name_temp)

  # Test existence de la sauvegarde

  if os.path.exists(file_name_temp):

  arcpy.AddMessage("Fichier mxd existe")

  try :

  # essaye de le supprimer

  os.remove(file_name_temp)

  except :

  arcpy.AddError ("Fichier non sauvegarde : impossible de le supprimer")

  sys.exit()

  #change Title

  mxd.title = file_name_temp

  #change Summary

  mxd.summary = Summary

  #change Description

  mxd.description = Description

  #change Author

  mxd.author = Author

  #change credits

  mxd.credits = Credits

  #Update map document tags

  #Generate unique, sorted list of layer names

  layers = arcpy.mapping.ListLayers(mxd)

  layerList = []

  for lyr in layers:

  if not lyr.isGroupLayer:

  layerList.append(lyr.name)

  uniqueList = list(set(layerList))

  uniqueList.sort()

  #Update map document tags

  tagList = ",".join(uniqueList) 

  mxd.tags = tagList

  for lyr in layers:

  if lyr.supports("DATASOURCE"):

  lyr.replaceDataSource(filedoss, 'SHAPEFILE_WORKSPACE', lyr.datasetName, False)

  #set relative paths property

  mxd.relativePaths = True

  #update Thumbnail

  mxd.deleteThumbnail()   

  mxd.makeThumbnail()

  #save map document change

  #SAuvegarde sous nouveau

  mxd.saveACopy(file_name_temp)

  arcpy.AddMessage ("Fichier sauvegarde")

  arcpy.RefreshTOC()

  arcpy.RefreshActiveView()

  arcpy.RefreshCatalog(file_name_temp)

del mxd

0 Kudos
1 Reply
EQUIPEIS
New Contributor

i publish an auto-reponse for one problem. But it's not resolved totaly.

The old MXD came from an Arcgis 9.3 and the properties is not update if i d'ont open Mapdocument

in the version 10.2.2. The link to the default database is null. When i open in Arcmap the link is ok tio the default geodatabase.

But i have a lot of MXS and it's impossible to open all. My question is :It's possible in ArcPy to automatilly

like the others properties (Summary, Authors ,...) to put this information of default geodatabase for many old MXD ?

Thank a lot

0 Kudos