2017-10-19 53 views
2
library(raster) 
r <- raster('glc2000_v1_1') # http://forobs.jrc.ec.europa.eu/products/glc2000/products/glc2000_v1_1_Grid.zip 
extent(r) 
# class  : Extent 
# xmin  : -180.0045 
# xmax  : 179.9955 
# ymin  : -56.01339 
# ymax  : 89.99554 
ext <- extent(-69,-63,-3,3) 
r1 <- crop(r,ext) 
#Warning message: 
#In .getRat(x, ratvalues, ratnames, rattypes) : NAs introduced by coercion 

如果我嘗試裁剪一個較小的區域,它工作正常。爲什麼作物有時會在分類柵格上引入NAs?

ext <- extent(-68,-64,-2,2) 
r1 <- crop(r,ext) # works fine 

這個錯誤阻止了我用writeRaster保存文件,但我不知道發生了什麼。

另一位用戶在related question中發現此問題。 RAT(光柵屬性表)被破壞,取決於原始光柵的哪一部分被裁剪。不知道爲什麼會發生這種情況。

> ext <- extent(-68,-64,-2,2) # The RAT is copied from the original 
> r1 <- crop(r,ext) 
> levels(r1) 
[[1]] 
    ID  COUNT            CLASSNAMES 
1 1 12875179      Tree Cover, broadleaved, evergreen 
2 2 8688097    Tree Cover, broadleaved, deciduous, closed 
3 3 4099003     Tree Cover, broadleaved, deciduous, open 
4 4 15080165      Tree Cover, needle-leaved, evergreen 
5 5 8054159      Tree Cover, needle-leaved, deciduous 
6 6 5606446        Tree Cover, mixed leaf type 
7 7 579763    Tree Cover, regularly flooded, fresh water 
8 8 115705    Tree Cover, regularly flooded, saline water 
9 9 4269938   Mosaic: Tree Cover/Other natural vegetation 
10 10 587270          Tree Cover, burnt 
11 11 3195387      Shrub Cover, closed-open, evergreen 
12 12 15605651      Shrub Cover, closed-open, deciduous 
13 13 17560702       Herbaceous Cover, closed-open 
14 14 23573022     Sparse herbaceous or sparse shrub cover 
15 15 3089962   Regularly flooded shrub and/or herbaceous cover 
16 16 21692769        Cultivated and managed areas 
17 17 4025653 Mosaic: Cropland/Tree Cover/Other natural vegetation 
18 18 3921904    Mosaic: Cropland/Shrub and/or grass cover 
19 19 24629888            Bare Areas 
20 20 471034157            Water Bodies 
21 21 10660085            Snow and Ice 
22 22 378999     Artificial surfaces and associated areas 
23 23  29056             No Data 

> ext <- extent(-69,-63,-3,3) # The RAT is corrupted 
> r1 <- crop(r,ext) 
> levels(r1) 
[[1]] 
     ID  COUNT          CLASSNAMES 
1   1 8688097   Tree Cover, broadleaved, deciduous, open 
2   2 4099003    Tree Cover, needle-leaved, evergreen 
3   3 15080165    Tree Cover, needle-leaved, deciduous 
4   4 8054159      Tree Cover, mixed leaf type 
5   5 5606446  Tree Cover, regularly flooded, fresh water 
6   6 579763  Tree Cover, regularly flooded, saline water 
7   7 115705           Mosaic 
8   8 4269938    Tree Cover/Other natural vegetation 
9   9 587270         Tree Cover, burnt 
10  10 3195387    Shrub Cover, closed-open, evergreen 
11  11 15605651    Shrub Cover, closed-open, deciduous 
12  12 17560702      Herbaceous Cover, closed-open 
13  13 23573022   Sparse herbaceous or sparse shrub cover 
14  14 3089962 Regularly flooded shrub and/or herbaceous cover 
15  15 21692769      Cultivated and managed areas 
16  16 4025653           Mosaic 
17  17 3921904 Cropland/Tree Cover/Other natural vegetation 
18  18 24629888           Mosaic 
19  19 471034157    Cropland/Shrub and/or grass cover 
20  20 10660085          Bare Areas 
21  21 378999          Water Bodies 
22  22  29056          Snow and Ice 
23  23  NA   Artificial surfaces and associated areas 
24 12875179  NA           No Data 
+0

'sum(is.na(r1 []))'雖然返回0 ...您是否可視化地檢查了第一個'crop'的結果? – loki

+0

@loki是的,它返回0.並且'r1 [is.na(r1)]'返回NULL。第一批作物通常情況下。 – Rodrigo

+0

因此,警告沒有任何意義? – loki

回答

2

該錯誤消息指出了柵格屬性表中出現了錯誤。問題與標籤上的特殊字符有關。

特別是,半角(:)似乎導致裁剪柵格中的類名「分裂」。因此,只要兩個

「馬賽克:樹木覆蓋/其它自然植被」

「馬賽克:耕地/樹木覆蓋/其它自然植被」

像素被包括在裁剪範圍內,RAT由於多個標籤而被損壞,從而防止了更改等文件的保存。

「整理」 之類的使用示例名稱:

levels(r)[[1]]$CLASSNAMES <- stringr::str_replace(levels(r)[[1]]$CLASSNAMES , ":", "-") 

解決了這個問題。

+0

這是由冒號在臨時文件(僅爲大數據集創建)中用作分隔符引起的錯誤。我已經在'raster' 2.6-1版(即將發佈) – RobertH

相關問題