12

I have a master copy of some data i'm working on on a remote server. Sometimes I make a copy on my local drive to speed up processing times, but data sources in my MXDs still point to the remote server.

I'm wondering whether there is a quick and easy trick to update the data source for all layers in ArcMap, without going into Python Scripting etc. I know I can update each individual data source through layer properties, and I have been using a workaround by 'breaking' the link to the remote server, then pointing one layer to the new source (when it has a red exclamation mark in the TOC), which then allows the other layers to find their relative sources. Is there a more elegant way of doing this?

3 Answers 3

17

Instructions provided in Use the 'Set Data Source' tool for map documents in ArcCatalog describe how to use the Set Data Source tool for map documents in ArcCatalog.

When right-clicking a map document (.mxd) file in ArcCatalog, a Set Data Source command is visible. This opens a dialog box that makes it easier to update or repair some or all of the references to file-based data sources in the map. By default, this dialog box creates a copy of the .mxd file. This option is also available by right-clicking a published map (.pmf) file, although it is disabled if the publisher of the .pmf file selected not to provide full access to its contents in ArcGIS applications when it was published.

The Set Data Source tool cannot be used to update or repair references to data in ArcSDE geodatabases.

The Set Data Source tool does not support VBA customizations. Any VBA customizations are not included in the output MXD.

The Set Data Source tool does not support personal geodatabase annotation layers at this time. This is a known limit and is scheduled to be fixed in a future release of the software.

Procedure Follow these steps to set the data source for an MXD in ArcCatalog.

  1. Right-click an MXD in ArcCatalog and click Set Data Source(s). The default creates a copy of the MXD. It is recommended that a copy be used and the original MXD be kept as a back-up. However, the existing MXD can be overwritten by selecting it or typing its full path.
  2. Select a data frame or all data frames.Select a layer or press the Select All button.

  3. Click Replace or Replace All. The Replace dialog box does a 'find and replace' on the paths to the data. Type the 'find and replace' text to match the data. For example, if all the data was in C:\GISData but it has been moved to C:\GISData2, the Find What text box shows C:\GISData and the Replace With text box shows C:\GISData2. Click Replace. Click OK in the Set Data Sources dialog box.

There is also a MXD Data Source Replacer script in the UCLA Sandbox.

4
  • This works well thanks. Only beef with it is you have to type in file paths (there is no browser to locate the data source you desire), which isn't a huge issue.. Would like to see if it is possible to do from within the MXD itself though.
    – Dùn Caan
    Commented Jan 19, 2016 at 11:48
  • 1
    @Dunk - you can browse to change one layer, and then once it's given you a value for that one layer you can copy/paste it onto the rest in bulk.
    – Midavalo
    Commented Jan 19, 2016 at 22:19
  • @Midavalo good to know thanks, seems that this is the best way to do it.
    – Dùn Caan
    Commented Jan 19, 2016 at 23:08
  • Very cool, this worked and allowed me to set the relative path to ".\" (current directory) which saves a lot of programming and is more dynamic.. I'm working to automate the process of making storm maps (downloading, using presets, etc. and exporting the graphics), and maybe in the future other types. Thanks!
    – jacktrader
    Commented Aug 18, 2021 at 18:44
3

I have used the "Repair Data Source" tool. Right click on the layer, select "Data", then "Repair Data Source." Select the new location. This will update all layers in the MXD that have moved from one location to the same new location.

2

In ArcMap you can go to File->Map Document Properties ...., and in "Pathnames" check "Store relative pathnames to data sources". As long as your MXD is in the "main" folder, all the data in the same or chid folder will be find even in other machines, without having to replace the data source. The only thing you need to do is preserving the folder tree from the MXD to the children folders where your data are stored.

1
  • 1
    Probably doesn't answer my question directly, but a very good thing to know as a preventative measure, thanks! I'll start doing this when I can now...
    – Dùn Caan
    Commented Jan 19, 2016 at 12:46

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.