作者:朱金灿

来源:http://blog.csdn.net/clever101

最近应同事的请求帮忙研究下使用C#版的gdal库读取hdf文件,今天算是有一点成果,特地做一些记录。

首先是编译C#版的gdal库,请参考下面两篇文章:

1. GDAL源码剖析(三)之Swig编译和帮助文档生成

2. Windows下编译C#可用的GDAL附带netCDF格式支持库的一点拾遗

不过我没有遇到安全透明代码无法调用本机代码的问题,倒是遇到了OSGeo.GDAL.GdalPINVOKE”的类型初始值设定项引发异常的问题,解决办法是把gdal及其依赖的dll都拷贝到C#程序的输出目录下。

C#使用gdal读取影像数据函数如下:

Gdal.AllRegister();
Dataset ds = Gdal.Open("影像文件名", Access.GA_ReadOnly);

打开文件后,可通过ds来获取影像的信息。对于一般的影像文件比如tif等,gdal是完全可以通过这种方法来读取的,可是用这种方法来读取hdf文件是不大可能的,因为它实际数据在下一层。也就是子数据集。因此,如果想要获取hdf信息,需要操作每一个子数据集。

所以需要利用gdal自带的应用程序gdalinfo.exe来获取hdf文件的子数据集信息,比如风云三号的hdf文件子数据集信息如下:

SUBDATASET_1_NAME、SUBDATASET_2_NAME这些行的等号后面的就是子数据集名,比如要获取//Height子数据集的信息,代码如下:

       static void Main(string[] args)
{
OSGeo.GDAL.Gdal.AllRegister();
OSGeo.GDAL.Gdal.SetConfigOption("GDAL_FILENAME_IS_UTF8", "YES");
Dataset ds = Gdal.Open("HDF5:d:\\TestData\\hdf\\FY3A_VIRRX_GBAL_L1_20130409_0315_1000M_MS.HDF://Height", Access.GA_ReadOnly);
}

参考文献:

1. C#使用gdal读取HDF数据的正确方法

使用C#版本的gdal库打开hdf文件的更多相关文章

  1. gdal库对ENVI文件的一点支持不好

    作者:朱金灿 来源:http://blog.csdn.net/clever101 使用GDALOpen函数打开ENVI的img文件,如果使用更新的方式即GA_Update会改写对应的hdr文件.改写h ...

  2. GDAL库调试(包括跨语言调试)

    很多时候都需要调试GDAL库,尤其是像学习GDAL库中的某些算法是如何实现的时候,调试就必不可少了. 首先说明用C++的调试.以VS2008为例进行说明. 编译DEBUG版本的GDAL库,这个可以参考 ...

  3. HDF文件的显示策略

    作者:朱金灿 来源:http://blog.csdn.net/clever101 hdf格式(类似还有netcdf格式)格式是国际上通用的遥感数据格式.它们都是采用不规则存储的格式,就是在一个hdf文 ...

  4. GDAL打开HDF格式时遇到的中文路径问题(未解决)

    众所周知,中文环境下(VS2010 C++工程编码为多字节编码),在使用1.8.0版本以后的GDAL打开中文路径下的影像文件(如GeoTiff文件)时, 需对中文文件路径做特殊处理,有2种方法:(我使 ...

  5. 浅析GDAL库C#版本支持中文路径问题(续)

    上篇博客中主要说了GDAL库C#版本中存在的问题,其表现形式主要是:"文件名中的汉字个数是偶数,完全没有影响,读取和创建都正常,如果文件名中的汉字个数是奇数,读取和创建都会报错." ...

  6. 浅析GDAL库C#版本支持中文路径问题

    GDAL库对于C#的支持问题还是蛮多的,对于中文路径的支持就是其中之一(另一个就是通过OGR库获取图形的坐标信息). 关于C#支持中文路径,看过我之前博客的应该都不陌生,如果使用的是我修改过的GDAL ...

  7. 各个版本VS编译好的GDAL库下载

    简单说明 自己编译GDAL比较繁琐且时间较长,而且很多 Driver 需要自己去编译.如果不是要学习怎么编译GDAL,可以直接使用已经编译好的库. OSGeo官方没有提供编译好的GDAL,但是它有给出 ...

  8. 基于GDAL库,读取.nc文件(以海洋表温数据为例)C++版

    对于做海洋数据处理的同学,会经常遇到nc格式的文件,nc文件的格式全称是NetCDF,具体的详细解释请查询官网[https://www.unidata.ucar.edu/software/netcdf ...

  9. GDAL库扩展Landsat系列MTL文件格式支持

    Landsat系列卫星提供的数据,一般都是每个波段一个tif文件,然后外加一个MTL.txt的元数据文件,使用gdal可以直接打开每个波段的tif文件,但是有时候想在打开tif数据的同时能够自动读取M ...

随机推荐

  1. 如何在win10上同时安装python2和python3

    哎,其实本人已经用惯了python2,听说python3的语法有很多不一样的地方,那我之前写的算法改起来岂不是日了狗了吗?所以一直没改用python3.但是谷歌的那个TensorFlow,在windo ...

  2. LAMP+YII框架配置中遇到的问题

    以下列出了不同问题及答案: 1. 在yii框架中,改动数据库信息,主要有main.php和database.php两个文件. 2. 问题: watermark/2/text/aHR0cDovL2Jsb ...

  3. 数据库中解析XML

    简介:OPENXML方法使用一例实现导入功能 DECLARE @strProjGUID AS VARCHAR(50)  DECLARE @strProjCode AS VARCHAR(50)  DEC ...

  4. Elasticsearch之es学习工作中遇到的坑(陆续更新)

    1:es集群脑裂问题(不要用外网ip,节点角色不要混用) 原因1:阿里云服务器,外网有时候不稳定. 解决方案:单独采购服务器,内网安装 原因2:master和node节点没有分开 解决方案: 分角色: ...

  5. Day3上午解题报告

    预计分数:100+40+50=190 实际分数:100+40+50=190 T1 https://www.luogu.org/problem/show?pid=T15365 表示从来没做过博弈论的题, ...

  6. 相对路径 System.Web HttpServerUtilityBase Server.MapPath("~/")

    相对路径 System.Web  HttpServerUtilityBase  Server.MapPath("~/")

  7. CSRF Failed: Referer checking failed - no Referer

    postman模拟登录出了这个错误,其实看标题就知道大概是怎么回事,网上大概找了办法,也没说到位,所以干脆自己找源码了. 问题很明显就是出在 CSRF 上,理所当然去查看 CsrfViewMiddle ...

  8. 记2018/5/5 qbxt 测试

    记2018/5/5 qbxt 测试 竞赛时间: 2018 年 5 月 5 日 13:30-17:00 T1 一.maze(1s,512MB): 简单的迷宫问题:给定一个n*m的迷宫,.表示可以通过,# ...

  9. [React] Render Text Only Components in React 16

    In this session we create a comment component to explore how to create components that only render t ...

  10. php操作zip压缩文件

    php操作zip压缩文件 一.总结 1.php操作zip:php可以操作zip压缩文件,通过 ZZIPLIB扩展库,这些扩展库可以通过composer安装,或者某些版本的php会自带 2.完美操作zi ...