问题标签 [r-raster]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
r - 最新的光栅包不会在 Windows 中绘制光栅对象
我正在尝试使用“raster”包绘制栅格,但我遇到了错误
这是我的代码
但是,当我在具有以下版本的 linux 机器上运行它时:R 版本 3.1.1 (2014-07-10) 平台:i686-pc-linux-gnu (32-bit), raster_2.2-31 sp_1.0 -15)
它没有给我一个问题
r - R光栅包:使用“getValuesFocal”函数时内存不足
我有 3 层的栅格(1300 x 1400 单元格),我想使用所有 3 层的数据进行焦点计算。例如,其中一个图层是土地覆盖图,我想在计算中仅使用焦点窗口中与窗口中心像素具有相同土地覆盖类型的这些像素。我想这对于光栅包中的“焦点”功能是不可能的,这就是为什么我试图通过“getValuesFocal”从每个移动窗口范围的 3 层中提取数据。这样做之后,我的想法是遍历由“getValuesFocal”产生的数组行。但是数组非常大,不适合内存,所以我收到错误消息:
我知道像 ff 和 bigmemory 这样的包允许处理大数据集,但是当我的数据集最初无法创建时,我该如何使用它们。我正在使用 64 位 R 并有 8GB RAM。有没有办法将“getValuesFocal”的结果写入文件?我将不胜感激任何帮助。
r - R中rts中的一般均值和子集的问题
我有一段时间在 R 中使用 rts。我有一组栅格,我需要找到一段时间内的平均值。这是我到目前为止所做的:
我很难将 12 月到 2 月的均值子集化,然后生成平均栅格。这就是我在每个月中能够对子集进行的操作:
这看起来还有很长的路要走,并没有让我得到我需要的最终结果。请问有哪些最简单的方法可以做到这一点?
r - R重新采样栅格行为不一致
我有两个不同范围和分辨率的 netCDF 文件。我想从具有相同范围和分辨率的两个文件创建栅格。我想要一个文件的分辨率和另一个文件的范围。
这是我正在使用的代码:
重采样 iceMaxNineK 有效,但重采样 saltNineK 会导致地图卡在已定义范围区域的一个角落,如下图所示。
一、iceMaxNineK:
二、saltNineK:
重采样前iceMaxNineK的尺寸:
重采样后iceMaxNineK的尺寸:
重采样前 saltNineK 的尺寸:
重采样后 saltNineK 的尺寸:
可以通过以下链接访问示例文件:https ://www.dropbox.com/s/x8oqem317vmr7yq/DataForRResample.zip?dl=0
感谢您的时间。
r - 使用“光栅”包将 2 个光栅图像合并到一个图中
我想将我的地图的放大部分添加到原始地图中,并作为最终产品,一张显示原始地图和放大/缩放部分的地图。以meuse
数据集为例:
我不确定raster
orrasterVIS
包中是否有命令可以将栅格的放大部分添加到原始地图上。我已经尝试过该par
功能,但这不起作用。任何建议都会受到欢迎。
r - 从 levelplot 绘制谷歌地图中删除空白
我试图摆脱 rasterVis 包中 levelplot 产生的一些空白。我正在使用 dismo 包来获取谷歌地图,然后使用 levelplot 来绘制它。但是,地图周围有一条白色的细条。如何删除那个空白?
r - 在 R 中创建地理参考
我与 R 合作分析来自 MODIS 的卫星数据(附加文件)。我想.image/.tif
使用 R 对我的文件进行地理配准。这是我使用的脚本:
不幸的是,当我使用levelplot
世界地图绘制它时,它出现在错误的位置。白色区域为陆地/岛屿,黑色线为印尼海岸线
r - 在精确位置绘制点的光栅对象
我有一个要添加点的栅格对象。但是,当我更改绘图大小时,例如通过使其全屏显示,这些点会改变它们的位置。
有没有办法给他们准确的位置,而与地块大小无关?
可重现的代码:
r<- raster(nrows=10, ncols=10)
r <- setValues(r, 1:ncell(r))
plot(r)
points(x=-50,y=20)
points(x=-50,y=-90)
我不允许发布图像。但是当我使设备变小时,较低的点会离开彩色区域,或者当我使设备变大时会更多地进入彩色区域。
干杯
r - 非常慢的 raster::sampleRandom,我能做些什么作为解决方法?
tl;博士:为什么 raster::sampleRandom 需要这么多时间?例如从 30k 个细胞中提取 3k 个细胞(超过 10k 个时间步)。我能做些什么来改善这种情况吗?
编辑:底部的解决方法。
考虑一个 R 脚本,我必须在其中读取一个大文件(通常超过 2-3GB)并对数据执行分位数计算。我使用 raster 包来读取 ( netCDF
) 文件。我在 64 位 GNU/Linux 下使用 R 3.1.2 和 4GB 的 RAM,大部分时间都有 3.5GB 可用。
由于文件通常太大而无法放入内存(由于某种原因,即使 2GB 的文件也无法放入 3GB 的可用内存:)unable to allocate vector of size 2GB
我不能总是这样做,如果我有 16GB 的 RAM,我会这样做:
sampleRaster()
但相反,我可以使用包中的函数对文件中的少量单元格进行采样raster
,仍然可以获得良好的统计数据。
例如:
我对 6 个不同的文件(i
从 1 到 6 个)执行此操作,这些文件都有大约 30k 个单元和 10k 个时间步长(所以 300M 值)。文件是:
- 1.4GB,1 个变量,文件系统 1
- 2.7GB,2 个变量,所以我读取的变量大约 1.35GB,文件系统 2
- 2.7GB,2 个变量,所以我读取的变量大约 1.35GB,文件系统 2
- 2.7GB,2 个变量,所以我读取的变量大约 1.35GB,文件系统 2
- 1.2GB,1 个变量,文件系统 3
- 1.2GB,1 个变量,文件系统 3
注意:
- 文件位于三个不同的 nfs 文件系统上,我不确定它们的性能。我不能排除这样一个事实,即 nfs 文件系统的性能从一个时刻到另一个时刻可能会有很大差异。
- 脚本运行时,RAM 使用率始终为 100%,但系统并未使用所有的交换空间。
sampleRandom(dataset, N)
从一层(=一个时间步长)获取 N 个非 NA 随机单元,并读取它们的内容。对每一层的相同 N 个单元执行此操作。如果将数据集可视化为 3D 矩阵,Z 为时间步长,则该函数采用 N 个随机非 NA 列。但是,我猜该函数不知道所有层的 NA 都位于相同的位置,因此它必须检查它选择的任何列中是否没有 NA。- 当对具有 8393 个单元(总共约 340MB)的文件使用相同的命令并读取所有单元时,计算时间是尝试从具有 30k 个单元的文件中读取 1000 个单元的一小部分。
产生下面输出的完整脚本在这里,带有注释等。
如果我尝试读取所有30k 个单元格:
cannot allocate vector of size 2.6 Gb
如果我阅读1000 个单元格:
- 5分钟
- 45米
- 30米
- 30米
- 20米
- 20米
如果我阅读3000 个单元格:
- 15分钟
- 18米
- 35米
- 34 米
- 60米
- 60米
如果我尝试读取5000 个单元格:
- 2.5 小时
- 22 小时
- 对于 >2 我不得不在 18 小时后停下来,我不得不将工作站用于其他任务
通过更多的测试,我已经能够发现它是sampleRandom()
占用大部分计算时间的函数,而不是分位数的计算(我可以使用其他分位数函数来加速,例如kuantile()
)。
- 为什么
sampleRandom()
要花这么长时间?为什么它的表现如此奇怪,有时很快有时很慢? - 最好的解决方法是什么?我想我可以为第一层手动生成 N 个随机单元,然后
raster::extract
为所有时间步手动生成。
编辑:工作解决方法是:
这很有效,而且速度非常快,因为所有层的 NA 都在相同的位置。我认为这应该是一个sampleRandom()
可以实施的选项。
r - 使用多个线程从光栅砖中提取数据
我正在从光栅文件中提取数据。我只需要提取 1000 个细胞的随机样本,如下所示:
我想使用更多的内核来加速这个过程,就像这样:
但是,该clusterR()
行向我抛出了各种错误,例如:
prvals <- clusterR(pr, extract, args=list(cells[,1])) checkForRemoteErrors(lapply(cl, recvResult)) 中的错误:4 个节点产生错误;第一个错误:参数长度为零
prvals <- clusterR(pr, extract, args=list(cells[,1])) checkForRemoteErrors(lapply(cl, recvResult)) 中的错误:2 个节点产生错误;第一个错误:参数长度为零
prvals <- clusterR(pr, extract, args=list(cells[,1])) checkForRemoteErrors(lapply(cl, recvResult)) 中的错误:3 个节点产生错误;第一个错误:参数长度为零
prvals <- clusterR(pr, extract, args=list(cells[,1])) ClusterR(pr, extract, args = list(cells[, 1])) 中的错误:集群错误另外:有 11 个警告(使用 warnings() 来查看它们)
prvals <- clusterR(pr, extract, args=list(cells[,1])) checkForRemoteErrors(lapply(cl, recvResult)) 中的错误:3 个节点产生错误;第一个错误:参数长度为零另外:警告消息:关闭未使用的连接 9 (/tmp/R_raster_tmp/afantini/raster_tmp_2014-11-28_131043_31528.gri)
怎么了?
编辑:我尝试了raster
文档中的示例,它们在另一台机器上工作,但在这台机器上却没有。所以这台机器存在更深层次的问题。包 snow 已正确安装。R 是最新版本。