c#中GDAL库的使用(含代码)

使用过程踩坑无数啊,

去看其他博客大牛的文章,都是直说理论, 没有实际可参考的代码,

一个小问题用了一周的时间。

废话不多说,直接看。

1.首先,这是GDAL的官网:http://www.gdal.org/

全是英文,对于英文水平都一般的咱们来说,看到一些专业术语更是头疼。

但我还是耐心看了一下核心的内容。

我写这篇文章时,官网打不开了。

2.在主页中,有Download链接,http://trac.osgeo.org/gdal/wiki/DownloadingGdalBinaries,里面包含各平台的库文件下载,

这里介绍C#下的使用方法,进入http://www.gisinternals.com/sdk/进行下载,

页面中有4种下载类型,其中第三种包含源代码,其它均只包含DLL及可执行文件,主要是版本不同

在该页面中,根据自己使用的Windows版本及VS版本下载相应的库文件。

我先写了一个例子来测试程序:

 GdalConfiguration.ConfigureGdal();//注册
 GDAL.Gdal.AllRegister();
 string img_path = "Resource\\dolly.tif";
 GDAL.Dataset ds = GDAL.Gdal.Open(crane_img_path, GDAL.Access.GA_ReadOnly);
 int rasterX = ds.RasterXSize; //影像宽度
 int rasterY = ds.RasterYSize; //影像高度

 double[] transf = new double[6];
 transf[0] = 0;//图像左上角X坐标
 double craneWidth = 20.5;
 double craneHigh = 10.5;

 decimal transf1 = decimal.Round(Convert.ToDecimal(craneWidth) / 
 Convert.ToDecimal(rasterX), 16);
 transf[1] = Convert.ToDouble(transf1);//图像东西方向(横向)分辨率
 transf[2] = 0;//旋转角度,如果图像北方朝上,该值为0
 transf[3] = Convert.ToDouble(craneHigh);//图像左上角的Y坐标,天车主站高度
 transf[4] = 0;//旋转角度,如果图像北方朝上,该值为0
 decimal transf5 = decimal.Round(Convert.ToDecimal(craneHigh) / Convert.ToDecimal(rasterX), 16);
 transf[5] = -Convert.ToDouble(transf5);//图像南北方向分辨率
 GDAL.Driver driver = GDAL.Gdal.GetDriverByName("GTiff");
 string iconame = "dolly_4800.tif";
 GDAL.Dataset GdalDataset = driver.CreateCopy("Resource\\" + iconame, ds, 0, null, null, null);
 GdalDataset.SetGeoTransform(transf);//写入仿射矩阵参数

 这个例子将没有坐标信息的tif图像添加位置信息,生成一个新的tif文件。里面有详细注释,如果有问题,欢迎在评论区评论。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值