当前位置: 首页 > 知识库问答 >
问题:

R中的writeRaster函数正在自动设置(不需要的)最大值,我可以将最大值设置为null吗?

谷梁子昂
2023-03-14

我在R中的光栅包中遇到了“writeRaster”功能问题。我正在导入我在ArcGIS中制作的光栅(TIF)(与要素光栅的距离)。

我的目标是将距离光栅重新采样到正确的分辨率和范围,然后用适当的光栅“遮罩”它,以将其裁剪到我需要的形状。当我用基本打印功能检查遮罩的结果时,一切看起来都很好,我可以看到新遮罩光栅中的每个像素都有一个距离值。

但是,当我使用writeRaster函数将此光栅写入文件时,生成的光栅看起来像“瑞士奶酪”,任何超过35km的距离都缺少值。经过大量阅读,我找不到任何文档表明有一种方法可以修改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号图中的光栅。

提前感谢您的建议。

共有1个答案

国兴贤
2023-03-14

好吧,朋友们,在花了一个小时来详细说明我的问题后,我设法自己找到了答案。这与设置数据类型有关。

INT2S的最大值为32767

通过将其切换到INT4S,我可以捕获光栅中的全部值。

问题解决了!

 类似资料:
  • 问题内容: 在Swift中,是否可以将最大INT值设置为UITextField? 我的用例是我有5个文本字段,它们需要具有最大的int值。这些值的范围从500一直到10,000。5个不同的文本字段中的每个字段将具有不同的最大值。我不能使用选择器或下拉列表,因为增量将是1。UISlider太难了,无法“擦入”数字。 如果最大int值为5,000,则用户不能(在数字键盘的键盘类型上)输入大于5000的

  • 问题内容: 我目前正在使用@Value Spring 3.1.x注释,如下所示: 如果属性不存在,则将空字符串放入变量中。我想将null作为默认值,而不是一个空String。当然,当未设置属性stuff.value时,我也想避免发生错误。 问题答案: 您必须设置PropertyPlaceholderConfigurer的nullValue 。例如,我使用的是字符串,但您也可以将空字符串用作null

  • 本文向大家介绍解释下z-index最大值和最小值可以设置为多少呢?相关面试题,主要包含被问及解释下z-index最大值和最小值可以设置为多少呢?时的应答技巧和注意事项,需要的朋友参考一下 范围:-2147483648 ~ 2147483647。 解释::js中数字最大范围是-2^53 ~ 2^53,预留最高一位作为符号位,所以可表示整型数字的范围是 -2^31 ~ 2^31 - 1。

  • 问题内容: 我正在尝试设置pandas DataFrame列的最大值。例如: 将产生: 但事实并非如此。 有上百万种解决方案可以 找到 最大值,但是没有什么可以 设置 最大值的……至少我能找到。 我可以遍历列表,但我怀疑有一种更快的方法可以处理大熊猫。我的列表将明显更长,因此我希望迭代花费相对较长的时间。另外,我希望能使用任何解决方案。 问题答案: 我想你可以做: 要么:

  • 我目前使用的@Value Spring 3.1.x注释如下所示: 如果属性不存在,这会将一个空字符串放入变量中。我希望将null作为默认值,而不是空字符串。当然,我还希望避免在未设置属性stuff.value时出现错误。

  • 问题内容: 我有一个搜索栏,并尝试在步骤1中将值从60设置为180,将第二个设置为190。 不管用。知道如何解决吗? 问题答案: