[R] how to plot a map on a non-rectilinear grid

Roger Bivand Roger.Bivand at nhh.no
Mon Mar 17 18:10:45 CET 2008


Costas Douvis <cdouvis <at> geol.uoa.gr> writes:

> 
> Hi everyone
> 
> I have a matrix (let's say that it contains the values of elevation) and
> want to plot its values on a map using a function such as image.plot or
> filled.contour. The problem is that my grid is not rectilinear, it is
> bended. Here is an example
> 
(example removed)
> 
> All 3 matrices have dimensions 20x25. How can I plot elev values in the
> grid points defined by lat and lon?

You can flatten all three to triplets of (x, y, z) values, and colour-code 
the points, which, as you say, do not form a grid. image() and friends 
require either a matrix treated as a grid, or a list with the x and y 
margins and z as a matrix.

Since these are not in a regular grid, the usual approach is to interpolate,
perhaps using interp() in the akima package, or using other methods of your
choice, so that you can plot the interpolated values on a regular grid.

If you are considering plotting a grid with data based on geographical
coordinates on a map in projected coordinates, the input rectangular 
cells can be projected, using object classes defined in the sp package,
and functions provided in the same package, with projection using 
spTransform() methods in the rgdal package.

Perhaps the R-sig-geo list would be more suited to your question?

Roger Bivand

>



More information about the R-help mailing list