博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用C#版本的gdal库打开hdf文件
阅读量:2429 次
发布时间:2019-05-10

本文共 875 字,大约阅读时间需要 2 分钟。

作者:朱金灿

来源:

    

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

 

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

 

1. 

2. 

 

      不过我没有遇到安全透明代码无法调用本机代码的问题,倒是遇到了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. 

你可能感兴趣的文章
小团队的微服务之路
查看>>
K8S精华问答 | Kubernetes集群不能正常工作,难道是防火墙问题?
查看>>
5G精华问答 | 什么是5G?5G与LTE有什么关系?
查看>>
虎牙直播在微服务改造方面的实践和总结
查看>>
微服务精华问答 | 在使用微服务架构时,您面临哪些挑战?
查看>>
Kubernetes 调度器实现初探
查看>>
边缘计算精华问答 | 边缘计算有哪些应用场景?
查看>>
要闻君说:Synergy Research Group首发云基础设施数据,腾讯云v5一把;京东物流发力5G;厉害!阿里挖走贾扬清...
查看>>
数据中台精华问答 | 数据中台和传统数仓的区别是什么?
查看>>
这是一则计算机视觉顶级会议CVPR与腾讯的爆闻,啥?
查看>>
如何用30分钟快速优化家中Wi-Fi?阿里工程师有绝招
查看>>
【C语言】C语言中常用函数源代码【strncpy ,strncat ,strncmp】
查看>>
【Java】【算法练习】题目描述:输入一个整数数组,判断该数组是不是某二叉搜索树的后续遍历的结果。如果是输出yes,不是输出no,数组任意两个数字不相同。
查看>>
【Java】给定一个二叉树和其中的一个节点,请找出中序遍历的下一个节点且返回, 注意:树中的节点不仅包含左右子节点,同时包含父节点的指针。
查看>>
【Java】【多线程】—— 多线程篇
查看>>
【计算机网络】—— TCP/IP篇
查看>>
【Java】【算法】——算法篇
查看>>
【Java】【数据库】知识重点——数据库篇
查看>>
【Java】知识重点——消息队列篇
查看>>
【Java】学习总结 —— HashMap之put()方法实现原理
查看>>