Managing and Identifying .MXD File Versions in a mixed 10.1 10.2 10.3 environment

7344
4
Jump to solution
03-19-2015 03:29 PM
BenChaney
New Contributor III

Hello,

I've recently upgraded to ArcGIS Desktop 10.3, but many of my colleagues are using 10.1 or 10.2.   They've let me know of this error they get when they try to open any map .mxd I've worked on: "This map document was saved using a newer version of ArcGIS."  Following the directions in the error message (see attached), I "Save A Copy" to the older file format and they are able to open the file OK. However, I've noticed that if I open the legacy copy and save it, it reverts back to the 10.3 file format.

I've got two questions related to this process:

1) Is it possible to identify which version of ArcGIS a file is saved in?  I don't see it in the map document properties when viewed from ArcCatalog.

2) Is it possible to set ArcMap 10.3 to automatically or by default save .mxd files in an older version, such as 10.2?

I'm new to ArcGIS, so forgive me if this is an issue that has a long history over the many version changes in the past.

Thanks,

Ben

Capture.JPG

0 Kudos
1 Solution

Accepted Solutions
DanPatterson_Retired
MVP Emeritus

nothing obvious and readily accessed without special measures.

In the interim

myproj_10_0.mxd

myproj_10_1.mxd

myproj_10_2.mxd

myproj_10_3.mxd

as project names within the same folder so relative paths to data can be maintained.

better to be overt...I use similar methods to identity data

myPoints_UTM18N.shp   

Nobody cares what the files are named except the user and if someone stumbles upon them...they probably have several clues as to what is contained within.

I am sure stuff can be scripted...but remember, you aren't going to be the only one using them I suspect

View solution in original post

4 Replies
DanPatterson_Retired
MVP Emeritus

nothing obvious and readily accessed without special measures.

In the interim

myproj_10_0.mxd

myproj_10_1.mxd

myproj_10_2.mxd

myproj_10_3.mxd

as project names within the same folder so relative paths to data can be maintained.

better to be overt...I use similar methods to identity data

myPoints_UTM18N.shp   

Nobody cares what the files are named except the user and if someone stumbles upon them...they probably have several clues as to what is contained within.

I am sure stuff can be scripted...but remember, you aren't going to be the only one using them I suspect

BenChaney
New Contributor III

Hi Dan,

Thanks for the reply!  Now that I'm aware of this problem, I'm naming the .mxds similar to your suggestion.  It's unfortunate that there's no way to identify the version of a file, or automatically deal with older versions either by creating multiple files on save or maintaining older version saves. 

Cheers,
Ben

0 Kudos
MichaelVolz
Esteemed Contributor

This will probably never get addressed in ArcMap as it's days are numbered (in years thankfully), but can this functionality be added to Pro at least since it has been built from the ground up?

0 Kudos

I think this would be possible using something like:

Created on July 10, 2014
@author: kyleg
'''
import arcpy, os
#workspace to search for MXDs
startplace = r"F:\Cart\projects\KanPlan\MXD\Public"
arcpy.env.workspace = startplace
Workspaces = arcpy.ListWorkspaces("*", "Folder")
for Workspace in Workspaces:
    arcpy.env.workspace = Workspace
    print str(Workspace)
    #list map documents in folder
    mxdList = arcpy.ListFiles("*.mxd")
    #set relative path setting for each MXD in list.
    for mapdoc in mxdList:
        #print the mapdocument name
        print "   "
        print "MAPDOCUMENT   "+str(mapdoc)
        mapdocu = Workspace+"/"+mapdoc
        mxd = arcpy.mapping.MapDocument(mapdocu)
        
        #Print the layer name of each layer in each mapdocument, and the layer properties of each layer
        
        for lyr in arcpy.mapping.ListLayers(mxd):
            if lyr.supports("SERVICEPROPERTIES"):
                servProp = lyr.serviceProperties
                print "    Layer name:" + lyr.name +" at " + servProp.get('Connection', 'N/A')
                #print "        Service Type: " + servProp.get('ServiceType', 'N/A')
                print "        Service Type: " + servProp.get('Database', 'N/A')
                #print "        Service Type: " + servProp.get('Server', 'N/A')
                print "        Service:        " + servProp.get('Service', 'N/A')
                print "        Version:        " + servProp.get('Version', 'N/A')
                print "        User name:      " + servProp.get('UserName', 'N/A')
                #print "        Authentication: " + servProp.get('AuthenticationMode', 'N/A')
                #print "        Workspace path: "+ lyr.workspacePath       
                #print "        Feature Dataset: "+ lyr.datasetName
                print "------------------------------------------------"
            else:
                pass
    
‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍

only take out the layer name code and print the mxd name and version.  mxd SaveAsCopy can be done in the loop to export to a specific version.

0 Kudos