學習記錄二:地理/投影坐標系統(tǒng)解讀 + 定義/轉換投影
MODIS數據下載:此前根據王老師的教學視頻學習下載了部分ET/NDVI數據(tif格式),現對所獲數據進行初步處理,需要用研究區(qū)的矢量數據對柵格數據進行裁剪,以提取出所需研究區(qū)域數據。



使用矢量數據對柵格數據進行裁剪時,可以使用切片crop()或掩膜mask()操作。切片與掩膜操作要求兩個對象的投影信息一致,否則會報錯。
查看矢量 / 柵格數據的坐標系是否一致
得出二者坐標系不一致,矢量數據的坐標系為Clarke66 1866,柵格數據的坐標系為WGS1984。故需根據柵格數據投影信息對研究區(qū)矢量范圍數據進行投影轉換,使二者保持一致,方便后續(xù)處理。為更好的理解掌握坐標系的定義/投影轉換相關知識,本篇進行系統(tǒng)學習。
一、地理坐標系和投影坐標系的解讀
1.地理坐標系:地理坐標系是以橢球體面為參考面,以法線為依據,用經緯度表示地面點在橢球表面的位置的坐標系統(tǒng)。簡單點來說,地理坐標系是用經緯度來表示地球表面物體的位置。
不同的地理坐標系的區(qū)別就在于用于擬合地球大地水準面的橢球大小和位置有關。我國常用的地理坐標系有GCS_Beijing_1954, GCS_Xian_1980,CS_WGS_1984,GCS_CN_2000)
地理坐標系由三個參數來定義:角度單位(Angular Unit)、本初子午線(Prime Meridian)和大地測量系統(tǒng)(Datum)。
2.投影坐標系:將球面坐標轉為平面坐標的過程為投影。投影坐標系的實質是平面坐標系統(tǒng),地圖單位通常為(米)。投影坐標系=地理坐標系+投影函數算法。投影坐標系通俗來講就是把地球橢球展平在地圖上畫出來,既然已經有地理坐標系能夠準確表達物體位置了,為啥還需要投影坐標系呢?主要是制圖需要,還可以進行長度和面積的量測等。
3.二者之間的聯系:
地理坐標系進行地圖投影后就變成了投影坐標系。坐標系是數據或地圖的屬性,而投影是坐標系的屬性。一個數據或一張地圖一定有坐標系,而一個坐標系可以有投影也可以沒投影。只有投影坐標系才有投影,地理坐標系是沒有投影的。因此,一個數據或一張地圖亦是可以有投影也可以沒投影的。當然,非要較真,把具有地理坐標系的數據顯示在平面地圖上肯定也有一個投影的過程。
總結:地理坐標系經過投影后變成投影坐標系,投影坐標系因此由地理坐標系和投影組成,投影坐標系必然包括有一個地理坐標系。下圖概括了兩種坐標系的聯系:

4.投影坐標系示例:WGS_1984_UTM_Zone_49N

該投影坐標系由兩部分組成:名為“通用橫軸墨卡托(Universal Transverse Mercator,UTM)的“投影”和名為“GCS_WGS_1984”的“地理坐標系”。
UTM_Zone_49N:通用橫軸墨卡托投影,投影帶為北半球第49帶
WKID:該坐標系的編號為32649
ESPG:是“European Petroleum Survey Group”的縮寫,表示其由“歐洲石油調查組織”發(fā)布,WGS 1984地理坐標系統(tǒng)的ESPG編碼值是:4326
二、ArcGIS Pro 中轉換投影坐標
投影變換可以理解為不同坐標系之間的轉換,按照坐標系的不同可以分為:
輸入和輸出的地理坐標系不同:先轉換地理坐標系,再轉換為投影坐標系
輸入和輸出的地理坐標系相同:直接轉換投影坐標系
1.矢量數據——投影和變換



2.柵格數據——投影柵格

三、R語言中定義+轉換投影坐標
sf?是一個讀取、寫入、操縱、計算simple features對象的工具包。raster是基于rgdal底層庫編寫的地理數據處理包,包括圖像的創(chuàng)建、讀取、運算、可視化。本篇使用sf/raster工具包中的相關函數創(chuàng)建空間矢量/柵格對象,以及設置和轉換矢量/柵格對象的投影坐標信息。
1.定義CRS:定義過的坐標系統(tǒng)能夠賦予空間對象。它可以賦給沒有坐標參考系的對象,也可以覆蓋已存在的坐標系統(tǒng)(后者只有在能確定對象原有的坐標系統(tǒng)是錯誤的情況下才會使用)。
定義坐標系統(tǒng)有兩種方法:①使用EPSG代碼(https://spatialreference.org/ref/epsg/);②使用Proj4格式化的字符串(https://proj.org/apps/proj.html)。這兩種方法在sf和raster工具包中都可以使用。
(1)矢量數據
假設s.sf
原本不存在坐標參考系CRS,使用st_set_crs()
函數進行手動指定
如果s.sf原本有CRS,定義時會有如下提示:

①使用EPSG代碼
②使用proj4字符串
(2)柵格數據
①使用EPSG代碼
②使用proj4字符串
2.CRS轉換:將空間對象的坐標映射到其他坐標系統(tǒng)上去,這個過程會產生新的坐標取值。
(1)矢量數據
矢量投影轉換使用的函數是st_transform(),語法結構如下:
①使用EPSG代碼
②使用proj4字符串
③使用包含目標投影方式的對象作為模板
(2)柵格數據
柵格投影轉換使用的函數是projectRaster()
,語法結構如下:
projectRaster()
函數有兩種方式進行投影:
*? 指定目標投影方式的WKT文本,即參數crs
*? 指定包含目標投影方式的柵格對象作為模板,即參數to
①使用EPSG代碼
②使用proj4字符串
③使用包含目標投影方式的對象作為模板
根據王老師的文章,還可以用terra包重投影,能看懂,累了,不想學了~~~
四、保存數據到本地
1.將矢量數據以shp格式保存在本地,可以使用sf
中的st_write()
函數或它的別名函數wrtite_sf()
2.將柵格數據以tif格式保存在本地

附1:查看proj4參數的方法
提取WKID/EPSG代碼(ArcGIS)—將數字放到網站http://spatialreference.org/ref/上進行檢索



附2:學習參考文章
bilibili:

CSDN:
文章1:sf | 創(chuàng)建空間矢量對象及其投影設置
https://blog.csdn.net/weixin_54000907/article/details/114529757
文章2:raster | R語言中的空間柵格對象及其基本處理方法(Ⅰ)
https://blog.csdn.net/weixin_54000907/article/details/118919732
文章3:R語言中的地理/投影坐標系統(tǒng)(上)
https://blog.csdn.net/weixin_54000907/article/details/124977348
文章4:R語言中的地理/投影坐標系統(tǒng)(下)
https://blog.csdn.net/weixin_54000907/article/details/125026119
知乎:
文章1:R語言Raster包和Terra包柵格讀寫、計算和一些使用經驗分享
https://zhuanlan.zhihu.com/p/438070027
文章2:raster | R語言中的空間柵格對象及其基本處理方法(Ⅱ):投影、屬性提取
https://zhuanlan.zhihu.com/p/395603299

基礎過于薄弱,學起來太費勁了,簡單的內容也要花好久理解~~~
