R中轨迹强度的空间分布建模

问题描述 投票:0回答:1

我有相同时间间隔的运动物体轨迹的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)

然而,这会产生不平滑的轨迹,并不表示每个细胞的动能。

r r-raster
1个回答
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

© www.soinside.com 2019 - 2024. All rights reserved.