标签: raster

光栅R之间的差异

我有两个 Raster 对象

> x1
class       : RasterLayer 
dimensions  : 36, 72, 2592  (nrow, ncol, ncell)
resolution  : 1.35, 1.291667  (x, y)
extent      : -97.2, 0, 20, 66.5  (xmin, xmax, ymin, ymax)
coord. ref. : NA 
data source : in memory
names       : layer 
values      : -9.527037, 15.03242  (min, max)

> x2
class       : RasterLayer 
dimensions  : 36, 72, 2592  (nrow, ncol, ncell)
resolution  : 1.351389, 1.333333  (x, y)
extent      : -97.3, 0, 20, 68  (xmin, xmax, ymin, ymax)
coord. …
Run Code Online (Sandbox Code Playgroud)

r raster

1
推荐指数
1
解决办法
4123
查看次数

循环遍历数据框中的每一行,从栅格中提取值并写入 csv 文件

我有一个带有Name,longitudelatitude列的数据框。我想要一个遍历每一行的函数,从栅格堆栈中提取值并根据Name列写入 csv 文件。

Name    Lon     Lat
Name1   11.11   47.87
Name2   150.1   -40.4
Name3   -50.2   -3.5
Name4   -100.3  49.8

library(raster)
s <- stack(replicate(5, {raster(matrix(runif(2160*4320), 2160), 
         xmn=-180, xmx=180, ymn=-90, ymx=90)}))

I can do that one by one:

location <- data.frame(11.11, 47.87)
ex <- extract(s, location)
write.csv(ex, "Name1.csv")
Run Code Online (Sandbox Code Playgroud)

r raster apply dataframe

1
推荐指数
1
解决办法
3万
查看次数

如何将“SpatialPolygonsDataFrame”扩展到给定的范围

我有一个想要扩展的 shapefile(基本上是添加一些 NA 行和列)。有没有这样的功能raster::extend?不幸的是,这只适用于raster对象。

我可以使用 裁剪它raster::crop,它有一个 方法SpatialPolygonsDataFrame,但我找不到任何可以扩展的东西。

r raster r-sp

1
推荐指数
1
解决办法
3419
查看次数

将栅格类替换为 R 中 data.frame 中的值

我有一个分类结果的整数栅格。现在我想用数据帧中的浮点值替换这些类,即栅格类 1 = 0.321; 2 级 = 0.232;3 级 = 3.211。数据框有很多列,我想替换几种不同情况的类:

Class C      N      ....
1    0.321   0.001 
2    0.232   0.012 
3    3.211   0.021 
Run Code Online (Sandbox Code Playgroud)

有没有办法方便地做到这一点,例如将 data.frame 合并到栅格中?我需要将生成的栅格与另一个栅格相乘以生成输出。

这是光栅文件的元数据:

 > LCC
 class       : RasterLayer 
 dimensions  : 3296, 3711, 12231456  (nrow, ncol, ncell)
 resolution  : 2, 2  (x, y)
 extent      : 514151.8, 521573.8, 7856419, 7863011  (xmin, xmax, ymin, ymax)
 coord. ref. : +proj=utm +zone=55 +datum=WGS84 +units=m +no_defs +ellps=WGS84 +towgs84=0,0,0 
 data source : /home/..../Raster.tif 
 names       : Raster 
 values      : 0, 255  (min, max) …
Run Code Online (Sandbox Code Playgroud)

r raster dataframe

1
推荐指数
1
解决办法
1315
查看次数

具有多个 XY 坐标的 DistanceFromPoints

我正在尝试在raster包中使用 distanceFromPoints 函数:

distanceFromPoints(object,xy,...)
Run Code Online (Sandbox Code Playgroud)

其中,对象是光栅,xy是矩阵xy坐标

现在,例如,如果我的栅格有 1000 个像元并xy表示一个点,我将得到 1000 个值,表示xy每个栅格像元之间的距离。我的问题是当xy有多个坐标时,例如 10 点。函数描述表明xy可以是多个点,但是当我用多个XY点运行这个函数时,我仍然只得到 1000 个值,而我期望XY. 这是如何运作的?

谢谢!

r raster spatial

1
推荐指数
1
解决办法
564
查看次数

读取多个.rds 文件并创建一个对象

我在 stackexchange 上看到过其他示例,但似乎无法使它们适应我的代码。

问题:我有一个包含 .rds 文件的文件夹,我想将其读入 R,然后将所有文件堆叠在一起,以便我可以获取平均值和标准差。当引入 R 时,所有 .rds 文件都是“正式类 RasterLayer”(如果相关的话)。

示例代码:

 # file path to folder where .rds files are stored
   path = "~/Predictions/"
   # create place to store files
   stack <-""
   # create vector of all .rds files in folder
   pred.dates <- dir(path, pattern =".rds")
   # loop to bring in each .rds file
   for(i in 1:length(pred.dates)){
   file <- readRDS(file.names[i],".rds")
   stack <- rbind(stack, file)
   }

   # take mean of all .rds files stacked together and plot 
   pred_mean <- …
Run Code Online (Sandbox Code Playgroud)

r raster rds

1
推荐指数
1
解决办法
4240
查看次数

对 raster::adjacent() 输出值的说明:

我正在尝试使用 raster::adjacent() 创建一个 rooks case 邻接矩阵,但我无法理解输出。

可重现的例子:

library(raster)

r <- raster(nrow = 3, ncol = 3)

rAdjacent <- raster::adjacent(r, cells = 1:ncell(r), pairs = TRUE, directions = 4) 

rAdjacent
      from to
 [1,]    1  3
 [2,]    2  1
 [3,]    3  2
 [4,]    4  6
...
Run Code Online (Sandbox Code Playgroud)

从我对输出的解释来看,输出表明 1 和 3 具有 rooks 大小写关系(如果我正确理解了这种关系,则它们没有)。

问题 1. 这是正确的吗?我是否正确解释了这个输出?

问题 2. 我如何使用 next() 或其他方法创建输出,它可以为我提供相邻的单元格编号对?

谢谢 :)

gis r raster

1
推荐指数
1
解决办法
207
查看次数

更改栅格中的值

我有一个光栅文件(在 QGIS 中从矢量文件创建)。

我想知道在 R 中是否可能:

1)改变像素的值?(我相信所有单元格都具有关联的值“1”,或者至少具有蓝色像素(检查下面的图像),并且我不知道白色像素的值,但我想将其设置为“2” ,例如,所以它将是二进制的)

2)“裁剪”光栅?

以下是输入栅格的特征:

> catC1raster
class       : RasterLayer 
dimensions  : 1384, 2359, 3264856  (nrow, ncol, ncell)
resolution  : 30, 30  (x, y)
extent      : 325352.8, 396122.8, 4613074, 4654594  (xmin, xmax, ymin, ymax)
coord. ref. : +proj=utm +zone=31 +datum=WGS84 +units=m +no_defs +ellps=WGS84 +towgs84=0,0,0 
names       : CAT_C1_30m 
Run Code Online (Sandbox Code Playgroud)

这是情节:

在此输入图像描述

gis r pixel raster

1
推荐指数
1
解决办法
5442
查看次数

面具海洋 - wrld_simpl

我一直试图在下面的代码中将海洋涂成白色或透明,但到目前为止都没有成功。我在 Stack 上看到了其他帖子,但无法将它们应用到我的示例中(例如,我如何在美国地图中为海洋着色?)。我欢迎建议。非常感谢!

library(raster)
library(ggplot2)
library(maptools)
data("wrld_simpl")

#sample raster
r <- raster(ncol=10, nrow=20)
r[] <- 1:ncell(r)
extent(r) <- extent(c(-20, 20, -20, 20))

#plotting
var_df <- as.data.frame(rasterToPoints(r))
p <- ggplot() +
  geom_polygon(data = wrld_simpl[wrld_simpl@data$UN!="10",], 
               aes(x = long, y = lat, group = group),
               colour = "black", fill = "grey") # does the fortification automatically
p <- p + geom_raster(data = var_df, aes(x = x, y = y, fill = layer))
p <- p + coord_equal() +  theme_bw()  +labs(x="", y="") …
Run Code Online (Sandbox Code Playgroud)

r raster ggplot2 r-maptools

1
推荐指数
1
解决办法
519
查看次数

在 terra 包中读取多个栅格

我正在更改我的空间工作流程以使用 terra 包而不是 raster 包。使用光栅包,我曾经将多个光栅直接读入堆栈。

filelist_temp <- list.files(datapath("Climate/World Clim 1 yr Monthly Weather/LCC June and July/June"), full.names = TRUE)
temp_rasters <- stack(filelist_temp)
Run Code Online (Sandbox Code Playgroud)

有没有一种简单的方法可以在 terra 中进行相同的操作?

这是我最初想到的,但它不起作用。我最终得到了一个包含 25 个 spatRaster 的列表

temp_rasters <- c(lapply(filelist_temp, rast))
Run Code Online (Sandbox Code Playgroud)

r raster r-raster terra

1
推荐指数
1
解决办法
244
查看次数

标签 统计

r ×10

raster ×10

dataframe ×2

gis ×2

apply ×1

ggplot2 ×1

pixel ×1

r-maptools ×1

r-raster ×1

r-sp ×1

rds ×1

spatial ×1

terra ×1