Nightlights II

October 8, 2010

(This article was first published on Steven Mosher's Blog, and kindly contributed to R-bloggers)

I’ve modified some routines so that we are always grabbing a roughly equal area regardless of the latitude. Basically, you do this:

getLonScaleFactor <- function(lat){

kmAtEq <-111.3195

kmAtLat <- 111.41288*cos(lat*DEGREES.TO.RADIANS)-.09350*cos(3*lat*DEGREES.TO.RADIANS)+0.00012*cos(5*lat*DEGREES.TO.RADIANS)



# the above function returns a scale factor for km per degree @ a given latitude

getExtent <-function(x,halfLength=.5,LonLat) {


yMin <- max(ymin(x),LonLat[2] - halfLength)

yMax <- min(ymax(x),LonLat[2] + halfLength)

xMin <- max(xmin(x),LonLat[1] - lonAdjust)

xMax <- min(xmax(x),LonLat[1] + lonAdjust)

e <- extent(xMin,xMax,yMin,yMax)




Simply we feed getExtent a “raster”, a  point, and a “halfLength”  The last parameter tells you how wide and tall your plot will be. So the default of .5 means that your “point” will be bracketed by 1/2 a degree of latitude  (+- 1/2 degree) and the longitude will be scaled depending upon the latitude. At the equator, this entails 1/2 degree in each direction. Toward the pole, I adjust the width to keep the areas generally similar. Note, the underlying data is not globally complete, there are small gaps at the pole. In a better implementation of “getExtent” I would wrap at the extrema. Then I played with colors. Arrg I hate doing color by number:

And by changing the call to “getExtent() I can request a grid that only looks out .25 degrees in latitude and longitude.

To leave a comment for the author, please follow the link and comment on their blog: Steven Mosher's Blog. offers daily e-mail updates about R news and tutorials on topics such as: Data science, Big Data, R jobs, visualization (ggplot2, Boxplots, maps, animation), programming (RStudio, Sweave, LaTeX, SQL, Eclipse, git, hadoop, Web Scraping) statistics (regression, PCA, time series, trading) and more...

If you got this far, why not subscribe for updates from the site? Choose your flavor: e-mail, twitter, RSS, or facebook...


Comments are closed.

Search R-bloggers


Never miss an update!
Subscribe to R-bloggers to receive
e-mails with the latest R posts.
(You will not see this message again.)

Click here to close (This popup will not appear again)