writeRaster如果使用中文路径在“光栅”包中出现错误在R语言

时间:2018-02-08 08:59:39

标签: r raster

像这样:

writeRaster(disater_r_mask, filename= "./实验/白银区_drought.tif", format="GTiff", overwrite=TRUE) # need english path and filename

错误如下:

  

.local(.Object,...)出错:数据集复制失败

当我将路径和文件名更改为英语时,结果是可以的。 但是,我想使用中文路径和文件名。 如何解决?

1 个答案:

答案 0 :(得分:1)

这是一个可重复的例子:

    switch(year.length()){
            case 2:
                System.out.println(sand + year);
            break;
            case 4:
                System.out.println(year);
            break;
            default:
                System.out.println(year+" is an invalid year.");
            break;
        }

" TIF"是通过GDAL写的。现在使用另一种(本机)文件格式,它不起作用

library(raster)
r <- raster(ncol=10, nrow=10, vals=1:100)
x <- writeRaster(r, "实验白银区.tif")
#Error in .local(.Object, ...) : Unable to create dataset

但这可以用

解决
y <- writeRaster(r, "实验白银区.grd")
Error in file(fnamevals, "wb") : cannot open the connection
In addition: Warning message:
In file(fnamevals, "wb") :
  cannot open file 'c:/temp/<U+5B9E><U+9A8C><U+767D><U+94F6><U+533A>.gri': Invalid argument

这样

Sys.setlocale(category = "LC_ALL", locale="Chinese") 

或NetCDF

y <- writeRaster(r, "实验白银区.grd")
y 

#class       : RasterLayer 
#dimensions  : 10, 10, 100  (nrow, ncol, ncell)
#resolution  : 36, 18  (x, y)
#extent      : -180, 180, -90, 90  (xmin, xmax, ymin, ymax)
#coord. ref. : +proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0 
#data source : c:/temp/实验白银区.grd 
#names       : layer 
#values      : 1, 100  (min, max)

要编写GeoTIFF(或其他格式的GDAL),您需要设置z <- writeRaster(r, "实验白银区.nc", overwrite=TRUE) #z #class : RasterLayer #dimensions : 10, 10, 100 (nrow, ncol, ncell) #resolution : 36, 18 (x, y) #extent : -180, 180, -90, 90 (xmin, xmax, ymin, ymax) #coord. ref. : +proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0 #data source : c:\temp\实验白银区.nc 并在编写时添加选项Sys.setlocale

"GDAL_FILENAME_IS_UTF8=YES"