小编jog*_*all的帖子

显示日夜区域的世界地图

我正在尝试将日间/夜间线路添加到世界地图ggplot中,以指示日夜区域; 这样的事情:

daynightexample

计划是在24小时的周期内为我的地图制作动画,如下所示:

sinewavetest

上面的动画是用正弦波实现的,我知道它是完全不准确的.我知道这geosphere::gcIntermediate可以让我绘制大圆线,就像这样:

library(ggplot2)
library(ggthemes)
library(geosphere)

sunPath1 <- data.frame(gcIntermediate(c(-179, -30), c(0, 30), n=100))
sunPath2 <- data.frame(gcIntermediate(c(0, 30), c(179, -30), n=100))
sunPath <- rbind(sunPath1, sunPath2)

ggplot(sunPath) +
  borders("world", colour = "gray95", fill = "gray90") +
  geom_ribbon(aes(lon, ymax = lat), ymin=-180, fill="black", alpha=0.2) +
  theme_map()
Run Code Online (Sandbox Code Playgroud)

greatcircletest

虽然我不确定是否有可能在一年中的不同点画出所需的线条,例如在三月看起来如此:

在天上


我没有找到解决方案的运气,但我猜我不知道要搜索的关键字,因为这超出了我的知识范围.我认为答案可能在日出方程中的某处,但我不知道如何应用这些来找到解决方案,我也不知道如何在一年中改变这些参数.这个网站(用于上面的情节)似乎也很有用,但我还不确定如何!

gis r great-circle ggplot2 geosphere

13
推荐指数
1
解决办法
832
查看次数

在没有全局分配的情况下,在每次函数迭代时动态更新输入数据帧

我有(1)评级参考表,以及(2)基于这些评级随机生成结果的函数,并根据生成的结果更新评级.

虽然下面的可重复示例有更简单的解决方案,但预期的应用是根据他们的Elo评级来模拟对手之间的结果,并且在每轮之后更新评级以便运行模拟"热".

在这里,我有一个评级参考表,ref并使用该函数genResult生成随机结果并使用全局赋值更新参考表.

set.seed(123)
ref <- data.frame(id = LETTERS[1:5],
                  rating = round(runif(5, 100, 200)))

genResult <- function(ref) {

  id_i <- LETTERS[floor(runif(1, 1, 5))]

  score_i <- round(rnorm(1, 0, 20))

  ref[ref$id == id_i,]$rating <- ref[ref$id == id_i,]$rating + score_i

  result_i <- data.frame(id = id_i, score = score_i)

  # assign('ref', ref, envir=.GlobalEnv)
  ref <<- ref

  return(list(result_i, ref))
}
Run Code Online (Sandbox Code Playgroud)

复制此功能两次,我们可以看到ref按预期更新.

replicate(2, genResult(ref), simplify = F)
Run Code Online (Sandbox Code Playgroud)

回到这里,我们可以看到参考表在两次迭代中的每次迭代中都会更新.

[[1]]
[[1]][[1]]
id score
1  A     1

[[1]][[2]]
id rating
1  A …
Run Code Online (Sandbox Code Playgroud)

loops r function global-variables variable-assignment

8
推荐指数
1
解决办法
134
查看次数

使用ffmpeg从视频中提取多个图像并获取提取图像的时间戳

我正在使用ffmpeg每五分钟从视频中提取一帧(以jpeg格式),并将控制台的输出通过管道传输到文本文件中,以获取所提取帧的确切时间戳。

我正在使用的命令是:

ffmpeg -i input.avi -ss 00:10:00 -vframes 10 -vf showinfo,fps=fps=1/300 %03d.jpg &> output.txt
Run Code Online (Sandbox Code Playgroud)

在这里-ss 00:10:00,我可以在开始之前跳过视频中的10分钟,而-vframes 10仅捕获前10帧(每5分钟1帧)。

除了命令会输出所有帧的信息(包括未写为jpeg的帧)以外,这几乎可以正常工作。这是三行示例输出:

[Parsed_showinfo_0 @ 0x2219020] n:11427 pts:11429 pts_time:599.979 pos:48892180 fmt:yuv420p sar:1/1 s:640x480 i:P iskey:0 type:P checksum:6309A75D plane_checksum:[15A29007 1617E1FE D93A3549] mean:[146 125 153 ] stdev:[17.6 1.0 2.1 ]
[Parsed_showinfo_0 @ 0x2219020] n:11428 pts:11430 pts_time:600.031 pos:48898094 fmt:yuv420p sar:1/1 s:640x480 i:P iskey:0 type:B checksum:815D031A plane_checksum:[E004E973 E28CE2D5 F56636B4] mean:[146 125 153 ] stdev:[17.6 1.0 2.1 ]
[Parsed_showinfo_0 @ 0x2219020] n:11429 pts:11431 pts_time:600.084 pos:48892448 fmt:yuv420p …
Run Code Online (Sandbox Code Playgroud)

video ffmpeg

6
推荐指数
1
解决办法
5324
查看次数

'|'怎么样 操作员在R?

我试图理解|R.中的运算符.为什么呢

a = 2
a == 3 | 4
Run Code Online (Sandbox Code Playgroud)

回到TRUER?

a == 3 
Run Code Online (Sandbox Code Playgroud)

a == 4
Run Code Online (Sandbox Code Playgroud)

每次返回FALSE,为什么第二行返回TRUE

syntax r

4
推荐指数
1
解决办法
77
查看次数