The kl <- kmeans(as(img, "data.frame")[1:3], 5) worked perfectly.

Thank you very much for the time spent to help me.

Laura



2008/6/12 Edzer Pebesma <edzer.pebesma@uni-muenster.de>:

> Roger Bivand wrote:
>
>> On Thu, 12 Jun 2008, Laura Poggio wrote:
>>
>>  Dear list,
>>> I am trying to do some clustering on images. And I have two main
>>> problems:
>>>
>>> 1) Clustering multiband images.
>>> I managed to be successful with a single band image, but when trying to
>>> apply to a 3 band I get the following warning message:
>>> In as.matrix.SpatialGridDataFrame(x) :
>>>  as.matrix.SpatialPixelsDataFrame uses first column;
>>> pass subset or [] for other columns
>>>
>>>
>>> 2) saving clustering results as grid or image.
>>> I get a vector of clusters, but without both coordinates. How it is
>>> possible
>>> to transform it in a grid?
>>>
>>> Here the code I use to read the image itself and to do the clustering:
>>>
>>> library(rgdal)
>>> fld <- system.file("E:/data/IMG/fr/", package="rgdal")
>>> img <- readGDAL("123_rawR.tif")
>>>
>>> kl <- kmeans(img, 5)
>>>
>>
>> img is a SpatialGridDataFrame. kmeans() wants a matrix or data frame, so
>> say:
>>
>> kl <- kmeans(as(img, "data.frame"), 5)
>>
> this also passes the coordinates to the clustering routine; I'm not sure
> but I think that was not the initial idea.
> In case img is a 3-band image, use
>
> kl <- kmeans(as(img, "data.frame")[1:3], 5)
> --
> Edzer
>
>

	[[alternative HTML version deleted]]


