我对 R plotKML 包有一个奇怪的问题,我可以在其中使用该kml_layer()
函数,直到我尝试将其合并kml_layer
到我自己的函数中并将参数从我的自定义函数传递给kml_layer
函数。到目前为止,我只使用 kml_layer.Raster() 方法遇到了这个问题。产生的错误是:Error in eval(call.lst[["z.lim"]]) : object 'rangeArg' not found
'rangeArg' 是下面示例中我自己的对象。
我认为这是一个一般环境/范围问题,但我以前从未遇到过它,我无法在其他任何地方重现它。这是一个可重现的例子。
library(raster)
library(plotKML)
# load a small raster dataset referenced by raster package:
elevation <- getData('alt', country='CHE')
ElevationRange <- c(2000,3000)
#Works:----------------
plotKML::kml_open("test",overwrite=TRUE)
plotKML::kml_layer(obj = elevation,
colour=CHE_msk_alt,
z.lim=c(2000,3000)) #Testing z.lim argument without named object
plotKML::kml_close(file.name="test.kml")
#Works:-------------------------
plotKML::kml_open("test",overwrite=TRUE)
plotKML::kml_layer(obj = elevation,
colour=CHE_msk_alt,
z.lim=ElevationRange) #Testing z.lim with an object being passed
plotKML::kml_close(file.name="test.kml")
#Doesn't Work:-----------------------
writeSimpleRasterKML <- function(rangeArg = ElevationRange){
plotKML::kml_open("test",overwrite=TRUE)
plotKML::kml_layer(obj = elevation,
colour=CHE_msk_alt,
z.lim=rangeArg) #Wrapping code in function and passing a function argument to z.lim
plotKML::kml_close(file.name="test.kml")
}
writeSimpleRasterKML() #ERROR HERE
看:
> writeSimpleRasterKML()
KML file opened for writing...
Error in eval(call.lst[["z.lim"]]) : object 'rangeArg' not found
Called from: eval(call.lst[["z.lim"]])