C# GDAL 学习一
最近一直琢磨如何用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
五、完整代码
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 学习一相关推荐
- GDAL学习笔记02:GDAL基础知识
你的习惯决定了你会成为什么样的人. GDAL学习笔记02:GDAL基础知识 前言 1. 版本 2. 摘要 3. 说明 4. 微信公众号GISRSGeography 一.GDAL简介 二.导入GDAL ...
- (C++)GDAL学习笔记—— 5 全色影像与多光谱影像的融合
任务 将全色影像与多光谱影像融合. 原理 使用的方法是HSI变换法,即先将多光谱影像选择RGB三个波段进行HSI变化得到H(色调).S(饱和度).I(亮度)三个波段.之后按照全色波段的尺寸将H和S两个 ...
- Python GDAL学习笔记(一)
目录 一.读取tif格式影像 导入GDAL模块并查看版本/位置 打开影像 查看行列号和波段数 查看影像文件描述和其他属性 打开数据集波段并获取统计信息 利用numpy将波段数据写入数组 将波段数据写入 ...
- 【GDAL学习】用GDAL读取栅格数据
1.根据坐标读取遥感影像的单个像素值 # week 4: get pixel values at a set of coordinates by reading in one pixel at a t ...
- GDAL学习笔记——OGR投影
解析坐标系 当OGRSpatialReference对象被创建时,就可以解析该对象所包含的信息.可以使用OGRSpatialReference提供的IsProjected()和IsGeographic ...
- Python+GDAL几何校正任意自带经纬度数据的遥感影像
目录 前言 构建虚拟数据集 几何校正 完整代码 前言 李民录老师在他的博客中使用C++ GDAL的gdaltranslate.exe.gdalwarp.exe等工具对FY3A_MERSI数据进行了几何 ...
- windows下gdal的java开发环境搭建
本文接前文gis利器之Gdal(一),前面简单介绍了gdal工具是什么,具体有什么功能.对于gdal的具体功能,感兴趣的去官网看看.日常对于gis常见的矢量和栅格数据进行处理,gdal都是拿手的.今天 ...
- iOS和Android上的本机心理健康监控:现在不是时候了吗?
Vinith Johnson and Girish Subramanyan Vinith Johnson和 Girish Subramanyan Imagine for a minute that i ...
- 高通芯片为什么输苹果_一位软件工程师解释了为什么苹果要转向自己的芯片
高通芯片为什么输苹果 Apple's Worldwide Developer Conference, which kicked off at the end of June, brought a sl ...
最新文章
- 智能路由器操作系统OpenWrt
- 反欺诈评分模型之手机终端
- fgo服务器维护补偿什么时候才有,fgo国服4月12日版本版本更新公告 维护18个小时 补偿18个圣晶石...
- OpenCV watershed分水岭分割算法的实例(附完整代码)
- Unity3d 在不同设备中的文件读写 的路径
- vista任务栏透明_增加Windows Vista任务栏预览大小的赏金(付费!)
- linux nc命令测试端口,Linux和Windows下的NC(Netcat)命令测试端口连通性
- Android 系统(163)---Gallery为何有的图片在详细信息里查看其分辨率与实际不一样?
- java emoji编码转换_编码:unicode、utf-8以及emoji
- 介绍codesmith工具
- Leetcode 254.因子的组合
- 华为主题包hwt下载_华为主题开发工具
- Java中打印数组的几种方法
- DSP入门应该懂得57个问题
- pdca实施的流程图_PDCA实战案例详解:PDCA的 4个阶段 8个步骤及应用详解
- A Primer on Memory Consistency and Cache Coherence—第五章 Relaxed Memory Model
- STM32Cube工具学习笔记(一)Cube配置
- .NET编程和SQL Server ——Sql Server 与CLR集成
- 蛋白质轨迹dcd转成pcb文件
- HCIP第十五天笔记
热门文章
- python朴素贝叶斯回归预测的结果全是1_python – 朴素贝叶斯概率总是1
- python3 opencv_Python3 OpenCV3 图像处理基础
- Linux io模型及函数调用,Linux 网络编程的5种IO模型:信号驱动IO模型
- python怎么保存数据框转置结果_python – 如何转置pandas数据帧以交叉制表保存所有值的数据帧...
- sign函数的功能oracle,Oracle中sign函数和decode函数的使用
- 鸿蒙与微信小程序,鸿蒙远程交互应用 vs 微信小程序远程交互应用
- eclipselink mysql_Eclipse连接MySQL数据库(傻瓜篇)
- mysql数据库查询全部信息_mysql 查询怎么获取数据库下所有表的信息?
- 数据结构--单链表(数组)
- 一台服务器两个mysql_在一台服务器上安装两个或多个mysql的实现步骤_MySQL