r - 从 R 中的 Raster* 中提取行的问题
问题描述
我在使用 Raster* 对象时遇到了问题。我想从栅格的顶行和底行中提取坐标,然后使用它们创建一个新栅格,其值仅在这些单元格中。这可能是一个不好的解释,所以我将提供一个示例:
r <- raster(xmn=-150, xmx=-120, ymx=60, ymn=30, ncol=36, nrow=18)
values(r) <- 1:ncell(r)
ncol_r <- ncol(r)
ncell_r <- ncell(r)
N_nodes_cells_r <- 1:ncol_r # first row (N, for North)
S_nodes_cells_r <- ((ncell_r - ncol_r)+1):ncell_r # final row (S, for South)
NS_nodes_r <- rbind(xyFromCell(r, cell=c(N_nodes_cells_r), spatial=T),
xyFromCell(r, cell=c(S_nodes_cells_r), spatial=T))
r_NS_nodes <- rasterize(x = NS_nodes_r, y = r)
plot(r_NS_nodes)
这完美地工作。但是,我想在更大的范围内进行。因此,我将范围和ncol
参数替换为nrow
与我正在使用的真实世界栅格等效的值。见下文:
r <- raster(xmn=-117.2667, xmx=-97.13757, ymn=25.42458, ymx=33.16274, ncol=785, nrow=2042)
values(r) <- 1:ncell(r)
ncol_r <- ncol(r)
ncell_r <- ncell(r)
N_nodes_cells_r <- 1:ncol_r
S_nodes_cells_r <- ((ncell_r-ncol_r)+1):ncell_r
NS_nodes_r <- rbind(xyFromCell(r, cell=c(N_nodes_cells_r), spatial=T),
xyFromCell(r, cell=c(S_nodes_cells_r), spatial=T))
r_NS_nodes <- rasterize(x = NS_nodes_r, y = r)
plot(r_NS_nodes)
除了,现在只改变形状和分辨率后,rasterize
函数只返回第一行!我很困惑...
我认为 肯定有问题rasterize
,因为r_NS_nodes
包含顶行和底行的坐标:
plot(r); points(NS_nodes_r)
请,如果有人可以向我解释这一点,或提供解决方案,我将不胜感激。
-亚历克斯。
解决方案
这些值在那里,但未显示在您的绘图上(屏幕上没有足够的像素):
r_NS_nodes[nrow(r_NS_nodes), 1:3]
#[1] 786 787 788
另见
a <- aggregate(r_NS_nodes, 100, na.rm=T)
plot(a)
这是获取手机号码的另一种方法
library(raster)
r <- raster(xmn=-150, xmx=-120, ymx=60, ymn=30, ncol=36, nrow=18)
values(r) <- 1:ncell(r)
cells <- cellFromRowColCombine(r, c(1, nrow(r)), 1:ncol(r))
现在你可以做
xy <- xyFromCell(r, cells)
rr <- rasterize(xy, r)
或者
rout <- raster(r)
rout[cells] <- 1:length(cells)
或者你可以放弃计算细胞数量并做
rout <- raster(r)
cols <- 1:ncol(r)
rout[c(1, nrow(r)), ] <- c(cols, cols+ncol(r))
推荐阅读
- javascript - 即使单击具有 stopPropagation 的元素,也隐藏所有单击事件上的元素
- rxjs - 逻辑或组合 2 个或更多可观察流
- html - autocomplete=off 不适用于谷歌浏览器
- apache-spark - spark2-submit 抛出多个包的错误(--packages)
- math - 如何计算 3D 中点的偏航、俯仰和滚动?
- c - 如何将 CMSIS DSP 库中的转换函数添加到 Makefile?
- haskell - 无论我尝试多少种不同的方法,都无法编译一些简单的 Haskell 代码
- java - 创建 JAR 文件后,命令行返回“错误:无法找到或加载主类 ExampleProgram”?
- mysql - 错误:错误 1822:添加外键约束失败
- c - 在 C 中将程序集跳转命令转换为其十六进制值