Creating a grayscale version of any ArcGIS Online basemap

By Rajinder Nagi, Esri Cartographic Product Engineer

Grayscale - thumbnail

We recently got a question on Ask a Cartographer in which Julie asked if you can create a grayscale basemap from any of the colored basemaps that you add from ArcGIS Online. One solution is to use the approach Ismael described in his blog entry Crafting Your Own Basemap Styles with Flex or Silverlight. His approach involves the use of matrices to transform RGB colors, scale RGB colors, and control hue, saturation and contrast. This approach is useful if you want to change the way the basemap is rendered when using Flex or Silverlight to serve a Web map. In this blog entry, we describe how you can “transform” a colored basemap to a grayscale one directly in ArcMap.

The steps involved include:

  1. creating an ArcGIS server connection to the ArcGIS online basemaps,
  2. creating a mosaic dataset,
  3. adding the Basemap Map Service to the Mosaic Dataset,
  4. applying the Grayscale Function to the Basemap Map Service, and
  5. optionally, setting the map scales to ArcGIS Online / Bing Maps / Google Maps.

Creating an ArcGIS Server Connection to the Online Basemaps

To start, you need to connect to the ArcGIS server that has the ArcGIS online basemaps.

  1. Start ArcMap.
  2. Open ArcCatalog.
  3. Expand the GIS Servers folder and double-click Add ArcGIS Server.
    Grayscale - ArcGIS Servers 1
  4. On the first page of the Add ArcGIS Server dialog, opt to “Use GIS Services”.Grayscale - Server 1
  5. On the second page, use an Internet server connection to this Server URL: http://services.arcgisonline.com/arcgis/services.Grayscale - Server 2
  6. Click Finish.
  7. Check that there is a now a connection to “arcgis on services.arcgisonline.com”.Grayscale - ArcGIS Servers 2
  8. Expand the folder for the added server – you will see number of basemaps as map services: Grayscale - ArcGIS Servers 3

Creating a Mosaic Dataset

The next step is to create a mosaic dataset in a new file geodatabase.

  1. In ArcCatalog, create a directory for the location of the new file geodatabase by right clicking the folder for the new FGDB and selecting New > File Geodatabase.
  2. Rename the FGDB “GrayscaleBasemap”.
  3. Right click the GrayscaleBasemap FGDB and click New > Mosaic Dataset.
  4. Name the mosaic dataset GrayscaleBasemap.
  5. Set the projection by clicking the Spatial Reference Properties button Grayscale - Spatial Reference Properties button > Select > Projected Coordinate Systems > World > WGS 1984 Web Mercator (Auxiliary Sphere).prj.
  6. Grayscale Create Mosaic Dataset

Adding the Basemap Map Service to the Mosaic Dataset

Now you need to add the basemap that you want to show with a grayscale to the mosaic dataset you created.

  1. Right click the mosaic dataset and click Add Rasters.
  2. In the Add Rasters to Mosaic Dataset tool, set the Raster Type to Web Services.
  3. For Input, click the Browse button.
  4. In the Input dialog, click the down arrow for “Look in:”, scroll to the bottom, click GIS Servers and double click “arcgis on services.arcgisonline.com”.
  5. Select the basemap you want to work with. In this example, we selected the World_Topo_Map map service.Grayscale - Add Rasters
  6. Click OK.
  7. Check that the map service for the basemap you selected is added to the mosaic dataset, and that it is added to the table of contents as a three band raster in a composite layer.
  8. Grayscale - Table of Contents

Applying the Grayscale Function to the Basemap Map Service

Now that you have the basemap in a mosaic dataset, you can use the Grayscale function to render it in gray tones.

  1. In ArcCatalog, right click the GrayscaleBasemap mosaic dataset and click Properties.
  2. On the Functions tab of the Mosaic Dataset Properties dialog, under Function Chain > GrayscaleBasemap, right click Mosaic Function and click Insert > Grayscale Function.
  3. In the Raster Function Properties dialog, the set weight for each band to 0.33.Grayscale - Raster Functions
  4. Click OK to accept all changes.
  5. To turn off the green outline in the basemap image, uncheck viewing for the Footprint in the table of contents.Grayscale - ArcMap view

The basemap will now be displayed with a grayscale.

Examples

Here is an example of a portion of the World Topo Map when rendered with the grayscale function in ArcMap.

Grayscale - Colored and Grayscale Basemaps
World Topo Map                                      World Topo Map (converted to grayscale)

Here are some examples in which thematic content (point and line), when overlaid on the grayscale basemap, is visibly brought to the foreground.

Grayscale - Colored and Grayscale Churches
Point data representing churches in Redlands, California overlaid on the World Topo Map (left) and on the grayscale version of the basemap (right).

Grayscale - Colored and Grayscale Dams
Point data representing dam storage capacity in Oregon overlaid on the World Topo Map (left) and on the grayscale version of the basemap (right).

Grayscale - Colored and Grayscale Metro
Line data representing the metro transit system in Madrid, Spain overlaid on the World Topo Map (left) and on the grayscale version of the basemap (right).

OPTIONAL: Setting the Map Scales to ArcGIS Online / Bing Maps / Google Maps

You will want to make sure to use the map scales for ArcGIS Online / Bing Maps / Google Maps when zooming in and out in ArcMap, otherwise the wrong cache tiles may be fetched and the view will be wrong for the map scale you zoom to.

  1. On the Standard toolbar, click the down arrow next to the map scale.Grayscale - Standard Toolbar
  2. Click Customize This List.
  3. On the Scale Settings dialog, click the Load button.
  4. Select the ArcGIS Online / Bing Maps / Google Maps map scales.
  5. Click OK.

You may want to use the Light Gray Canvas Basemap color styles when designing operational overlays for your grayscale basemap. The Mapping Center Canvas Map Color Styles blog entry explains how to use these styles when designing your maps.

Thanks to Aileen Buckley, Mapping Center Lead, for her help with this blog entry.

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

Leave a Reply

9 Comments

  1. bmerson says:

    This may be a relatively newbie question. If so, I hope you will indulge me. I see you specify the Web Mercator projection. Is this the projection assumed for all basemaps provided online, or is it simply a choice made for the purpose of this demonstration? Is it required in order to ensure that tiles are properly fetched from online or would any projection be okay during this process of creating the mosaic?

    I’m wondering about using the technique for maps using other projections. For example, if one was creating a world map and wanted to use this technique but wanted a different projection (e.g., Robinson or something), can it be done? Would you follow the same procedure and then simply change the data frame’s projection, or would you specify a different projection when creating the mosaic?

    Also, is the scale discussion at the end related to the fact that we chose the Web Mercator projection when creating the mosaic?

    I guess I need a better understanding of whether the technique could be applied for use in other projections and, if so, exactly how that would be done (as well as any possible downsides to dong so).

    Thanks in advance for any info you can provide.

  2. rajnagi says:

    All new ArcGIS Online basemaps are published in web mercator auxiliary sphere using the Google/Bing Maps tiling scheme (http://help.arcgis.com/en/arcgisonline/content/index.html#//011q00000002000000) and that is the reason I selected web mercator projection while creating the Mosaic dataset. Doing this will not distort the cached tiles of basemaps which are burned using web mercator projection.

    You can re-project the cache tiles in any projection you like either at the time of creating mosaic (specify the projection and Mosaic dataset will re-project on the fly) or simply by change the data frame’s projection as you mentioned. However, note that this may distort the data which is already projected to web mercator. Also projecting on-the-fly will have performance hit.

    You can apply the same procedure to maps using any other projection. e.g you have cached basemap which is in Robinson projection and want to convert it into grayscale. Follow all the steps and choose the Robinson projection while creating mosaic dataset.

    Ideally one should have the basemap created in geographic coordinate system and then project it based on the needs to avoid any distortions due to re-projection.

  3. ramonrlp says:

    This is great.

    so…

    Can I save the map (with the Layer from MosaicDataset) and then create a new MapService on my own ArcGIS Server?

  4. rajnagi says:

    @ramonrlp
    Yes, you can create the map service or serve the mosaic dataset directly as an Image Service using your ArcGIS server. However, read the “Access and Use Constraints” for World Topo Map here (its near the end of the page) : http://www.arcgis.com/home/item.html?id=f2498e3d0ff642bfb4b155828351ef0e

  5. adams_C84 says:

    Can you create a map service from the map service? I thought cascading was not recommended. I created a greyscale mosaic dataset from one of my own cached map services but the raster data does not display in the new service.

  6. rajnagi says:

    @adams_c84

    You can ingest map service in a mosaic dataset and server that as an Image service. You can try to zoom into large scale for your area of interest and see if data is visible. By default, MaxPS = 10* HighPS, where HighPS is the maximum size of pixel in raster. MaxPS controls the display scale of items in mosaic dataset. You may need to increase the MaxPS value in the footprint attribute table to make it visible at small scales. Read this for more information: http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//009t00000042000000

  7. yo_haha says:

    You said in a comment above that it’s possible to create a mosaic layer projected in a projection different from the Web Mercator. And that it’s possible to publish it as an Image Service.
    My question is : is it possible to create a cache from that image service (which is not projected in Web Mercator)?

    PS: My goal is using ArcGIS Online layers on a map having a projection different from Web Mercator. I didn’t find a way to do so. So I’d like to try the method you published in this article.

    • rajnagi says:

      If you are adding a cached map service to the mosaic (which is of different projection) and then serving it as image service, you probably don’t want to recreate cache, since mosaic will reproject the cached tiles from web mercator to your defined projection. But keep in mind that there will be some distortion during re-projection from web mercator to something else.

  8. stiginz says:

    I’m having a problem with the USA Topo service. I’ve complete the steps as outline above, but when I look at the topo in layout it gives me the 250K layer. When I export the map it exports the 63K layer. This is for Alaska. I’ve tried resetting the map scale to no avail. Is there a way to choose the tiles, such as the 250K tiles?

    Also, this example is for ArcGIS Online services. Will it work for any WMS? I’ve tried that as well and been unsuccessful.

    Thanks!