marmap包get.NOAA.bathy

时间:2014-09-14 18:27:34

标签: r package

我遇到了get.depth问题。我在W7上使用R 3.1.1和marmap 0.8。 我在SO上找到的示例和其他脚本工作正常但下面给出了错误或奇怪的输出。

library(marmap)
search()
gombathy<-getNOAA.bathy(-98, -79, 18,32)
glat<-seq(27,29,1)
glon<-rep(-93,length(glat))
data.frame(glon,glat)
get.depth(gombathy, x=glon, y=glat, locator=FALSE)
glat<-seq(27,30,1)
glon<-rep(-93,length(glat))
data.frame(glon,glat)
get.depth(gombathy, x=glon, y=glat, locator=FALSE)

输出:

 [1] ".GlobalEnv"        "package:marmap"    "package:stats"     "package:graphics"  "package:grDevices" "package:utils"     "package:datasets"
 [8] "package:stringr"   "package:methods"   "Autoloads"         "package:base"
Querying NOAA database ...  
This may take seconds to minutes, depending on grid size  
Building bathy matrix ...  
  glon glat  
1  -93   27  
2  -93   28  
3  -93   29  
Error in `$<-.data.frame`(`*tmp*`, "Depth", value = c(-1323L, -1284L,  :  
  replacement has 4 rows, data has 3  
  glon glat  
1  -93   27  
2  -93   28  
3  -93   29  
4  -93   30  
  Lon Lat Depth.1 Depth.2 Depth.3 Depth.4  
1 -93  27   -1323    -129     -23       3  
2 -93  28   -1284    -128     -23       2  
3 -93  29   -1416    -104     -23       2  
4 -93  30   -1259    -103     -24       0  

几个小时后:

在看到Eric在Githup上的帖子之后,我在每个纬度的lon上添加了.00001,程序按预期运行。

get.depth(gombathy, x=glon, y=glat, locator=FALSE)  
    Lon      Lat Depth  
     

1 -92.99999 27.00001 -1259
  2 -92.99999 28.00001 -103
  3 -92.99999 29.00001 -24

1 个答案:

答案 0 :(得分:0)

非常感谢:你发现了一个错误!这是因为get.depth()返回bathy对象的单元格深度,该对象最接近请求深度的点。在你的例子中,这些点落在gombathy的四个单元格的中间,这是造成奇怪行为的原因。

稍微改变点的坐标会导致get.depth()的预期行为:

glat<-seq(27.1,29.1,1)
glon<-rep(-93.1,length(glat))

我更新了代码以更正错误。您可以立即从github安装新版本,或等待在CRAN上发布新版本的marmap。

install.packages("devtools")
library(devtools)
install_github("marmap","ericpante")