R語言學習記錄:統(tǒng)計柵格波段集均值
Background:
使用ArcMap的波段集統(tǒng)計工具時,輸出的是一個txt格式的文件,結(jié)果是這樣式兒的:

我之前的做法是把它導入到excel里,然后“分列”處理,再用里面的數(shù)據(jù)進行其它操作。
但是后來發(fā)現(xiàn)用R語言的raster包也可以進行這樣的操作,而且得出的結(jié)果直接就是一個向量??梢院芊奖愕脑赗里與其他數(shù)據(jù)相結(jié)合進行進一步分析。
這個操作與ArcMap相比較省去了導出為txt,再導入到excel分列的步驟,個人感覺比較簡便,但是實際上操作時間并不會省很多,畢竟調(diào)試代碼也需要時間(還有就是我自己代碼寫的又慢又垃圾),如果ArcMap的波段集統(tǒng)計工具能直接輸出excel,這波將絕殺,可惜輸出不了。
Method1:for循環(huán)處理

Method2:raster包處理
關(guān)于法2,是來源于我的一個突發(fā)奇想,我想知道把柵格做成一個stack后,還可不可以直接計算mean,直覺告訴我應該可以,但是如果還是用for循環(huán)stack的bands的話感覺就不如法1方便,但我還是想試一試,萬一不用for循環(huán)了呢?

可以看到法2的主要不同之處在于最后的輸出向量為每一個元素賦予了源文件名稱的“name”
Method3:terra包處理

Issues in processing:
在探究法2的過程中,遇到了一些問題。比如第一步把20多個文件變成一個stack object的時候,在raster包的幫助文檔里沒說怎么把巨量的柵格變成一個stack,然后我首先嘗試的是:
然后發(fā)現(xiàn)報錯

然后去搜索引擎搜索問題,找到了這個
https://stackoverflow.com/questions/52746936/how-to-efficiently-import-multiple-raster-tif-files-into-r
按照上面的回答試了一下還是報這個錯,本想著留言再問問答主是咋回事,但是提示stackoverflow的聲望不夠(md)。
于是鉆牛角尖的心態(tài)一下子又上來了,經(jīng)過幾輪試探后,終于找到了問題所在,把上面的代碼修改一下
這樣就可以了。
然后經(jīng)過比較,bug前后的區(qū)別就在于,stack函數(shù)的輸入格式

于是我馬上反應過來,又去raster包的幫助文檔看了一下stack的描述

描述中也沒寫的特別清楚,或者是我還沒理解透。
我對“filename(character)”的理解是:文件名必須得是字符串。我一開始尋思這不廢話么。不知道這是否代表著必須包括路徑。
但是結(jié)論就是:raster函數(shù)的輸入文件,必須得帶路徑,不然無法識別。

還有一個感悟(抒情):今晚上正好給小外甥女復習地理生物,突然想起初一上學期的生物課本,里面有個巴斯德肉湯實驗,然后好像是說研究生物學的主要方法是實驗,先假設,再做實驗,最后根據(jù)實驗結(jié)果進行驗證。這不就是“大膽假設,小心求證”么。不斷嘗試,試錯,再進行修正。
做到這里除了有一種自己獨立解決問題的自豪感和成就感之外,我還覺得,這些解決問題的方法如果不是讀研的折磨,或許我會需要很久很久才會把學到的知識用到生活中,想到這里,突然有一種哪怕研究生畢不了業(yè)我也值了的感覺。
冗談だよ,我還是想畢業(yè)的(ball ball 了?。?/p>