从 R 中的空间点数据中每隔一行和一列删除

Delete every second row and column from spatial point data in R

我已将栅格转换为 R 中的点矩阵。该文件有 3 列,x(经度)、y(纬度)和 v(像素值)- 我现在希望通过 x 删除每隔一列和图像左上角所示的每第二行 y 但我不知道如何执行此操作。这个想法是在不进行任何插值或重新采样的情况下对数据进行细化。

可在此处访问所示示例数据:https://drive.google.com/file/d/1XGEPsPEyrVNLEcZy-C6ES5915kWIaqGz/view?usp=sharing

这个有用吗?如果没有可重现的示例和所需的输出,很难知道要操作什么,但这应该从矩阵中删除偶数行和列。

library(dplyr)
matrix(1:100, nrow = 10) %>%
  as.data.frame() %>%
  filter(row_number() %% 2 != 0) %>%
  select(seq(1, ncol(.), 2)) %>%
  as.matrix()

在提出 R 问题时,请始终包含一个最小可重现的自包含示例,即显示一些代码并且不要依赖必须下载的文件。

当您开始使用栅格数据时,在创建点之前处理栅格数据可能是最简单的方法。

使用 raster 包:

示例数据

library(raster)
r <- raster(nrow=20, ncol=20, xmn=0, xmx=1, ymn=0, ymx=1, crs="+proj=utm +zone=1 +datum=WGS84")
values(r) <- 1:ncell(r)

p <- rasterToPoints(r)
plot(r)
points(p, cex=.5)

解决方案

i <- seq(1, nrow(r), 2)
j <- seq(1, ncol(r), 2)
r[i,] <- NA
r[, j] <- NA
pp <- rasterToPoints(r)
points(pp, pch=20, cex=2)

或者使用 terra 包:

library(terra)
r <- rast(nrow=20, ncol=20, xmin=0, xmax=1, ymin=0, ymax=1, crs="+proj=utm +zone=1 +datum=WGS84")
values(r) <- 1:ncell(r)
p <- as.points(r)

plot(r)
points(p, cex=.5)

i <- seq(1, nrow(r), 2)
j <- seq(1, ncol(r), 2)
r[i,] <- NA
r[, j] <- NA
pp <- as.points(r)

points(pp, pch=20, cex=2)