[R] identify() - image()

javier garcia - CEBAS rn001 at cebas.csic.es
Thu May 27 20:59:20 CEST 2004


Thanks Barry (and Thomas),

I wanted it to extract information from imported maps from the GIS GRASS, 
with a few modifications the functions works also very well for this.

Best regards,

Javier
-----------
El Mié 26 May 2004 19:40, Barry Rowlingson escribió:
> javier garcia - CEBAS wrote:
> > Hi all;
> > Just to ask if you know about any available function in R to identify
> > points in a image plotted in X11. Something like the function identify(),
> > but able to extract (x,y,value) groups from the image.
>
>   this is what I use:
>
> image.identify <- function(xyz, mark=T, digits=3){
>
>    nx <- length(xyz$x) - 1
>    ny <- length(xyz$y) - 1
>    if(!all(dim(xyz$z)==c(nx,ny))){
>      stop("Really need image specified by cell edges")
>    }
>    res <- data.frame()
>    xy <- locator(1)
>    while(!is.null(xy)){
>      xbin <- as.numeric(cut(xy$x,xyz$x))
>      ybin <- as.numeric(cut(xy$y,xyz$y))
>      if(mark){
>        points(xy$x,xy$y,pch=19,cex=.5,col="blue")
>
> text(xy$x,xy$y,format(xyz$z[xbin,ybin],digits=digits),adj=-.2,col="blue")
>      }
>      cat("[",xbin,",",ybin,"] = ",xyz$z[xbin,ybin],"\n",sep='')
>      res <-
> rbind(res,data.frame(i=xbin,j=ybin,x=xy$x,y=xy$y,z=xyz$z[xbin,ybin]))
>      xy <- locator(1)
>    }
>    res
> }
>
> Try:
>   > m=list(x=1:11,y=1:11,z=matrix(runif(100),10,10))
>   > image(m)
>   > identify.image(m)
>
>   then click some things. Button 2 to finish.
>
>   The returned data frame gives row and column in the 'z' matrix, x and
> y coordinates, and value of the z matrix at that point.
>
>   Baz




More information about the R-help mailing list