C#操作GDAL——(3)栅格处理相关

本文收录了一些关于栅格的操作。GDAL对于影像的操作中,有很多需要注意的地方,可能由于影像的差异,所使用的的参数也存在一些差异,这里都进行了列举。希望能对大家有所帮助。


(1)获取影像信息

获取影像信息参数设置

public static string Gdal_Info(string filePath)
{
    StringBuilder builder = new StringBuilder();
    //builder.Append("-proj4 ");
    //builder.Append("-nomd ");
    return builder.ToString();
}

GDALInfo执行方法

var options = Gdal.ParseCommandLine(Gdal_Info(filePath));
GDALInfoOptions infoOptions = new GDALInfoOptions(options);
string info = Gdal.GDALInfo(ds, infoOptions);

(2)影像重投影

重投影参数设置

public static string Gdal_WarpOriImg()
{
    StringBuilder builder = new StringBuilder();
    builder.Append("-overwrite ");
	
	//输出的空间参考为WGS84
	builder.Append("-t_srs WGS84 ");
    
    //输出的nodata值为0
    builder.Append("-srcnodata 0 ");
    
    //设置输出的影像长度为800,宽度自适应
    builder.Append("-ts 800 0");
    
    //只有具有rpc参数的影像才可以添加此参数,否则会报错。
    //rpc参数信息可以通过GDALInfo方法来获取
    builder.Append("-rpc");
    
    //如果输入影像不具备投影信息,则需要添加下面两行
	builder.Append("-to SRC_METHOD=NO_GEOTRANSFORM ");
    builder.Append("-to DST_METHOD=NO_GEOTRANSFORM ");
	
	//支持多线程,但是目前认为只添加-multi是没有意义的
	builder.Append(" -multi" );
    
    return builder.ToString();
}

GDALWarp执行方法

public static void ProcessWarp(string inPath, string outPath, string str)
{
    var options = Gdal.ParseCommandLine(str);
    Dataset inputDataset = Gdal.Open(inPath, Access.GA_ReadOnly);
    IntPtr[] ptr = { Dataset.getCPtr(inputDataset).Handle };
    GCHandle gcHandle = GCHandle.Alloc(ptr, GCHandleType.Pinned);
    SWIGTYPE_p_p_GDALDatasetShadow dss = new SWIGTYPE_p_p_GDALDatasetShadow(gcHandle.AddrOfPinnedObject(), false, null);
    Gdal.wrapper_GDALWarpDestName(outPath, 1, dss, new GDALWarpAppOptions(options), null, null);
    inputDataset.FlushCache();
    inputDataset.Dispose();
    GC.Collect();
}

(3)影像配准

配准参数设置

public static string Translate(string srcPath, string dstPath, Dictionary<string, string> dic_xyValue)
{
    Dataset ds = Gdal.Open(srcPa
  • 1
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值