C#调用GDAL(读取栅格数据)

说明:

GdalConfiguration.ConfigureGdal() 是 GDAL 的 C# 绑定中的一个方法,它用于配置 GDAL 的运行环境。

在使用 GDAL 之前,需要先对 GDAL 进行初始化。这可以通过调用 Gdal.AllRegister() 方法实现。但是,如果需要使用 GDAL 的一些高级功能,则需要调用 GdalConfiguration.ConfigureGdal() 方法进行进一步配置。

调用 GdalConfiguration.ConfigureGdal() 的示例代码:

GdalConfiguration.ConfigureGdal();
GdalConfiguration.ConfigureOgr();
GdalConfiguration.ConfigureOgr2();

注意:在使用 GDAL 之前,需要先将 GDAL 的 C# 包添加到项目中。这可以通过使用 NuGet 包管理器或手动安装 GDAL 的 C# 绑定来完成。

GDAL的代码示例:

using OSGeo.GDAL;
//using OSGeo.OSR;
using System;

namespace GDAL_test
{
    class Program
    {
        static void Main(string[] args)
        {
            GdalConfiguration.ConfigureGdal();
            //GdalConfiguration.ConfigureOgr();
            // 注册所有的驱动
            Gdal.AllRegister();

            // 打开影像文件
            string fileName = "H:/DEM/DEM12.5.tif";
            Dataset dataset = Gdal.Open(fileName, Access.GA_ReadOnly);

            // 获取影像信息
            int width = dataset.RasterXSize;
            int height = dataset.RasterYSize;
            int bandCount = dataset.RasterCount;

            // 获取投影参考系
            //SpatialReference srs = new SpatialReference(dataset.GetProjectionRef());
            //string wkt;
            //string[] options = { "MULTILINE=YES", "PRETTY_PRINT=YES" };
            //int projection = srs.ExportToWkt(out wkt, options);
            string projection = dataset.GetProjectionRef();

            // 获取投影坐标范围
            double[] geoTransform = new double[6];
            dataset.GetGeoTransform(geoTransform);
            double minX = geoTransform[0];
            double minY = geoTransform[3] + width * geoTransform[4] + height * geoTransform[5];
            double maxX = geoTransform[0] + width * geoTransform[1] + height * geoTransform[2];
            double maxY = geoTransform[3];

            // 读取数据
            Band band = dataset.GetRasterBand(1);
            int[] buffer = new int[width * height];
            band.ReadRaster(0, 0, width, height, buffer, width, height, 0, 0);

            Console.WriteLine("Projection Information:\n" + projection);
            Console.WriteLine("X-axis minimum:" + minX);
            Console.WriteLine("Y-axis minimum:" + minY);
            Console.WriteLine("X-axis maximum:" + maxX);
            Console.WriteLine("Y-axis maximum:" + maxY);
            Console.WriteLine("Columns:" + width);
            Console.WriteLine("Rows:" + height);
            Console.ReadLine();
            // 使用完毕后关闭数据集
            dataset.Dispose();
        }
    }
}

结果:

5940992b3dce459f8dee3b36e419f7c8.png

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

三千思丶

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

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

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

打赏作者

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

抵扣说明:

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

余额充值