# [R-sig-Geo] Drawing circular contours

Roger Bivand Roger.Bivand at nhh.no
Wed Mar 7 11:25:18 CET 2007

```On Wed, 7 Mar 2007, Edzer J. Pebesma wrote:

> Gabor, sp provides a contour method for objects of class
> SpatialGridDataFrame. I don't know how you should create a grid such
> that contours are circles -- simplest to generate distances from
> specific points.

These are effectively vector buffers around points. My guess would be that
the "circle"-type functions sent to R-help (often for drawing not
returning a polygon-as-circle) could be used. For example, John Fox'
posting:

http://finzi.psych.upenn.edu/R/Rhelp02a/archive/74907.html

could be adapted (for the projected case, the geographical coordinates
case is more difficult). Then construct SpatialPolygons objects from the
output object. Or make a template polygon for (0,0) and shift to the
required (x,y) centres before making SpatialPolygons objects.

Hope this helps,

Roger

PS. Most GIS do this, and I think PostGIS/GEOS does too, but I don't think
any of them can store the output as anything other than a ring polygon.

> I don't know if there is easy way to do this right now;
> a rather indirect way is to use the kriging variance from a linear
> variogram and a 1-NN neighbourhood:
>
> library(gstat) # requires sp
> data(meuse)
> coordinates(meuse) = ~x+y
> data(meuse.grid)
> gridded(meuse.grid) = ~x+y
> # interpolate over the complete rectangular area, not just the study area:
> meuse.grid = as(meuse.grid, "SpatialGrid")
> # krige from 10 random points with linear variogram and 1-NN neighbourhood:
> out = krige(log(zinc)~1,meuse[sample(1:155,10),], meuse.grid, vgm(1,
> "Lin", 0), nmax=1)
> # contour kriging variance:
> contour(out[2], asp=1)
>
> Note that the contour method does not set the aspect ratio by default --
> an omission.
> --
> Edzer
>
>
> Gabor Grothendieck wrote:
> > I am currently doing the following to draw circles at the
> > indicated distances from the center.  The center is given
> > by utm coordinates: utm.e, utm.n .  It does work:
> >
> > class(im2) # "SpatialGridDataFrame"
> > image(im2, "ind", col = col\$ct)
> > library(plotrix)
> > dd <- c(25, 50, 100, 150)
> > for(i in 1:4) draw.circle(utm.e, utm.n, dd[i], border = "yellow")
> >
> > However, I would like to do this in a style better suited to sp
> > and rgdal by defining a function whose contours are circles and
> > plotting the indicated contours of it.  Also I assume I will get
> > labelled contours by doing that which I don't currently have.
> >
> > How do I do that?  I would appreciate specific code, if possible,
> >
> > Thanks.
> >
> > _______________________________________________
> > R-sig-Geo mailing list
> > R-sig-Geo at stat.math.ethz.ch
> > https://stat.ethz.ch/mailman/listinfo/r-sig-geo
> >
>
> _______________________________________________
> 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