使用GP裁剪工具裁剪栅格不能“按照矢量图范围”裁剪的一个问题

调用GP工具裁剪栅格数据的代码:

ESRI.ArcGIS.Geoprocessor.Geoprocessor gp = new ESRI.ArcGIS.Geoprocessor.Geoprocessor();
            gp.OverwriteOutput = true;
            
            ESRI.ArcGIS.DataManagementTools.Clip cp;

            try
            {
                cp = new ESRI.ArcGIS.DataManagementTools.Clip();
                cp.in_raster = @"C:\Users\Administrator\Desktop\creatRaster\test4.tif";
                cp.rectangle = "#";
                cp.clipping_geometry = "ClippingGeometry";
                cp.out_raster = "C:\\Users\\Administrator\\Desktop\\creatRaster\\test7.tif";
                cp.in_template_dataset = @"C:\Users\Administrator\Desktop\creatRaster\shape\Tibet_Project.shp";
                gp.Execute(cp, null);

            }
            catch (Exception ex)
            {
                
            }

刚用上面的代码进行栅格数据的裁剪,各参数都对,也裁剪出来了结果,但是结果并不是矢量图的形状。看了一下,我将clipping_geometry属性设置为了TRUE,应该按照矢量图的范围进行裁剪。
在ArcGIS里面重新裁剪了一下,结果也是对的,一时半会儿没搞懂,最后看了一下发现了问题是NoDataValue的原因:

输入的栅格信息如下图所示:
在这里插入图片描述
输入的栅格的NoData值是空的,也就是这个栅格没有设置NoData值,在用GP工具时,如果没有设置NoDataValue(input,optional)这一属性,则输出图层用输入图层的NoData值,即也为空。栅格数据必定是n行*m列的矩形,在ArcGIS中看到的行政区划形状的栅格数据周围的空白处也是有值存在的,只是这个值被设置成了NoDataValue,所以看到行政区划的形状。当NoData没有设置值时,就无法确定周围的值以及显示的时候该以那个值为空白。
之后加上下面代码:
cp.nodata_value = “256”;
再进行裁剪,输出栅格将行政区外(矩形范围内)的栅格值都设置成256,显示的时候判断值256为NoData,显示为空白。
至于cp.nodata_value 值设置成多少要看一下原栅格数据的值的范围,不在范围内的合法值都行。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cshgiser

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值