3D Visualization of Shapefiles in R

With a lot of help from Ananda Mahto

Posted by Bhargav Rao on February 11, 2016

3D Visualization of ESRI Shapefiles in R has always been a difficult process. Not many have tried to visualize geospatial data in 3D. I have utilized maptools and plot3D for the following visualization. So we include the libraries

library(maptools)
library(plot3D)

First we use the readShapeSpatial function from maptools to read the shapefile. Remeber to point it to the .shp file.

ShapeFile <- readShapeSpatial('Test.shp')

I have used a shapefile of Atlantic Canada in my example below, you can use the same from here

The S4 object returned from readShapeSpatial contains a slot called polygon. This helps us get the co-ordinates to plot the different polygons.

Polygons <- slot(ShapeFile,"polygons")

Using lapply, we can extract the coordinate values and the Polygon ID from the slot. This is done as follows.

temp <- do.call(rbind, lapply(Polygons, function(x) slot(slot(x, "Polygons")[[1]], "coords")))

Now we create a dummy plot

polygon3D(temp[, 1], temp[, 2], rep(0, nrow(temp)), col="transparent")

Finally we use polygon3D to draw the polygons.

for (i in seq_along(Polygons)) {
  temp <- slot(slot(Polygons[[i]], "Polygons")[[1]], "coords")
  polygon3D(temp[, 1], temp[, 2], rep(0, nrow(temp)), add = TRUE)
}

We now have our nice map.

3D Visualization of Shapefile

You can download the complete R code by clicking here