问题标签 [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 - 提取属于某个RasterLayer(栅格)某个区域的点
按照标题。
我有一个“分类”RasterLayer
对象,它具有(除了NA
s)两个固定值,0
并且1
. 它是一种逻辑图像。
我还有一个带有坐标的点数据框,格式为SpatialPointsDataFrame
.
如何提取属于某个区域(0
或1
)的点?一直在寻求raster-package
帮助,但我找不到解决方案。
r - 在已知坐标和半径的栅格上绘制圆
我正在尝试将具有定义半径的圆圈绘制到光栅图像上。我已经成功绘制了我的栅格并将点放在图像上:
这是生成的图像的样子:
我的栅格中的像素是 30 m:
我想做的是在每个点上放置一个半径为 x 的圆(例如 300 m)。我可以通过弄乱点的大小来手动执行此操作(cex
例如,使用 ),但是如果我更改图像的尺寸或裁剪我的光栅,那么圆圈不再是正确的大小。有没有办法使用栅格中定义的单位在地图上放置圆圈?
谢谢!
r - R - 'raster' 包 - RasterLayer(“raster”)不提取到 SpatialPolygonsDataFrame(“sp”);只返回 NULL 对象
使用该raster
包,我读入了两个数据集,一个 ASCII 栅格和一个 ESRI shapefile。我想将栅格(水温)数据提取到 shapefile 的全部范围,即湖岸线。
使用该函数SpatialPolygonsDataFrame
读入时,ESRI shapefile 被视为一个。shapefile()
shapefile <- shapefile("shore.shp",verbose=TRUE)
我用这个raster()
函数读入了 ASCII 光栅。
raster <- raster("1995_001.asc",native=TRUE,crs="+proj=merc +datum=WGS84 +ellps=WGS84 +units=m")
shapefile 的坐标参考信息为:
+proj=aea +lat_1=29.5 +lat_2=45.5 +lat_0=23 +lon_0=-96 +x_0=0 +y_0=0 +datum=NAD83 +units=m +no_defs +ellps=GRS80 +towgs84=0,0,0
栅格的(即使用crs
函数中的参数强制转换为以下内容raster()
):
+proj=merc +datum=WGS84 +ellps=WGS84 +units=m +towgs84=0,0,0
然后我使用包中的spTransform()
函数rgdal
将 shapefile 的空间参考强制转换为栅格的空间参考。
spTransform(shapefile, CRS(projection(raster)))
最后,我提交了以下内容:
extract(raster,shapefile,method="simple",fun=mean,small=TRUE,na.rm=TRUE,df=FALSE)
但是,extract()
只是返回类型NULL
的对象list
。我认为这个问题是由坐标引用的显式强制引起的。
此外,以下是show()
在每个数据集上使用该函数的结果:
> show(raster)
class : RasterLayer
dimensions : 1024, 1024, 1048576 (nrow, ncol, ncell)
resolution : 1800, 1800 (x, y)
extent : -10288022, -8444822, 4675974, 6519174 (xmin, xmax, ymin, ymax)
coord. ref. : NA
data source : in memory
names : layer
values : -9999, 8.97 (min, max)
> show(shapefile)
class : SpatialPolygonsDataFrame
features : 1
extent : 597568.5, 998261.6, 278635.3, 668182.2 (xmin, xmax, ymin, ymax)
coord. ref. : +proj=aea +lat_1=29.5 +lat_2=45.5 +lat_0=23 +lon_0=-96 +x_0=0 +y_0=0 +datum=NAD83 +units=m +no_defs +ellps=GRS80 +towgs84=0,0,0
variables : 3
names : AREA, PERIMETER, HECTARES
min values : 59682523455.695, 5543510.075, 5968252.346
max values : 59682523455.695, 5543510.075, 5968252.346
我在这些论坛上搜索了大量类似的问题,但没有得到解决。有人可以借我一个(虚拟的)手吗?
非常感谢,提前。
r - 为什么 as.data.frame 在将因子转换为数据并指定 xy=T 时会出错?
我想将栅格图层转换为数据框并获取坐标。
这工作得很好,但没有给出 xy 值:
as.data.frame(x = naip_svm_cropped)
这会引发错误:
错误是:
匹配错误(round(v),rat$ID):在为函数“匹配”选择方法时评估参数“x”时出错:v[,i]错误:维数不正确
我怀疑问题出在光栅属性表的某个地方,但不确定如何继续。我想我可以将因子转换为数字并尝试从那里开始(xy=T
适用于非因子栅格),但我想找出为什么添加xy=T
会出现此错误。所以我的问题实际上是“为什么会发生这种情况,我怎样才能让它工作(返回 xy 值和单元格值)?”
栅格图层具有作为数据的因子(我不确定如何调用它,这里是 str 语句):
具有如下结构的数据帧上的行为:
我希望能够得到一列“类别”、“x”和“y”。
sessionInfo() R 版本 3.1.2 (2014-10-31) 平台:x86_64-apple-darwin13.4.0 (64-bit) 其他附加软件包:[1] raster_2.3-24 sp_1.0-17
r - 使用 R 栅格进行交互式绘图:鼠标悬停时的值
我想在 R 中做一个小程序,用于交互式可视化和修改一些栅格数据集,被视为彩色图像。用户应该打开一个文件(从终端就可以了),绘制它,通过鼠标单击选择要编辑的点,然后插入新值。
到目前为止,我很容易做到了。我使用包中的plot()
函数raster
来可视化绘图,然后click()
选择点并通过终端编辑它们的值。
我想添加在鼠标悬停时显示值的功能。我已经搜索了如何做到这一点的方法,但这似乎不适用于标准 R 包。这个对吗?
在这种情况下,我可能会被迫使用外部软件包,例如 gGobi、iPlots、Shiny 或 Plotly。但是,我更喜欢KISS并仅使用“标准”图形工具,例如光栅plot()
函数或网格图形对象(例如 from rasterVis
)。
我知道一个闪亮的应用程序可能是最好的,但它需要大量的时间来学习和完善。
r - 使用特定图层的最小值的马赛克栅格堆栈
我正在尝试根据重叠区域中应采用具有最大最低视角的像素这一标准来镶嵌 42 个遥感栅格堆栈(具有 250 个波段)
除了我的光栅堆栈,我还有 42 个光栅(每个堆栈一个),每个像素都有相应的视角。
知道如何解决这个问题吗?
我试图在堆栈中包含视角栅格,并使用类似于
但这没有用...
有什么建议吗?
提前致谢,
R。
r - 从 rasterBrick 或 rasterStack 中提取值时出错
我无法从类的多波段栅格中提取值或点rasterStack
或rasterBrick
. 'extract' 适用于单个栅格,但在应用于rasterStack
or时会出现错误brick
。
这适用于单个栅格,但使用堆栈/砖失败,并且仅在我使用缓冲区参数时才会引发错误。
r - 将 saveRDS() 与栅格对象一起使用时出现问题
我试图用来saveRDS()
保存大量列表,每个列表都包含一个栅格图层和一个带有元数据的列表。从 ncdf 文件中提取栅格图层时效果很好,但是当原始文件是 ascii 文件时,saveRDS()
只写入指向原始文件的指针而不是将值写入最终文件。
这是正在发生的事情的浓缩版本:
myresult.Rdata
现在只是一个 33KB 的指针myfile.asc
,当我真的希望它存储值时,它在我擦除后仍然可以工作myfile.asc
(所以它应该是大约 15MB)
相比之下,对于 ncdf 格式的其他文件:
在这里,myresult2.Rdata
存储的一切都像我想要的那样,所以我的猜测是光栅包出现了问题?
任何人都知道如何解决这个问题?我不想使用writeRaster()
,因为我试图将元数据与数据保存在一起,并使用与从 ncdf 文件中提取的批处理相同的格式以方便以后的处理。
r - 在 R 中从多个栅格文件创建最大栅格
我是一种新的 R,所以也许这是一个愚蠢的问题,但我自己无法弄清楚。
这是我的问题。我有多个具有相同网格大小并覆盖相同区域的 asc 文件。我想从所有 asc 文件中获取每个网格的最大值。我尝试了多种方法:
当我循环抛出文件时,这个失败,因为它遗漏了 NA,所以我的 asc0(我的基本文件)的大小与我的下一个文件 asc1[2] 的大小不同。
有谁知道这样做的方法?我已经准备好循环遍历所有文件,有 13x144 个文件。但我想不出一种方法来获取最大值、存储它并将其与下一个文件进行比较。
谢谢,真的很感谢你的帮助!!!
r - 如何避免 R 雪/降雪包 sfSapply 中的参数名称冲突?
我正在尝试使用snow
andsnowfall
包,特别是sfSapply()
从多个光栅文件中提取数据的函数。它看起来像这样:
fun
传递给的参数sfSapply()
用于extract()
函数(在raster
库中)。但是,sfSapply()
也需要一个fun
参数 ( extract()
);在此示例中,我将其作为第二个位置参数提供。
如何为传递的函数指定一个参数,而不会将它与预期fun
的参数混淆?fun
sfSapply()