Main Content

Surface Relief Shading

You can make dimensional monochrome shaded-relief maps with the surflm function, which is similar to the surfl function. The effect of surflm is similar to using lights, but the function models illumination itself (with one “light source” that you specify when you invoke it, but cannot reposition) by weighting surface normals rather than using light objects.

Shaded relief maps of this type are usually portrayed two-dimensionally rather than as perspective displays. The surflm function works with any projection except globe.

The surflm function accepts geolocated data grids only. Recall, however, that regular data grids are a subset of geolocated data grids, to which they can be converted using the geographicGrid function. The following example illustrates this procedure.

Create Monochrome Shaded Relief Map

Simulate a single light source in a figure using surflm. First, load elevation data and a geographic cells reference object for the Korean peninsula. Import coastline vector data using readgeotable. Create a map with appropriate latitude and longitude limits using worldmap.

load korea5c
latlim = korea5cR.LatitudeLimits;
lonlim = korea5cR.LongitudeLimits;
coastline = readgeotable("landareas.shp");

worldmap(latlim,lonlim)

Display the coastline data using geoshow.

geoshow(coastline,'FaceColor','none')

Figure contains an axes object. The hidden axes object contains 23 objects of type patch, line, text.

Transform the regular data grid to a geolocated data grid using the geographicGrid function. Then, generate a shaded relief map using surflm. By default, the lighting direction is 45º counterclockwise from the viewing direction. Therefore, the light source is in the southeast. Change the colormap to the monochromatic colormap 'copper'.

[klat,klon] = geographicGrid(korea5cR);
s = surflm(klat,klon,korea5c);
colormap('copper')

Figure contains an axes object. The hidden axes object contains 24 objects of type patch, line, text, surface.

Clear the map. Then, display the shaded relief map with a different light source by specifying the azimuth as 135º and the elevation as 60º. The surface lightens and has a new character because it is lit closer to overhead and from a different direction.

clmo(s)
s = surflm(klat,klon,korea5c,[135 60]);

Figure contains an axes object. The hidden axes object contains 24 objects of type patch, line, text, surface.

Shift the light to the northwest by specifying the azimuth as -135º. Lower the light to 40º above the horizon. A lower light source decreases the overall reflectance of the surface when viewed from above. Therefore, specify a 1-by-4 vector of reflectance constants that describe the relative contributions of ambient light, diffuse reflection, specular reflection, and the specular shine coefficient.

clmo(s);
ht = surflm(klat,klon,korea5c,[-135 30],[0.65 0.4 0.3 10]);

Figure contains an axes object. The hidden axes object contains 24 objects of type patch, line, text, surface.

The mountain ridges that run from northeast to southwest are approximately perpendicular to the light source. Therefore, these parameters demonstrate appropriate lighting for the terrain.

The monochromatic coloration in this example does not differentiate land from water. For an example that differentiates land from water, see Colored Surface Shaded Relief.

See Also

Functions

Related Topics