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

作者:朱金灿 来源:http://blog.csdn.net/clever101 最近应同事的请求帮忙研究下使用C#版的gdal库读取hdf文件,今天算是有一点成果,特地做一些记录. 首先是编译C#版的gdal库,请参考下面两篇文章: 1. GDAL源码剖析(三)之Swig编译和帮助文档生成 2. Windows下编译C#可用的GDAL附带netCDF格式支持库的一点拾遗 不过我没有遇到安全透明代码无法调用本机代码的问题,倒是遇到了OSGeo.GDAL.GdalPINVOKE"的类型初始值设定项…
作者:朱金灿 来源:http://blog.csdn.net/clever101 使用GDALOpen函数打开ENVI的img文件,如果使用更新的方式即GA_Update会改写对应的hdr文件.改写hdr文件后重新读取hdr文件,就会导致其投影信息读不出来.但是如果采用GA_ReadOnly即只读的方式来读取,就只能创建ovr格式的金字塔或内置的金字塔(设置USE_RRD),而ovr格式的金字塔不能被ArcGIS或ERDAS识别.解决办法是一种补救的办法,以GA_Update的方式打开ENVI文…
很多时候都需要调试GDAL库,尤其是像学习GDAL库中的某些算法是如何实现的时候,调试就必不可少了. 首先说明用C++的调试.以VS2008为例进行说明. 编译DEBUG版本的GDAL库,这个可以参考我之前的博客.可以用命令行编译,也可以用IDE编译,但是实质都是一样,修改 nmake命令的参数.也就是给nmake命令后加一句DEBUG=1即可. 编译完成之后,应该会在gdal的源码目录中生成下面几个文件,如下图. 调试时用到的文件主要就是pdb文件,请确保pdb文件存在,大小应该在30M以上说…
作者:朱金灿 来源:http://blog.csdn.net/clever101 hdf格式(类似还有netcdf格式)格式是国际上通用的遥感数据格式.它们都是采用不规则存储的格式,就是在一个hdf文件中可以存储栅格数据,矢量数据和其它一些属性数据,可以说hdf是包罗万象的.现实中即使是同一种卫星的hdf格式也是不一样.因为格式的不统一,显示hdf数据成为了一个难题.所谓显示hdf数据主要是显示hdf文件中的图像数据.现在的问题hdf文件中的图像数据也是不规则的,就是说它的各个数据集的图像宽高可…
众所周知,中文环境下(VS2010 C++工程编码为多字节编码),在使用1.8.0版本以后的GDAL打开中文路径下的影像文件(如GeoTiff文件)时, 需对中文文件路径做特殊处理,有2种方法:(我使用的GDAL库添加了HDF4.HDF5格式支持) (1)临时设置GDAL为本机编码环境 GDALAllRegister(); CPLSetConfigOption("GDAL_FILENAME_IS_UTF8","NO");//设置为非UTF-8编码 GDALDatas…
上篇博客中主要说了GDAL库C#版本中存在的问题,其表现形式主要是:"文件名中的汉字个数是偶数,完全没有影响,读取和创建都正常,如果文件名中的汉字个数是奇数,读取和创建都会报错." 针对这个问题,今天仔细研究(查看+折腾)了下C#程序中string类型的默认编码方式.首先通过下面的代码进行检测C#程序中string类型的默认编码方式是什么. static void Main(string[] args) { string s = "我"; // 首先获取默认编码的字…
GDAL库对于C#的支持问题还是蛮多的,对于中文路径的支持就是其中之一(另一个就是通过OGR库获取图形的坐标信息). 关于C#支持中文路径,看过我之前博客的应该都不陌生,如果使用的是我修改过的GDAL库,可以通过设置下面的代码即可让C#直接支持中文路径.如果使用官方的库,不用设置直接应该就可以支持中文路径. // 注册所有的驱动 Ogr.RegisterAll(); // 为了支持中文路径,请添加下面这句代码 OSGeo.GDAL.Gdal.SetConfigOption("GDAL_FILEN…
简单说明 自己编译GDAL比较繁琐且时间较长,而且很多 Driver 需要自己去编译.如果不是要学习怎么编译GDAL,可以直接使用已经编译好的库. OSGeo官方没有提供编译好的GDAL,但是它有给出去哪里下载已经编译好的.下载GDAL二进制包说明 我已经下载好一份各个VS版本编译出来的GDAL库. 在使用的时候某些Driver是作为插件plugins存在的(如MrSid.HDF4.HDF5.NETCDF.ECW_JP2ECW等),所以需要设置一下环境变量GDAL_DRIVER_PATH的值(各…
对于做海洋数据处理的同学,会经常遇到nc格式的文件,nc文件的格式全称是NetCDF,具体的详细解释请查询官网[https://www.unidata.ucar.edu/software/netcdf/docs/index.html],一般从全球大洋数据库里面下载的温盐.风场及云量等数据,基本上是nc文件格式,每一个文件里面包含多个数据集,例如最简单的海面表温数据(Sea surface temperature data),数据范围是全球,空间分辨率为0.25 *0.25(~25km),时间分辨…
Landsat系列卫星提供的数据,一般都是每个波段一个tif文件,然后外加一个MTL.txt的元数据文件,使用gdal可以直接打开每个波段的tif文件,但是有时候想在打开tif数据的同时能够自动读取MTL文件里面的元数据信息,这个时候就只能自己再解析这个文件了.比较麻烦,下面就是针对这种情况,直接在gdal库里面扩展一种支持landsat的mtl的格式,直接打开mtl文件的同时自动打开tif数据以及元数据. 关于扩展GDAL库可以参考我之前写的CNSDTF格式扩展,以及gdal的官网说明,网址为…
作者:朱金灿 来源:http://blog.csdn.net/clever101 使用下载下来的gdal库的makefile来编译gdal库,生成的gdal库的名字debug版本和release版本都一样,二者都存放在gdal库的根目录下.因此我想自定义编译gdal库. 首先用文本编辑器打开nmake.opt,修改里面的两个宏变量GDAL_DLL和GDALLIB.这个两个宏分别指定dll文件的全路径和lib文件的全路径.比如我修改如下: !IFDEF DEBUG GDAL_DLL = $(THI…
经过这一段时间的对海洋数据的处理,接触了大量的与海洋相关的数据,例如海洋地形.海洋表面温度.盐度.湿度.云场.风场等数据,除了地形数据是grd格式外,其他的都是nc格式的数据.本文将以海洋风场数据为例,进行nc格式文件的读取. 海洋风场数据(ccmp_wind)一般情况下会包含三个数据集:第一个数据集是uwnd(standard_name = "eastward_wind"),第二个数据集是vwnd(standard_name = "northward_wind")…
GDAL(Geospatial Data Abstraction Library,地理空间数据抽象库)是一个在X/MIT许可协议下的开源栅格空间数据转换库.官网http://www.gdal.org/index.html,也可参考GitHub https://github.com/OSGeo/gdal,最新release版本为2.1.1. GDAL是一个在X/MIT许可协议下读写空间数据(包括栅格数据和矢量数据)的开源库,它利用抽象数据模型来表达所支持的各种文件格式,还使用一系列命令行工具来进行…
作者:朱金灿 来源:http://blog.csdn.net/clever101 首先从Lizardtech网站:http://www.lizardtech.com/download/developer/下载MrSID的SDK,我下载的版本是:MrSID_DSDK-8.5.0.3422. 然后在gdal-1.9.1文件夹(gdal源码文件夹)下找到nmake.opt并打开,修改一下两个地方: #MRSID_DIR =D:\MrSID_DSDK-8.5.0.3422\MrSID_DSDK-8.5.…
背景前提 地理空间数据抽象库(GDAL)是一个用于读取和编写栅格和矢量地理空间数据格式的计算机软件库,由开源地理空间基金会在许可的X / MIT风格免费软件许可下发布. 作为一个库,它为调用应用程序提供了一个抽象数据模型,用于所有支持的格式. 它还可以构建有各种有用的命令行接口实用程序,用于数据转换和处理. PROJ.4库支持投影和转换.(摘自维基百科) 相关的OGR库(OGR Simple Features Library [2])是GDAL源代码树的一部分,它为简单的特征矢量图形数据提供了类…
GDAL库是一个跨平台的栅格地理数据格式库,包括读取.写入.转换.处理各种栅格数据格式(有些特定的格式对一些操作如写入等不支持).它使用了一个单一的抽象数据模型就支持了大多数的栅格数据.这里有GDAL库支持的格式:http://www.gdal.org/formats_list.html 注:本文在Qt开发环境下使用GDAL库. 在Qt中使用GDAL库时,除了要加gdal_priv.h头文件外,还需要在xxx.pro文件内加上LIBS += -lgdal ,文件用可编辑的文档打开. 使用GDAL…
作者:朱金灿 来源:http://blog.csdn.net/clever101 最近使用gdal库比较多,就谈谈gdal库的一些使用心得. 第一个是GDALOpen的访问权限参数会影响图像的创建金字塔方式.比如你是这样打开图像和创建金字塔: std::string strImgPath = _T(“C:\\1.tif”); GDALDataset* mGdalDataset=(GDALDataset*)(GDALOpen(strImgPath.c_str(),GA_Update)); mGda…
使用GDAL打开mdb文件时提示下面错误信息: ERROR 1: Unable to initialize ODBC connection to DSN for DRIVER=Microsoft Access Driver (*.mdb);DBQ=C:\Users\SCRS-Minlu\Desktop\ZHONGWEI.MDB, [Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序 ERROR 1: Unable to initialize ODBC con…
使用GDAL库发现不能打开IRSP6的数据,不过看GDAL提供的文件格式里面却是支持IRSP6的数据的,具体可以参考网页http://www.gdal.org/frmt_fast.html.下面图1是一个IRSP6数据的目录结构,由一个hdr和四个ges数据组成,hdr是FAST格式的主文件,ges就是每个波段的裸数据. 图1  P6数据目录结构 首先使用gdalinfo工具输出看看能不能读取.gdalinfo输出的结果如图2所示,可以看出gdal是不支持这种数据的. 图2 gdalinfo打开…
最近将GDAL库更新至1.11版本之后,发现之前写的RPC像方改正模型校正的结果偏差特别大(更新版本之前结果和PCI处理的结果一致).所以初步判断是GDAL库的bug,经过各个参数修改发现原来是指定的DEM采样方式导致的. 当指定DEM的采样方式为最邻近时,校正结果偏差很大,当DEM采样方式为双线性采样和三次立方卷积采样时,处理的结果与之前的结果一样.截图如图1所示,红色区域为对比区域,如图2所示. 图1 PCI校正结果全图 图2  图1中的红色区域按实际像素放大显示结果 下面是使用gdalwa…
GDAL库中目前提供了对WFS服务发布的数据进行获取,目前发现对于中文的服务名称或者图层名为中文,GDAL不能正确识别.通过调试发现,其原因有下面两点: 1.输入的URL路径没有使用UTF8编码而从网页获取的内容全部都是由UTF8编码组成,造成图层名使用EQUAL进行比较的时候出现错误. 2.输入的URL路径使用%开始的UTF8编码,而GDAL没有对%的转义编码进行转义导致,GDAL直接认为%XX是一个字符串,而不认为是一个UTF8编码导致. 首先对获取的图层名不支持中文的问题进行修改,主要内容…
0 基础     我们知道Git有三大区(工作区.暂存区.版本库)以及几个状态(untracked.unstaged.uncommited),下面只是简述下Git的大概工作流程,详细的可以参见本博客的其他有关Git的文章[链接].  (1)打开你的项目文件夹,除了隐藏的.git文件夹,其他项目文件位于的地方便是工作区,工作区的文件需要添加到Git的暂存区(git add),随后再提交到Git的版本库(git commit). (2)首次新建的文件都是untracked状态(未跟踪),此时需要gi…
操作步骤 打开File–>Project Structure 选中当前项目,点击Denpendencies标签 点击+,选Library dependency 打开界面如下: 输入想要的依赖库部分字符,比如design,然后点击右侧的搜索图标 搜索结果如下: 备注 此方法搜索的是最新版本的依赖库,可能高于当前项目的编译版本. 所以添加的依赖库版本号,应修改为项目创建时自动添加的appcompat-v7的版本号[适用于RecyclerView.CardView.design]. 参考资料 Andr…
作者:朱金灿 来源:http://blog.csdn.net/clever101 gdal库是不支持以GA_Update方式打开jpg文件的,原因在于gdal_1_10_1\frmts\jpeg文件夹下jpgdataset.cpp的JPGDatasetCommon::Open函数有一段代码: if( poOpenInfo->eAccess == GA_Update ) { CPLError( CE_Failure, CPLE_NotSupported, "The JPEG driver d…
技术背景 在对物理海洋数据处理过程中,表层温度是众多要素中的一种,本文书要是针对海洋表温数据批量日平均处理的一个工具设计.首先要在对当前的SST数据文件作一下简要的说明,SST全称为sea surfer Temperature,文件后缀为.nc,文件里面主要有两个数据集(datasets),第一个数据集全球的海洋表温的温度数据,其中标记值为-999(float数据类型),第二个数据集为遗失数据补充说明,具体大家可以参考附件链接中的文本文件,表温数据集主要分为8个时间节点,每个时间节点是一层,共有…
技术背景 海洋地形数据主要是通过美国全球地形起伏数据(GMT)获得,数据格式为grd(GSBG)二进制数据,打开软件通过是Surfer软件,surfer软件可进行数据的编辑处理,以及进一步的可视化表达等功能操作:由于Surfer软件不支持二次开发,没有提供相应的SDK供开发者进行使用,所以这一切只能通过相应类似的技术进行实现,首先,数据的读取,如何通过编程实现数据的读取操作呢?这里就要说一下GIS软件所使用的一个开源库-GDAL,GDAL库的具体解释资料,请查阅官方网站[https://www.…
技术背景 海洋地形数据主要是通过美国全球地形起伏数据(GMT)获得,数据格式为grd(GSBG)二进制数据,打开软件通过是Surfer软件,surfer软件可进行数据的编辑处理,以及进一步的可视化表达等功能操作:由于Surfer软件不支持二次开发,没有提供相应的SDK供开发者进行使用,所以这一切只能通过相应类似的技术进行实现,首先,数据的读取,如何通过编程实现数据的读取操作呢?这里就要说一下GIS软件所使用的一个开源库-GDAL,GDAL库的具体解释资料,请查阅官方网站[https://www.…
部分源码选自GDAL库的官方网址:www.gdal.org,其余的代码为笔者自己编写. // readfile.cpp : 定义控制台应用程序的入口点. // /* part of the codes were cite from: http://www.gdal.org/gdal_tutorial.html and remaining of code were created :by www.cnblogs.com/AmatVictorialCuram/‎ and please mark th…
开工之前要先了解一下瓦片地图,瓦片地图金字塔模型是一种多分辨率层次模型,从瓦片金字塔的底层到顶层,分辨率越来越低,但表示的地理范围不变.实现原理就是,首先确定地图服务平台所要提供的缩放级别的数量N,把缩放级别最低.地图比例尺最大的地图图片作为金字塔的底层,即第0层,并对其进行分块,从地图图片的左上角开始,从左至右.从上到下进行切割,分割成相同大小(比如256x256像素)的正方形地图瓦片,形成第0层瓦片矩阵;在第O层地图图片的基础上,按每2x2像素合成为一个像素的方法生成第1层地图图片,并对其进…
GDAL进度信息编写 GDAL库中的算法以及读写数据的时候一般都会提供两个与进度信息相关的参数,下面分别进行描述: GDALProgressFunc pfnProgress void * pProgressArg GDALProgressFunc pfnProgress GDALProgressFunc pfnProgress这个是一个回调函数,GDALProgressFunc的定义如下所示: typedef int (CPL_STDCALL *GDALProgressFunc)(double…