2016-03-15 61 views
0

我有兩個geotiff柵格文件,一個具有所有元數據信息,另一個元數據信息丟失。我知道所有的元數據信息都完全一樣,所以我想將它從一個文件複製到另一個文件。我試圖用光柵,因爲我取得了R.所有的處理在兩個柵格對象之間複製元數據R

這是元數據

af1_patch <-raster(a_files[6]) 

af1_patch 

class  : RasterLayer 
dimensions : 38400, 38400, 1474560000 (nrow, ncol, ncell) 
resolution : 231.656, 231.656 (x, y) 
extent  : -2223901, 6671703, -4447802, 4447802 (xmin, xmax, ymin, ymax) 
coord. ref. : +proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=6371007.181 +b=6371007.181 +units=m +no_defs 
data source : Forest_patches_AF_1.tif 
names  : Forest_patches_AF_1 
values  : 0, 255 (min, max) 

文件,這是不

af1_area <-raster(a_files[1]) 

af1_area 

class  : RasterLayer 
dimensions : 38400, 38400, 1474560000 (nrow, ncol, ncell) 
resolution : 1, 1 (x, y) 
extent  : 0, 38400, 0, 38400 (xmin, xmax, ymin, ymax) 
coord. ref. : NA 
data source : africa_AF_1.tif 
names  : africa_AF_1 
values  : 0, 255 (min, max) 

我試圖將元數據文件複製元數據使用:

res(af1_area) <- res(af1_patch) 
crs(af1_area) <- crs(af1_patch) 
extent(af1_area) <- extent(af1_patch) 

但它不起作用,尺寸和分辨率是不合適的ect和數據值丟失:

af1_area 

class  : RasterLayer 
dimensions : 166, 166, 27556 (nrow, ncol, ncell) 
resolution : 53588, 53588 (x, y) 
extent  : -2223901, 6671703, -4447802, 4447802 (xmin, xmax, ymin, ymax) 
coord. ref. : +proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=6371007.181 +b=6371007.181 +units=m +no_defs 


hist(af1_area) 

    Error in .hist1(x, maxpixels = maxpixels, main = main, plot = plot, ...) : 
    cannot make a histogram; need data on disk or in memory 

謝謝!

+0

Crossposted到GIS stackexchange http://gis.stackexchange.com/questions/184520/copy-resolution-extent-crs-metadata-from-one-raster-file -to-另一個-使用光柵 – Leosar

回答

1

我認爲這正在發生,因爲你是量變到質變的程度之前更改分辨率,因此,該範圍受您分配給它的分辨率的約束。我能夠重現您的問題,並通過改變流程的順序來解決問題。希望對你有幫助!

library(raster) 
x <- raster(matrix(1:10)) 
proj4string(x) <- CRS("+proj=longlat") 
extent(x) <- extent(-10,10,-10,10) 

y <- raster(matrix(1:10)) 
z <- raster(matrix(1:10)) 

#Current Process 
res(y) <- res(x) 
crs(y) <- crs(x) 
extent(y) <- extent(x) 

#Working Process 
extent(z) <- extent(x) 
res(z) <- res(x) 
crs(z) <- crs(x) 

輸出:

> x 
class  : RasterLayer 
dimensions : 10, 1, 10 (nrow, ncol, ncell) 
resolution : 20, 2 (x, y) 
extent  : -10, 10, -10, 10 (xmin, xmax, ymin, ymax) 
coord. ref. : +proj=longlat +ellps=WGS84 
data source : in memory 
names  : layer 
values  : 1, 10 (min, max) 

> y 
class  : RasterLayer 
dimensions : 1, 1, 1 (nrow, ncol, ncell) 
resolution : 20, 20 (x, y) 
extent  : -10, 10, -10, 10 (xmin, xmax, ymin, ymax) 
coord. ref. : +proj=longlat +ellps=WGS84 

> z 
class  : RasterLayer 
dimensions : 10, 1, 10 (nrow, ncol, ncell) 
resolution : 20, 2 (x, y) 
extent  : -10, 10, -10, 10 (xmin, xmax, ymin, ymax) 
coord. ref. : +proj=longlat +ellps=WGS84 
data source : in memory 
names  : layer 
values  : 1, 10 (min, max) 
0

我只想重新分配,這將保留元數據的值,並重新寫入文件:

af1_patch <-raster(a_files[6]) 
af1_area <-raster(a_files[1]) 

af1_patch[] <- af1_area[] 
#writeRaster(af1_patch, a_files[1], ...) 
相關問題