[R-sig-Geo] Plotting an image on a stereographic grid orientation

Roger Bivand Roger.Bivand at nhh.no
Fri Aug 12 12:33:44 CEST 2005


On Fri, 12 Aug 2005, Barry Rowlingson wrote:

> Dag Johan Steinskog wrote:
> 
> > I would like to have a colour presentation of the data. Before I have 
> > used the image command to plot a datamatrix when there is no specific 
> > projection, and I would like to use the image command on this problem too.
> > 
> > I hope someone have time to help me.
> 
>   I think you'd have to loop over every cell in your matrix, get the 
> projected coordinates of the cell and intermediate points along the 
> edges, then draw a filled polygon in a colour relating to the value you 
> want to display.
> 
>   The code in map.grid might help, since it shows how to compute 
> projected coordinates, but the 'grid' is only a set of latitude and 
> longitude lines. You'd need to work out coordinates for each cell in 
> order to fill it in.
> 
>   I could probably bash out a function to do it in half a day, sadly I 
> dont have half a day free at the moment!
> 

I'd got as far as:

This is about warping a raster (note that 180 and -180 in lon overlap) to
the polar stereographic projection, or possibly faking a warp by
projecting the raster cells as polygons (this doesn't give the two curved
edges, but avoids resampling the data).

A further issue is that map() from the maps package imposes its own
display coordinate system.

And:

> map("world", proj="stereographic", xlim=c(-180,180), ylim=c(50,90), 
+ interior=FALSE, lwd=1)
> polygon(mapproject(c(0,0,2.5,2.5,0), c(87.5,90,90,87.5,87.5), 
+ proj="stereographic"), col="red", border=NA)
> polygon(mapproject(c(0,0,2.5,2.5,0), c(57.5,60,60,57.5,57.5), 
+ proj="stereographic"), col="blue", border=NA)

does work, but the polygons would need plotting first, so as not to 
overwrite the coastlines. Curiously, 

> mapproject(c(60,60,62.5,62.5,60), c(57.5,60,60,57.5,57.5),proj="stereographic")

gives the same coordinates as x=c(0,0,2.5,2.5,0), so maybe it isn't so 
easy.

as("GridTopology", "SpatialRings"), anyone? 

Dag, when do you need this (apart from yesterday)?

This from project() in spproj (not yet on CRAN):

> project(cbind(c(60,60,62.5,62.5,60), c(57.5,60,60,57.5,57.5)), 
"+proj=stere +lat_ts=-90 +lat_0=90 +lon_0=0 +k_0=1.0 +datum=WGS84")
 +proj=stere +lat_ts=-90 +lat_0=90 +lon_0=0 +k_0=1.0 +datum=WGS84 
+ellps=WGS84 +towgs84=0,0,0
        [,1]     [,2]
[1,] 3227409 -1863346
[2,] 2967384 -1713220
[3,] 3039289 -1582154
[4,] 3305616 -1720795
[5,] 3227409 -1863346
> project(cbind(c(-60,-60,-62.5,-62.5,-60), c(57.5,60,60,57.5,57.5)), 
"+proj=stere +lat_ts=-90 +lat_0=90 +lon_0=0 +k_0=1.0 +datum=WGS84")
 +proj=stere +lat_ts=-90 +lat_0=90 +lon_0=0 +k_0=1.0 +datum=WGS84 
+ellps=WGS84 +towgs84=0,0,0
         [,1]     [,2]
[1,] -3227409 -1863346
[2,] -2967384 -1713220
[3,] -3039289 -1582154
[4,] -3305616 -1720795
[5,] -3227409 -1863346
> project(cbind(c(0,0,2.5,2.5,0), c(57.5,60,60,57.5,57.5)), "+proj=stere 
+lat_ts=-90 +lat_0=90 +lon_0=0 +k_0=1.0 +datum=WGS84")
 +proj=stere +lat_ts=-90 +lat_0=90 +lon_0=0 +k_0=1.0 +datum=WGS84 
+ellps=WGS84 +towgs84=0,0,0
         [,1]     [,2]
[1,]      0.0 -3726691
[2,]      0.0 -3426439
[3,] 149459.2 -3423178
[4,] 162556.0 -3723144
[5,]      0.0 -3726691

looks promising (project() is based on Barry's code).

Roger



> Barry
> 
> _______________________________________________
> R-sig-Geo mailing list
> R-sig-Geo at stat.math.ethz.ch
> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
> 

-- 
Roger Bivand
Economic Geography Section, Department of Economics, Norwegian School of
Economics and Business Administration, Helleveien 30, N-5045 Bergen,
Norway. voice: +47 55 95 93 55; fax +47 55 95 95 43
e-mail: Roger.Bivand at nhh.no




More information about the R-sig-Geo mailing list