error in rasterFromXYZ
Hi Michael, I generate a table of x,y and z after principal component is generated. In this case z is PCA component value and thus this is my xyz table which I want to convert to raster using rasterFromXYZ command. Regards, Narayani
On Thu, Jan 10, 2013 at 1:55 PM, Michael Sumner <mdsumner at gmail.com> wrote:
Regular is different to square, and ESRI ASCII is not XYZ. I suspect you should just read it with raster(). HTH On Friday, January 11, 2013, Narayani Barve wrote:
Hi All,
I have ESRI ASCII grid format files. I want to apply principal
component on those files and then save those PCA components into ASCII
grid format. I used raster package to perform this operation. My steps
are
1. Read ASCII file, and make stack
2. Use rasterToPoints function to get the matrix to be used for PCA
3. use princomp function on the generated table above.
4. extract the scores from pca output.
5. convert the score of each component to table of 3 columns (x,y,comp)
6. use rasterFromXYZ function to convert the component to raster
7. Save the raster object to ASCII grid.
The trouble is I am receiving error at step 6, for rasterFromXYZ
function. It says "Error in rasterFromXYZ(tbl2) : y cell sizes are not
regular"
I checked the cell sizes for both x and y, to be sure. It is square. I
also tried supplying, digits=5 argument, but no use. I am not able
tease out the error. Am I doing anything wrong? The written code is
below. I cannot supply with the files, as these files are huge.
BioStack = MakeStack("Select ASCII files :")
BioPt1 = rasterToPoints(BioStack)
print("Generating principal component")
pcaPt1 = princomp(BioPt1[,3:dim(BioPt1)[2]], cor = "TRUE")
pcaScores = pcaPt1$scores
d1 = dim(pcaScores)
for ( i in 1:d1[2])
{
print(paste("Writing principal component file ", i ), sep = " ")
tbl1 = cbind(BioPt1[,1:2], pcaScores[,i])
r2 = rasterFromXYZ(tbl1,digits=5)
FileName = paste("Comp",i,".asc", sep = "")
writeRaster(r2,FileName)
}
Thank you in advance and any help is appreciated.
Narayani