2列之间的操作(度值)

Operation between 2 columns (degree values)

在 R 中,我找不到以度数计算坡度的方法。

我有一个包含 2 列纵横比的 shapefile。第一列 ASPECT 对应点的新方面,第二列 Aspect 是参考方面。我只想保留 ASPECT 列中值周围不大于或小于 45° 的值。我想为每个值做这个计算。

我的数据是这样的:

ID   ASPECT   Aspect
0  17.15395 223.9521
1 323.72394 225.1147
2 294.01069 225.7785
3 302.72811 226.4539
4 321.79413 227.1748
5 326.36743 227.9040

我想过做 ASPECTAspect 之间的差异,以便过滤掉所有不适合的值。问题是,因为它是度数,我有时会有高达 359 的差异,实际上只有几度。

    gr73999<-readOGR(dsn=wd, layer="73366_CORRPOINTS")
    gr<-as.data.frame(gr73999)
    gr_df<- gr[,c("ID","ASPECT","Aspect")]


    gr_df$degree_diff<- gr_df$Aspect-gr_df$ASPECT

ID    ASPECT   Aspect     Difference_aspect
0  17.15395 223.9521        -206.79816
1 323.72394 225.1147          98.60924
2 294.01069 225.7785          68.23220
3 302.72811 226.4539          76.27422
4 321.79413 227.1748          94.61931
5 326.36743 227.9040          98.46343    

    min(gr_df$degree_diff)
-359.0588
    max(gr_df$degree_diff)
358.2314

我的问题是:我怎样才能以度为单位进行所有计算?如果 Aspect 是 340 并且 ASPECT 是 10,是否可以使用 -30 而不是 330?

我认为这符合您的要求。它总是会给出 -180 和 +180 之间的答案。

gr_df$degree_diff <- ((gr_df$Aspect-gr_df$ASPECT+180) %% 360) - 180