R {raster}:简介和基本图解

嘿,

今天我们来看看 {raster} 包装为 R。我将向您展示该软件包应用于 陆地卫星8 USGS Earthexplorer .

1.安装软件包并读取数据

First we have to install the package and load the 拉斯ter image we would like to process:

install.packages('raster') #install
library(raster) #load
setwd('./Landsat8') #set your working directory
imagelist <- list.files(pattern='TIF') #list with all .TIF-files in current folder

2.堆叠层(带)并绘制单个带

现在已经到了使用 {raster} 包装: stack()

基本上,这只是创建带有 相同 空间范围和分辨率。

imagestack <- stack(imagelist)
imagestack

如果调用已创建的一定牛遗漏堆栈,则会获得有关层数,范围,投影,分辨率,最小/最大值等的信息:

class       : RasterStack 
dimensions  : 7931, 7811, 61949041, 7  (nrow, ncol, ncell, nlayers)
resolution  : 30, 30  (x, y)
extent      : 434385, 668715, 5135685, 5373615  (xmin, xmax, ymin, ymax)
coord. ref. : +proj=utm +zone=33 +datum=WGS84 +units=m +no_defs +ellps=WGS84 +towgs84=0,0,0 
names       : LC81900272013217LGN00_B1, LC81900272013217LGN00_B2, LC81900272013217LGN00_B3, LC81900272013217LGN00_B4, LC81900272013217LGN00_B5, LC81900272013217LGN00_B6, LC81900272013217LGN00_B7 
min values  : 0,0,0,0,0,0,0 
max values  : 65535,65535, 65535,65535,65535,65535,65535 

让我们做一些简单的绘图!调用基本plot()函数将使我们能够生成单个波段的图。让我们看一下Band 5(近红外):

plot(imagestack[[5]]) #double brackets needed!

结果我们得到:

频段8(NIR)图R

频段5(NIR)基本图

上面的图看起来已经很不错了,例如,我们可以在一定牛遗漏的右上角清楚地看到较低的NIR值,表示一个湖泊(Neusiedlersee,奥地利)。但是,让我们也看一下一个图中的多个波段。

3.绘制多光谱信息

为此,我们将使用 plotRGB() 函数,有时可能会很棘手,并导致一些错误。即这个:

Error in rgb(RGB[, 1], RGB[, 2], RGB[, 3], alpha = alpha, max = 规模) 

有时,此错误的解决方案是仅指定图层的比例参数。的 规模 参数代表所有三个频段的最大值。在我们的情况下,多数民众赞成在65535(请看上面的一定牛遗漏堆栈信息输出)。

我创建了四个图,两个带4,3,2的真彩色复合一定牛遗漏(一个带线性拉伸)和两个近红外假彩色复合5,4,3(一个带直方图拉伸)。带参数 科纳 我们可以指定NAvalues的颜色,在本例中也就是背景色。

#Layout (you can skip this line)
par(mfrow=c(2,2))
#True Color RGB 432
plotRGB(imagestack, 4,3,2, 规模=65535, 科纳='white')
plotRGB(imagestack, 4,3,2, 规模=65535, stretch='lin', 科纳='white')
#False Color RGB 543
plotRGB(imagestack, 5,4,3, 规模=65535, 科纳='white')
plotRGB(imagestack, 5,4,3, 规模=65535, stretch='hist', 科纳='white')

结果如下:

rgbPlot:虚假和真彩色组合

rgbPlot:虚假和真彩色组合

 

让我们解释上面的最后一个NIR图:

我们可以清楚地看到围绕湖的NIR值较低(在右上角)的较大的绿松石区域,在这种情况下代表田野和一些较小定居点上的土壤。随着我们向西移动,我们可以看到更浓的红色,这就是维也纳森林(维也纳森林)的发源地。
在我看来,对于3-4行代码,这是一个非常令人印象深刻的示例,说明了 {raster} package is for plotting 拉斯ter images. In one of the following posts we will be looking on methods to filter 拉斯ter images, handle NAvalues as well as write new 拉斯ter images with R.
随意问任何问题!

干杯

关于作者

马丁出生于捷克共和国,就读于维也纳自然资源与生命科学大学。他目前在GeoVille(一家位于奥地利的地球观测公司)工作,专门从事土地监测。他的主要兴趣是:开源应用程序,例如R,(地理空间)统计和数据管理,Web映射和可视化。他喜欢旅行,寻宝,摄影和运动。

12条留言

您可以在这篇文章中发表评论。


  • 感谢分享!这非常有帮助

    丽莎·勒·鲁 5年前 回复


  • 您的代码和内容非常清楚,非常有帮助。

    如果数据是高光谱(HS),则plotRGB()不起作用,我认为是这样,

    假色组合如何在HS数据集中工作?请帮我..

    南迪尼K 在4年前 回复


    • 嘿Nandhini!该功能仍然有效。您只需要以红色,蓝色和绿色指定要绘制的波段即可。如果您有4波段栅格堆栈‘ras’并且您想要绘制波段4,3,2,这就是函数调用的样子:plotRGB(ras,r = 4,g = 3,b = 2)
      干杯马丁

      马丁 在4年前 回复


      • 谢谢马丁…. it works well …. 🙂

        南迪尼K 在4年前 回复


  • 谢谢你提供信息。

    我有个问题:

    I have a 拉斯ter stack e.g x.
    在R中,我不小心使用了函数plot(x,1,1),其中前1表示堆栈x中的第一层。但是我不知道第二个1的含义。我在第一个1之后从20到10000玩了很多数字。它改变了地图的外观,但我感到困惑,它的工作方式和含义。有人可以帮忙吗?

    3年前 回复


    • 亲爱的门,
      这是个好问题。如果加载栅格数据包并键入‘?plot’您将进入绘图帮助页面。点击“绘制栅格*对象”然后您将进入栅格绘图方法。在那里,您将找到问题的答案:第三个参数是“maxpixel” argument: “integer >0.用于图的最大像元数。”
      如果您在查找帮助页面表格R时遇到麻烦,也可以使用以下链接: //artax.karlin.mff.cuni.cz/r-help/library/raster/html/plot.html

      希望能帮助到你!

      干杯

      马丁 3年前 回复


  • 嗨马丁
    I fond your blog very useful. I have 拉斯ter stack with 84 individual 拉斯ter layers. When I plot the 拉斯ter stack only a few are plotted. Do you know why it might have happened?
    干杯
    开发人员

    开发人员 3年前 回复


    • 嘿!您可以在plot函数中使用一个参数:
      maxnl =整数。要绘制的最大层数(对于多层对象)
      when 拉斯terStack is your stack, then:
      情节(rasterStack,maxnl = nlayers(rasterStack))
      应该管用。

      祝好运!

      马丁 3年前 回复


      • 那行得通。非常感谢马丁

        开发人员 3年前 回复


  • 嗨,马丁,

    感谢您的博客,这非常有帮助。一世’我尝试使用Landsat 8,频段10进行图层堆叠,因为我想进行土地覆盖率分析并将该频段与其余频段进行比较。但是,在R波段10中,尺寸是其他波段的两倍。我对其进行了重新采样,但最终像素值有所不同,尽管它’的尺寸与其他频段匹配,方法是:
    b10重新采样<-projectRaster(stack10,stack1_7,method ='ngb')

    有什么方法可以堆叠它们,还是必须分别分析?

    帕特里夏 3年前 回复


  • 如何为绘图添加坐标和标题?

    江den 2年前 回复


  • 如何为真实彩色一定牛遗漏添加坐标和标题?

    江den 2年前 回复


发表回复

*