我有相同时间间隔的移动物体轨迹的x,y,z坐标以及强度(表示为动能Etot
):
t x y z Etot
1 0.00 696621.4 167730 1680.960 1192.526
2 0.01 696621.4 167730 1680.959 1192.526
3 0.02 696621.4 167730 1680.958 1192.526
4 0.04 696621.4 167730 1680.952 1192.526
5 0.06 696621.4 167730 1680.942 1192.526
6 0.08 696621.4 167730 1680.929 1192.526
7 0.11 696621.4 167730 1680.901 1192.526
8 0.13 696621.4 167730 1680.877 1192.526
9 0.15 696621.4 167730 1680.850 1192.526
10 0.16 696621.4 167730 1680.834 1192.526
我想创建一个光栅文件,指示对象将通过的每个单元格的概率以及单元格和动能。
这样做的目的是,将来我会有很多轨迹,并将使用这个程序来创建轨迹强度的空间分布。
现在我创建了一个栅格.tiff文件:
colnames(df) <- c("t", "x", "y", "z", "Etot")
head(df,10)
df$trajectory <- 1
library(raster)
library(sp)
# create a SpatialPointsDataFrame
coordinates(df) <- ~ x+y
# create an empty raster object to the extent of the points
rast <- raster(ext=extent(df), resolution=2)
# rasterize your irregular points
rasOut<-rasterize(df, rast, df$z, fun = mean)
fout="my_raster.tif"
writeRaster(rasOut, fout, format="GTiff", overwrite = T)
然而,这会产生不平滑的轨迹,并不表示每个细胞的动能。
答案 0 :(得分:0)
在提问时,请在可重复的示例中提供一些数据。例如
df <- read.table(text="t x y z Etot
1 0.00 696621.4 167730 1960 11.92
2 0.01 696621.4 167720 1959 11.92
3 0.02 696631.4 167730 1958 119.2
4 0.04 696631.4 167740 1952 1192
5 0.06 696641.4 167730 1942 11.92
6 0.08 696641.4 167720 1929 119.2
7 0.11 696651.4 167740 1901 11.92
8 0.13 696651.4 167720 1877 1192
9 0.15 696661.4 167730 1850 1192
10 0.16 696661.4 167740 1834 1192")
df$trajectory <- 1
您的代码,略有浓缩
library(raster)
r <- raster(ext=extent(df[, c('x', 'y')]), resolution=2)
r <- rasterize(df[, c('x', 'y')], r, df$Etot, fun = mean)
plot(r)
这似乎有效。与您的代码唯一重要的区别在于您正在栅格化df$z
而不是df$Etot
。