Hi Frederico, The kriging function seems to come from the kriging package (please give also the package next time you ask a question), which I dont know. I can therefore not tell you why it does not give you the correct result. But R has a huge number of packages which can krige, and autoKrige from automap should fairly easy be able to give you what you want.
# You have to create a SpatialPolygon of your house first, from which you can sample: pts = cbind(house$x, house$y) pts = rbind(pts, pts[1,]) # Repeating the first coordinates, just to close the polygon house2 = SpatialPolygons( list( Polygons(list(Polygon(pts)), 1))) housegrid = spsample(house2, 10000, "regular") # Sampling 10000 points on a regular grid gridded(housegrid) = TRUE # Defining this to be a grid, not a collection of points # You need to make a SpatialPointsDataFrame of your temperature data, and then you can interpolate coordinates(U) = ~x+y res = autoKrige(temp~1, U, housegrid) spplot(res$krige_output, col.regions = rev(heat.colors(100))) # Your result is in the var1.pred-variable of res$krige_output You will generally get more and quicker answers to questions about spatial data and methods from the r-sig-geo list. Best wishes, Jon On 8/20/2014 11:01 PM, Federico Calboli wrote: > Hi All, > > I am trying to do some kriging of a floor, based on a number of heat sensors. > > My data looks like this: > > sensor temp x y > 1 1 1.25437406 390 2960 > 2 2 0.64384594 830 2960 > 3 3 1.52067733 1420 2960 > 4 4 1.21441928 3127 2920 > 5 5 1.04227694 4005 2920 > 6 6 1.90084852 400 1960 > 7 7 1.58530250 835 1880 > 8 8 1.23060971 1130 1960 > 9 9 0.92749453 1550 1950 > 10 10 0.76638878 1995 1960 > 11 11 0.84247092 2540 1950 > 12 12 0.93999929 3300 1880 > 13 13 0.61610170 4000 1870 > 14 14 1.06967332 395 1330 > 15 15 0.72970917 845 1330 > 16 16 0.60216970 1135 1300 > 17 17 0.44648551 1570 1275 > 18 18 2.49863724 2010 1290 > 19 19 0.71619206 2540 1320 > 20 20 1.50984666 3140 1275 > 21 21 -0.06540552 4000 1258 > 22 22 1.20017747 400 685 > 23 23 1.05820693 1575 640 > 24 24 2.25086655 1830 625 > 25 25 0.69296059 3120 625 > 26 26 0.69324786 3990 605 > > and the floor plan describes the edges of the floor thus: > > x y > 1 210 3200 > 2 210 420 > 3 1510 420 > 4 1510 100 > 5 4090 100 > 6 4090 3200 > 7 2947 3200 > 8 2947 2850 > 9 1647 2850 > 10 1647 3200 > 11 210 3200 > 12 210 3200 > > I run these commands: > > house2 <- list(data.frame(house$x, house$y)) > plot(house.y ~house.x, type = 'l', house2[[1]]) > points(U[,3], U[,4], pch = 20) > housekrig=kriging(U[,3],U[,4],U[,2],polygons=house2,lags = 5) > image(housekrig, xlim = extendrange(U[,3]), ylim = extendrange(U[,4]), col = > rev(heat.colors(100))) > > and I noticed that the kriging area does not respect the floor plan. In > fact, if I do: > > points(U[,3], U[,4], pch = 20) > > the sensors and not in the same place, and the kriging has ignored the edges > of the polygons altogether. > > So my question is, how do I have a kriging of the *whole* surface, based on > my sensors? Any suggestion is welcome, especially if the data does not > require reformatting (or if the reformatting is straightforward)! > > Best > > F > > PS I have contacted the maintainer of the package about the issue but I had > no reply, and I�d need to solve this one way or another sooner, rather than > later. > > > > > ______________________________________________ > R-help@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. [[alternative HTML version deleted]]
______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.