【问题标题】:In geosphere package in R, why aren't bearings in 0-360 degrees?在 R 的 geosphere 包中,为什么轴承不在 0-360 度?
【发布时间】:2018-06-25 18:47:51
【问题描述】:

当我使用 geosphere 包中的 bearing 函数计算点之间的方位角时,得到的方位角跨度为 -180 - 180 度。但是,基于geospheredocumentation,我预计轴承的范围为0-360 度。这是文档中的引用:

方向以度数表示(北 = 0 和 360,东 = 90,南 = 180,西 = 270 度)。

我错过了什么?

这是一个小例子:

# set up
library(geosphere)
library(ggplot2)

# create data frame of long/lat
long <- c(-55.25, -55.25, -55.25, -55, -55, -55, -54.75, -54.75, -54.75)
lat <- c(-13.5, -13.25, -13, -13.5, -13.25, -13, -13.5, -13.25, -13)
id <- c("a", "b", "c", "d", "e", "f", "g", "h", "i")
pts <- data.frame(id=id, long=long, lat=lat)

# plot
ggplot(pts, aes(x=long, y=lat, colour=id)) + 
  geom_point()

# calculate bearings from point e to all other points
pts <- pts[,c(2:3)]
b <- bearing(pts[5,], pts)

# I expected this:
# b[1] = 225
# b[2] = 270
# b[3] = 315
# but instead, found this:
b[1]
b[2]
b[3]

【问题讨论】:

    标签: r geosphere


    【解决方案1】:

    根据导航任务,“角度”、“方向”、“航向”和/或“方位”等术语可能有不同的含义。

    bearing() 函数的文档谈到了

    从点 p1 到点的初始方位(方向;方位角) p2.

    因此,函数geosphere::bearing() 传递的方向是方位角(角度)。显然,这些以度数 -180 ... 180 表示。这是您在面向北时转向的相对方向。这很重要,因为它假设您向北,因此可以通过初始左/右转到达您的目的地(或点 p2),即负方位角反映左转,正方位角显示您的目的地在您的右手边。

    当您谈到标准化初始航向(北:= 000 或 360 度)时,您的参考不是您看的方式,而是您的航向跟随。 例如,船舶或飞机在必须校正风偏移时飞行特定航线。关于航向和航向(船头或飞机的机头指向的方向)之间的区别,我在此不再赘述。 但是,为了确定航向,需要从“北向 360”中减去左转(负方位角),同时将正方位角添加到(北向解释为 0)。

    要在数学上解决这个问题,您可以采用长角度数学方法(c.f. this atan-based solution)。

    我们可以通过添加一个“全圆”(360 度)来强制一个正号,然后使用模运算符检查我们已经超出了北标记 (360) 的距离。 例如。 90 + 360 = 450,其中 450 % 模 360% = 1 * 360 + 90 = 90。对于负方位角,这产生 -90 + 360 = 270 或表示为 360 的模数:270 = 0 * 360 + 270。 模数始终是加号之后的 rest。请注意,您还可以添加 2 个或更多完整的圆圈。这不会影响其余的

    要在 R 中做到这一点,只需使用模运算符,即 %%,来确定 360 度以外的余数

    course <- (b + 360) %% 360 # add full circle, i.e. +360, and determine modulo for 360
    pts$BEARING <- b
    pts$COURSE  <- course
    pts
    

    【讨论】:

      猜你喜欢
      • 2015-08-03
      • 2016-02-13
      • 1970-01-01
      • 2015-08-21
      • 2015-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多