[R-sig-Geo] enumerate grid clusters/patches with size of contiguous cluster

Murray Richardson murray.richardson at utoronto.ca
Wed Mar 12 21:59:37 CET 2008


Thanks everyone for these responses

I'm pulling in too many different code sources already so I think I'll 
try Roger's approach and keep it in R.

Appreciate this.

Murray



Roger Bivand wrote:
> On Wed, 12 Mar 2008, Agustin Lobo wrote:
>
>> and a combination of r.clump and r.stats
>> in grass (which is "linked" to R) can also do the job.
>
> Yes, that will be very robust. I've tried an R attack through 
> neighbour lists:
>
> library(sp)
> data(meuse.grid)
> coordinates(meuse.grid) <- c("x", "y")
> gridded(meuse.grid) <- TRUE
> fullgrid(meuse.grid) <- TRUE
> class(meuse.grid)
> names(meuse.grid)
> meuse.grid$ffreq1 <- meuse.grid$ffreq == 1
> is.na(meuse.grid$ffreq1) <- !meuse.grid$ffreq1
> image(meuse.grid, "ffreq1")
> pix <- as(meuse.grid["ffreq1"], "SpatialPixelsDataFrame")
> summary(pix)
> image(pix)
> library(spdep)
> nb_rook <- dnearneigh(coordinates(pix), 0, 41)
> nb_queen <- dnearneigh(coordinates(pix), 0, 57)
> comp_rook <- n.comp.nb(nb_rook)
> comp_queen <- n.comp.nb(nb_queen)
> t_rook <- table(comp_rook$comp.id)
> t_queen <- table(comp_queen$comp.id)
> t_rook
> t_queen
> pix$rook <- comp_rook$comp.id
> pix$queen <- comp_queen$comp.id
> image(pix, "rook", col=rainbow(31))
> pix$nrook <- t_rook[pix$rook]
> pix$nqueen <- t_queen[pix$queen]
> summary(pix)
> image(pix, "nqueen")
> spplot(pix, "nqueen")
>
> using cut-off distances for distance-based neighbours just larger than 
> the resolution and the diagonal resolution. There were only 779 cells 
> in patches here, but it ran so fast that scaling up shouldn't be a 
> problem.
>
> Roger
>
>>
>> Agus
>>
>> Andrew Niccolai escribió:
>>> If you aren't dedicated to an R specific solution, ImageJ is open 
>>> source and
>>> does this under Analysis/Binary.
>>>
>>> -----Original Message-----
>>> From: r-sig-geo-bounces at stat.math.ethz.ch
>>> [mailto:r-sig-geo-bounces at stat.math.ethz.ch] On Behalf Of Murray 
>>> Richardson
>>> Sent: Wednesday, March 12, 2008 12:59 PM
>>> To: r-sig-geo at stat.math.ethz.ch
>>> Subject: [R-sig-Geo] enumerate grid clusters/patches with size of 
>>> contiguous
>>> cluster
>>>
>>> Hello friends,
>>>
>>> I am trying to take a binary input grid of patches (connected cells 
>>> with
>>> value = 1), and assign to each non-zero cell the total number of pixels
>>> comprising the patch to which it belongs.
>>>
>>> So for a connected patch of 27 pixels, all cells belonging to that 
>>> patch
>>> will have a value of 27.
>>>
>>> Just wondering if anyone has any suggestions.  Maybe a function I don't
>>> know about yet...
>>>
>>> Thanks in advance,
>>>
>>> Murray Richardson
>>>
>>> _______________________________________________
>>> 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
>>>
>>
>>
>




More information about the R-sig-Geo mailing list