最近一直琢磨如何用C#+GDAL读取栅格数据(.tif或.img),运气不错的在GDAL 的官网上找到一部分源码。经过本人测试,效果还不错。学习还将继续深入下去。

参考网址:http://trac.osgeo.org/gdal/browser/trunk/gdal/swig/csharp/apps/GDALRead.cs

开发环境:VS2008+GDAL1.5

所需dll :gdal15.dll、gdal_csharp.dll、gdal_wrap.dll、gdalconst_csharp.dll、gdalconst_warp.dll

一、将以上.dll添加到工程bin\debug目录下。

二、建立控制台程序,添加gdal_csharp引用。如图

三、工程GDALRead处右键打开属性对话框,调试一栏添加命令行参数,如图:

这里的命令行参数在程序中直接被数组args[]调用。

四、任务与目标

(1)、读取栅格数据的一般参数,如坐标投影(Projection)、波段数(Rsatercount)、数据驱动、栅格大小(RasterSize)

(2)、每个波段的数据类型(DataType)、大小(Size)、PaletteInterp

五、完整代码

View Code

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using OSGeo.GDAL;
 6 namespace GDALRead
 7 {
 8     class Program
 9     {
10         public static void usage()
11         {
12             Console.WriteLine("usage");
13             System.Environment.Exit(-1);
14         }
15      public  static void Main(string[] args)
16         {
17             //Console.WriteLine(args[0]);
18             //Console.ReadLine();
19          try
20          {
21              Gdal.AllRegister();
22              Dataset ds = Gdal.Open(args[0],Access.GA_ReadOnly);
23              if (ds==null)
24              {
25                 Console.WriteLine("Can't open " + args[0]); 
26                  System.Environment.Exit(-1); 
27              }
28              Console.WriteLine("raster dataset parameters:");
29              Console.WriteLine("  Projection:" + ds.GetProjectionRef());
30              Console.WriteLine("  Rastercount:" + ds.RasterCount);//RasterCount是波段数
31              Console.WriteLine("  RasterSize (" + ds.RasterXSize + "," + ds.RasterYSize + ")");
32 
33              /************************************************************************/
34              /* Get Driver                                                                     */
35              /************************************************************************/
36              Driver drv = ds.GetDriver();
37              if (drv ==null)
38              {
39                  Console.WriteLine("Can't get driver");
40                  System.Environment.Exit(-1);
41              }
42              Console.WriteLine("using driver" + drv.LongName);
43              /************************************************************************/
44              /* Get raster band                                                                    */
45              /************************************************************************/
46              for (int iBand=1;iBand<=ds.RasterCount;iBand++)
47              {
48                  Band band = ds.GetRasterBand(iBand);
49                  Console.WriteLine("Band" + iBand + ":");
50                  Console.WriteLine("   DataType:" + band.DataType);
51                  Console.WriteLine("   Size (" + band.XSize + "," + band.YSize + ")");
52                 Console.WriteLine("   PaletteInterp: " + band.GetRasterColorInterpretation().ToString()); //调色说明?
53 
54                 for (int iOver = 0; iOver < band.GetOverviewCount(); iOver++)
55                 {
56                     Band over = band.GetOverview(iOver);
57                     Console.WriteLine("      OverView " + iOver + " :");
58                     Console.WriteLine("         DataType: " + over.DataType);
59                     Console.WriteLine("         Size (" + over.XSize + "," + over.YSize + ")");
60                     Console.WriteLine("         PaletteInterp: " + over.GetRasterColorInterpretation().ToString());
61                 } 
62 
63              }
64              /************************************************************************/
65              /* Processing the raster    
66               * To be continued
67              /************************************************************************/
68 
69          }
70              
71          catch (System.Exception ex)
72          {
73              Console.WriteLine("Application error: " + ex.Message);
74          }
75          Console.ReadLine();
76         }
77     }
78 }

六、运行结果

我找了一幅.img的遥感影像,不含投影坐标,运行结果如下:

转载于:https://www.cnblogs.com/ming5536/archive/2011/05/30/ming5536.html

C# GDAL 学习一相关推荐

  1. GDAL学习笔记02:GDAL基础知识

    你的习惯决定了你会成为什么样的人. GDAL学习笔记02:GDAL基础知识 前言 1. 版本 2. 摘要 3. 说明 4. 微信公众号GISRSGeography 一.GDAL简介 二.导入GDAL ...

  2. (C++)GDAL学习笔记—— 5 全色影像与多光谱影像的融合

    任务 将全色影像与多光谱影像融合. 原理 使用的方法是HSI变换法,即先将多光谱影像选择RGB三个波段进行HSI变化得到H(色调).S(饱和度).I(亮度)三个波段.之后按照全色波段的尺寸将H和S两个 ...

  3. Python GDAL学习笔记(一)

    目录 一.读取tif格式影像 导入GDAL模块并查看版本/位置 打开影像 查看行列号和波段数 查看影像文件描述和其他属性 打开数据集波段并获取统计信息 利用numpy将波段数据写入数组 将波段数据写入 ...

  4. 【GDAL学习】用GDAL读取栅格数据

    1.根据坐标读取遥感影像的单个像素值 # week 4: get pixel values at a set of coordinates by reading in one pixel at a t ...

  5. GDAL学习笔记——OGR投影

    解析坐标系 当OGRSpatialReference对象被创建时,就可以解析该对象所包含的信息.可以使用OGRSpatialReference提供的IsProjected()和IsGeographic ...

  6. Python+GDAL几何校正任意自带经纬度数据的遥感影像

    目录 前言 构建虚拟数据集 几何校正 完整代码 前言 李民录老师在他的博客中使用C++ GDAL的gdaltranslate.exe.gdalwarp.exe等工具对FY3A_MERSI数据进行了几何 ...

  7. windows下gdal的java开发环境搭建

    本文接前文gis利器之Gdal(一),前面简单介绍了gdal工具是什么,具体有什么功能.对于gdal的具体功能,感兴趣的去官网看看.日常对于gis常见的矢量和栅格数据进行处理,gdal都是拿手的.今天 ...

  8. iOS和Android上的本机心理健康监控:现在不是时候了吗?

    Vinith Johnson and Girish Subramanyan Vinith Johnson和 Girish Subramanyan Imagine for a minute that i ...

  9. 高通芯片为什么输苹果_一位软件工程师解释了为什么苹果要转向自己的芯片

    高通芯片为什么输苹果 Apple's Worldwide Developer Conference, which kicked off at the end of June, brought a sl ...

最新文章

  1. 智能路由器操作系统OpenWrt
  2. 反欺诈评分模型之手机终端
  3. fgo服务器维护补偿什么时候才有,fgo国服4月12日版本版本更新公告 维护18个小时 补偿18个圣晶石...
  4. OpenCV watershed分水岭分割算法的实例(附完整代码)
  5. Unity3d 在不同设备中的文件读写 的路径
  6. vista任务栏透明_增加Windows Vista任务栏预览大小的赏金(付费!)
  7. linux nc命令测试端口,Linux和Windows下的NC(Netcat)命令测试端口连通性
  8. Android 系统(163)---Gallery为何有的图片在详细信息里查看其分辨率与实际不一样?
  9. java emoji编码转换_编码:unicode、utf-8以及emoji
  10. 介绍codesmith工具
  11. Leetcode 254.因子的组合
  12. 华为主题包hwt下载_华为主题开发工具
  13. Java中打印数组的几种方法
  14. DSP入门应该懂得57个问题
  15. pdca实施的流程图_PDCA实战案例详解:PDCA的 4个阶段 8个步骤及应用详解
  16. A Primer on Memory Consistency and Cache Coherence—第五章 Relaxed Memory Model
  17. STM32Cube工具学习笔记(一)Cube配置
  18. .NET编程和SQL Server ——Sql Server 与CLR集成
  19. 蛋白质轨迹dcd转成pcb文件
  20. HCIP第十五天笔记

热门文章

  1. python朴素贝叶斯回归预测的结果全是1_python – 朴素贝叶斯概率总是1
  2. python3 opencv_Python3 OpenCV3 图像处理基础
  3. Linux io模型及函数调用,Linux 网络编程的5种IO模型:信号驱动IO模型
  4. python怎么保存数据框转置结果_python – 如何转置pandas数据帧以交叉制表保存所有值的数据帧...
  5. sign函数的功能oracle,Oracle中sign函数和decode函数的使用
  6. 鸿蒙与微信小程序,鸿蒙远程交互应用 vs 微信小程序远程交互应用
  7. eclipselink mysql_Eclipse连接MySQL数据库(傻瓜篇)
  8. mysql数据库查询全部信息_mysql 查询怎么获取数据库下所有表的信息?
  9. 数据结构--单链表(数组)
  10. 一台服务器两个mysql_在一台服务器上安装两个或多个mysql的实现步骤_MySQL