旋转空间坐标省略了其他数据

时间:2018-03-12 05:28:07

标签: r rotation spatial

我有data.frame个空间数据(X,Y),第三列属性数据(Z)分配给每个空间坐标。我需要能够通过围绕中心点旋转空间坐标来操纵空间坐标,然后使用附加的属性对它们进行分析。我能够旋转坐标,但我似乎无法通过旋转过程携带第三列数据。即我需要从data.frame中删除第三列数据以执行空间操作。

Here's the sample data

这是我到目前为止的代码

data<-read.csv("Sample.csv",head=T)
head(data)

#Omit the attribute data

a<-data[-3]

angle <- pi/8
M <- matrix( c(cos(angle), -sin(angle), sin(angle), cos(angle)), 2, 2 )

# FIRST ROTATION
b<-as.matrix(a) %*% M
colnames(b)<-c("X","Y")
b<-as.data.frame(b)

# SECOND ROTATION
c<-as.matrix(b) %*% M
colnames(c)<-c("X","Y")
c<-as.data.frame(c)

# THIRD ROTATION
d<-as.matrix(c) %*% M
colnames(d)<-c("X","Y")
d<-as.data.frame(d)

par(mfrow=c(2,2))
par(mar=c(2,2,2,2))

plot(a,col='red',pch=19,asp=1)
plot(b,col='blue',pch=19,asp=1)
plot(c,col='green',pch=19,asp=1)
plot(d,col='purple',pch=19,asp=1)

我需要做的是以我上面的方式操纵空间数据,但也传递分配给每个点坐标(Z)的原始属性。

我已经尝试了

M <- matrix( c(cos(angle), -sin(angle), sin(angle), cos(angle),1,1), 2,3 )
b<-as.matrix(data) %*% M

但是收到以下错误

  

Error in as.matrix(a) %*% M : non-conformable arguments

我被困住了。谁能帮忙?

1 个答案:

答案 0 :(得分:0)

哦,我明白了。这是显而易见的。只需在操作后添加额外的列。

b$Z<-data$Z
c$Z<-data$Z
d$Z<-data$Z