Identical classified rendering for all your raster tiles

Do you have several raster layers that you want to display with the exact same classified symbology? You may want to do this, so that your raster tiles look seamless. However the effort to change the class breaks and color of every raster tile can take some time.  Therefore, you can set one layer up with the exact symbology you want, and then import the symbology into the rest of the layers.


default classified rendering

First you need to set up one of the raster layers exactly how you want the symbology to look – both the colors and also the class breaks.
classified renderer set up the way you want it

Then in Table of Contents, right click on the raster layer, and click Save as Layer File.
Save as Layer File

Now that you have a layer file saved, we can import that layer file into any raster layer that is currently using the Classified renderer.  In the Symbology tab, click the Import button, navigate to the layer file you saved.  Repeat these sets of steps for each raster layer (yes unfortunately for each one).
Import Layer files

The end result however is worth it.  Now you have a single renderer across all your raster tiles.
final classified tiles

This entry was posted in Imagery and tagged , , , . Bookmark the permalink.

Leave a Reply

8 Comments

  1. marcg_nz says:

    Hi Simon,

    This article isn’t very helpful. It shows an outdated manual process for changing symbology across what could be tens or hundreds of rasters in an mxd.

    As a better alternative, you could add all your rasters to a mosaic dataset (the ESRI recommended way to manage, analyse and symbolize raster data). Then you only have to apply symbology to the one mosaic layer rather than many individual raster layers.

    Or, if you don’t want to have to manage this process, you could use the power and wonder of the python window in ArcMap and in 5 easy lines of code change multiple raster layers symbology automatically. The only preparation you have to do is to set up one of the layer’s symbology as in the blog post, and remember its name. Then you insert that below where I have put XXXX.

    The text after ## are comments, they have no effect on the code.

    mxd = arcpy.mapping.MapDocument(“CURRENT”)
    df = mxd.activeDataFrame
    layerList = arcpy.mapping.ListLayers(mxd,”dem*”,df) ## you can replace *dem with another wildcard
    for layer in layerList:
    arcpy.ApplySymbologyFromLayer_management(layer,”XXXX”) ## replace XXXX with the name of your symbolized layer.

    Come on ESRI, get with the play, expose users to helpful examples of the power of ArcGIS, and try and break them away from time consuming manual repetition.

    Cheers,
    Marc

    • marcg_nz says:


      mxd = arcpy.mapping.MapDocument(“CURRENT”)
      df = mxd.activeDataFrame
      layerList = arcpy.mapping.ListLayers(mxd,”dem*”,df) ## you can replace *dem with another wildcard
      for layer in layerList:
      arcpy.ApplySymbologyFromLayer_management(layer,”XXXX”) ## replace XXXX with the name of your symbolized layer.

      • Simon Woo says:

        Marc, thank you very much for the code to automatically process this task. I am sure there will be many users that will be very glad.

        As for the mosaic dataset being a better way to handle this task, I completely agree. However not all of our users are on board with the mosaic dataset, or perhaps they lack the license level to create them.

        Thanks for you comments!
        Simon W.

      • winemapper says:

        Hi marcg_nz,

        Thanks for this, but I am having a little trouble getting it to run. I keep getting the error that says ” ERROR 000735: Symbology Layer: Value is required”
        But I have the name of the layer entered. Any ideas about why this is occurring?

        Thanks again.

  2. kpaybins says:

    I have been searching and searching for the python answer given by Marc- Thanks so much! saved me a heck of a lot of time, just in time!

    • kpaybins says:

      okay, now that I started running that process on about 300 grids in an ArcMap session, I am wondering if there is a hanging loop somewhere– I started running this code from the python window in ArcMap, and it is still running after about 2 hours…

      • marcg_nz says:

        That’s odd, I have run it on a couple of hundred rasters and it worked fine. It wasn’t the fastest though. Perhaps if your rasters are stored on a network drive you could try moving them locally. If you are dealing with 300 grids I would definitely look at adding them to a mosaic if you have ArcGIS for Desktop standard or above.

        • kpaybins says:

          I am running through the Python window in ArcMap, and perhaps that is the trouble? To describe my problem a little more: The rasters are local. The issue is that each one is unique to a stream gage, but identical in area and cell size to all other rasters in the scenario- i.e. 20 years of data relating to streamflow crunched through statistical analysis to produce a set of relations between gages , and then krieged in the Geostatistical Analyst. So all rasters overlie each other. In a mosaic, they just produce a bounding box. Perhaps I don’t know very well how to use a mosaic in ArcMap, or know a lot about creating one. I have tried this method, but the mosaic shows the data only in the Arc Catalog, not ArcMap.