1 Introduction

When converting spatial features from a geographic coordinate system (GSC) to a projected coordinate system (PCS) one or more spatial properties may be distorted in the transformation. These properties include area, shape, distance and direction.

Nicolas Tissot’s indicatrix is designed to quantify the level of distortion in a map projection. The idea is to project a small circle (i.e. small enough so that the distortion remains relatively uniform across the circle’s extent) and to measure its distorted shape on the projected map.

For example, the following block of code shows the distorted circles across the continental US when presented in a Mollweide projection centered at 100°W. A custom function called draw_tissot is used to generate the map.


draw_tissot(p="+proj=moll",  param="+lon_0=-100")

plot of chunk unnamed-chunk-2

Let’s explore a Tissot Indicatrix (TI) in more detail. To identify the spatial properties that are distorted at a single point we will generate a more detailed plot of the TI using the custom local_TI function. We will generate a TI over central Maine (at longitude= 69.5°W and latitude = 44.5°N to be exact).


proj.in  <- CRS("+proj=longlat +datum=WGS84") # Reference system used to record lat/long values
proj.out <- CRS("+proj=moll +lon_0=-100")     # Reference system we are projecting to
lat  <- 44.5
long <- -69.5

TI <- local_TI(long, lat, proj.in,proj.out)

plot of chunk unnamed-chunk-3

The function returns a plot showing a perfect circle (displayed in a filled bisque color) that one would see if no distortion was at play. The blue distorted ellipse (the indicatrix) is the transformed circle in this particular projection (+proj=moll +lon0=-100 +ellps=WGS84_). The green and red lines show the magnitude and direction of the ellipse’s major and minor axes respectively. These lines can also be used to assess scale distortion (note that scale distortion can vary as a function of bearing). The green line shows maximum scale distortion and the red line shows minimum scale distortion–these are sometimes referred to as the principal directions. In this working example, the principal directions are 1.1293 and 0.8856 (these values are stored in the TI object as explained later in this write-up). A scale value of \(1\) indicates no distortion. A value less than \(1\) indicates a smaller-than-true scale and a value greater than \(1\) indicates a greater-than-true scale.

Projections can distort scale, but this does not necessarily mean that area is distorted. In fact, for this particular projection, area is relatively well preserved despite distortion in principal directions. Area distortion can easily be computed by taking the product of the two aforementioned principal directions. In this working example, area distortion is 1.0001.

The north-south dashed line in the graphic shows the orientation of the meridian. The east-west dotted line shows the orientation of the parallel.

Tissot Indicatrix parameters can be extracted from the function local_TI. In the last block of code, we saved these parameters in a list object called TI. We can display all the parameters by typing TI at a command line, or we can access them individually.

Variable Definition Value in above example
TI$max.scale Maximum scale of distortion 1.129
TI$min.scale Minimum scale of distortion 0.886
TI$scale.meridian Meridian scale factor 1.008
TI$scale.parallel Parallel scale factor 1.021
TI$scale.area Area scale factor 1
TI[[12]][1] Maximum angular deformation 13.888
TI[[12]][2] Angle between true north and grid north 13.774
TI[[12]][3] Angle between parallel and meridian 76.226

It’s important to recall that these distortions occur at the point where the TI is centered and not across the region covered by the TI plot (the size and extent of the region covered in the above plot is arbitrarily chosen).

2 TI’s for a few projections for the continental US

The following shows examples of a few projections and demonstrates how one can manipulate projection parameters to minimize distortion for a few spatial properties.

2.1 Example of a conformal (angle preserving) projection

The following block of code projects the map of the US using a conformal transverse cylindrical projection centered on 100?W.

draw_tissot(p="+proj=tmerc", param="+lat_0=0 +lon_0=-100")

plot of chunk unnamed-chunk-4

To see how this projection may distort features around central Maine, we will call the function local_TI.

proj.in  <- CRS("+proj=longlat +datum=WGS84")
proj.out <- CRS("+proj=tmerc +lat_0=0 +lon_0=-100")
lat      <- 44.5
long     <- -69.5
TI       <- local_TI(long, lat, proj.in,proj.out)