簡體   English   中英

R 如何為光柵對象分配分辨率?

[英]How does R assign a resolution to raster objects?

假設運行以下 R 代碼

install.packages("raster")
library(raster)
r <- raster(ncol=18, nrow=18)
res(r)

res function 的 output 是

[1] 20 10

這些值是如何定義的? raster function 如何計算它們? 它們用什么單位表示?

正如 Guillaume Devailly 所指出的,水平分辨率是水平范圍除以列數。 垂直分辨率是垂直范圍除以行數。 單位是坐標參考系的單位。 默認值為度(用於經度/緯度)。 要為紀堯姆的回答添加更多內容:

創建一個包含 10 行和列的柵格,從 0 到 10。分辨率為 1。

library(raster)
r <- raster(ncol=10, nrow=10, xmn=0, xmx=10, ymn=0, ymx=10)
r
#class      : RasterLayer 
#dimensions : 10, 10, 100  (nrow, ncol, ncell)
#resolution : 1, 1  (x, y)
#extent     : 0, 10, 0, 10  (xmin, xmax, ymin, ymax)
#crs        : +proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0 

將分辨率更改為0.5; 行數和列數加倍

res(r) <- 0.5
r
#class      : RasterLayer 
#dimensions : 20, 20, 400  (nrow, ncol, ncell)
#resolution : 0.5, 0.5  (x, y)
#extent     : 0, 10, 0, 10  (xmin, xmax, ymin, ymax)
#crs        : +proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0 

您可以通過調整范圍來間接更改分辨率

extent(r) <- c(0,5,0,5)
r
#class      : RasterLayer 
#dimensions : 20, 20, 400  (nrow, ncol, ncell)
#resolution : 0.25, 0.25  (x, y)
#extent     : 0, 5, 0, 5  (xmin, xmax, ymin, ymax)
#crs        : +proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0

x 和 y 分辨率可以設置為不同的值

res(r) <- c(1, 0.5)

當您直接更改分辨率時,通過res與 Raster* object 關聯的任何像元值都會丟失; 因為行數或列數必須改變。 如果您通過更改范圍間接更改它,則值將保持不變。

根據我從小插圖中了解到的

默認設置將創建一個具有經度/緯度坐標參考系統和 1 x 1 度像元的全局柵格數據結構。

r
# class       : RasterLayer 
# dimensions  : 18, 18, 324  (nrow, ncol, ncell)
# resolution  : 20, 10  (x, y)
# extent      : -180, 180, -90, 90  (xmin, xmax, ymin, ymax)
# coord. ref. : +proj=longlat +datum=WGS84 

r x范圍默認從 -180 到 +180 度(總共 360 度),並且 360 度/18 點 = 20 度的x分辨率。

r默認情況下, y范圍從 -90 到 +90 度,180 度/18 點導致 10 度的y分辨率。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM