我在R的栅格数据包中遇到“ writeRaster”功能问题。我正在导入在ArcGIS中创建的栅格(TIF)(距要素栅格的距离)。
我的目标是将距离栅格重新采样到正确的分辨率和范围,然后使用适当的栅格“遮罩”它以将其裁剪为我需要的形状。当我使用基本绘图功能检查蒙版的结果时,一切看起来都不错,并且可以看到新蒙版栅格中的每个像素都有一个距离值。
但是,当我使用writeRaster函数将此栅格写入文件时,生成的栅格看起来像“瑞士奶酪”,并且超过35公里的任何距离都缺少值。经过大量阅读后,我找不到任何文档可以建议存在一种方法来修改writeRaster设置的最大值-甚至应该设置最大值。我在下面包括了我的代码和基本图解。非常感谢任何尝试帮助我的人!
#Read in distance to fresh water raster
distFW <- raster("D:/Academia/Arc Data/Grackle/NicaCR_90mlayers/dist_FW.tif")
[plot(distFW)][1]
#Resample this layer to the desired resolution and template
NiCR_DistFW<-as.integer(resample(distFW,NiCRrast.tmpl,method="ngb"))
#essentially the same as the first plot
[plot(NiCR_DistFW)][2]
#Mask the resampled raster to the desired shape
NiCR.DistFW.mask.utm <- mask(NiCR_DistFW,NiCR_Mask) #with CA countries cut out.
[plot(NiCR.DistFW.mask.utm)][3]
#write raster to file (this is where things get weird)
writeRaster(x=NiCR.DistFW.mask.utm, filename='DistFWmask2.tif', format='GTiff', datatype='INT2S') #a way to ensure INT2S
#read the newly written raster file in to R so we can review it
dFW <-raster("DistFWMask2.tif")
[plot(dFW)_writeRaster_result][4]
[1]: https://i.stack.imgur.com/v9RkK.jpg
[2]: https://i.stack.imgur.com/v2DG3.jpg
[3]: https://i.stack.imgur.com/cCwJe.jpg
[4]: https://i.stack.imgur.com/MjWj7.jpg
从图4中可以看到,设置了不希望的最大值。我是写入文件的栅格,看起来像图3中的栅格,而不是图4中的栅格。
在此先感谢您的任何建议。
答案 0 :(得分:1)
好朋友,花了一个小时详细说明我的问题后,我自己弄清楚了答案。它与设置数据类型有关。
INT2S的最大值为32,767
通过将其切换为INT4S,可以捕获栅格中所有值的范围。
问题解决了!