R語言學(xué)習(xí)記錄:關(guān)于矢量和柵格的坐標(biāo)系|如何定義投影和重投影
https://spatialreference.org/
https://epsg.io/
這兩個網(wǎng)站可以查找CRS字符串(proj4、WKT、EPSG)
https://products.aspose.app/gis/transformation
這個網(wǎng)站可以在線轉(zhuǎn)換WGS和UTM
1.查看CRS的方法
矢量:
柵格:
2.定義CRS的方法
(注意是定義CRS,原來沒CRS,現(xiàn)在要賦予一個CRS)
2.1矢量:
法1:指定epsg代碼
法2:指定proj4字符串
2.2柵格:
3.重投影
(注意與定義投影的區(qū)別,原來有CRS,現(xiàn)在更換CRS)
3.1矢量重投影
3.1.1 sf包重投影
法1:sf包指定epsg代碼
法2:sf包指定proj4字符串
法3:sf包用一個對象的crs(有的教程里說需要添加“asText=T”,這樣才能作為字符串輸出并作為新的輸入,但是我自己測試了一下,好像不用也可以)
3.1.2?terra包重投影
和下面的terra包柵格投影是一樣的,看完后面就懂了。
3.2柵格重投影
3.2.1raster包重投影

法1:raster包指定EPSG代碼
法2:raster包指定proj4字符串
法3:raster包用另一個對象的crs
3.2.2terra包重投影

法1:用另一個對象的CRS作為參考
法2:指定EPSG代碼
法3:指定proj4字符串或者WKT字符串
別用字符串重投影,真的太麻煩了!
4.學(xué)習(xí)過程中遇到的問題
太長不看版總結(jié):不能用定義投影的函數(shù)去重投影。
用投影坐標(biāo)系轉(zhuǎn)地理坐標(biāo)系進行測試:
crs函數(shù)結(jié)果顯示proj4和WKT2,節(jié)選proj4的部分如下:
用crs函數(shù)試圖將投影坐標(biāo)系轉(zhuǎn)為地理坐標(biāo)系:
函數(shù)能運行,看看crs的結(jié)果
結(jié)果表明雖然代碼能運行,但是用plot函數(shù)查看,會發(fā)現(xiàn)還是投影坐標(biāo)系的坐標(biāo)

把它寫出來導(dǎo)到arcmap里看看能不能運行

然后用projectRaster函數(shù)重投影
但是出來一個警告信息

警告說:前后crs一致。那么說明前面的用定義投影的函數(shù)是運行過的。
此時再plot一下重投影之后的柵格b
plot的結(jié)果和上面“舔狗之怒”一樣,坐標(biāo)單位仍然是m
寫出來再導(dǎo)到arcmap看看

這個時候就可以初步下結(jié)論了:用定義投影的函數(shù)作用于一個已經(jīng)有投影的柵格后,再用重投影函數(shù)也還是不起作用。
為了驗證這個結(jié)論,進行如下操作:
把變量清空,重新導(dǎo)入原始柵格,直接用projectRaster函數(shù)重投影
查看此時b的crs結(jié)果
此時的crs結(jié)果和剛開始一樣,plot之后坐標(biāo)會改變嗎?try it

再寫出來導(dǎo)到arcmap,觀察結(jié)果如何

arcmap可以顯示并且坐標(biāo)變成了經(jīng)緯度。
總結(jié):不僅不能用定義投影的函數(shù)去重投影,而且在錯誤使用該函數(shù)后再用重投影函數(shù)也還是會報錯。只能一開始就用重投影函數(shù)。