使用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打开查看信息

下面是hdr文件中的内容,

PRODUCT ID =ID201104-01 LOCATION =134/03000F        ACQUISITION DATE =20090101
SATELLITE =IRS P6 SENSOR =AWIFS SENSOR MODE =PLD LOOK ANGLE = 0.00
LOCATION = ACQUISITION DATE =
SATELLITE = SENSOR = SENSOR MODE = LOOK ANGLE =
LOCATION = ACQUISITION DATE =
SATELLITE = SENSOR = SENSOR MODE = LOOK ANGLE =
LOCATION = ACQUISITION DATE =
SATELLITE = SENSOR = SENSOR MODE = LOOK ANGLE =
PRODUCT TYPE =MAP ORIENTED PRODUCT SIZE =FULL SCENE
TYPE OF PROCESSING =SYSTEMATIC RESAMPLING =CC
VOLUME #/# IN SET =01/01 PIXELS PER LINE =18284 LINES PER BAND =17248/17248
START LINE # = 1 BLOCKING FACTOR = 1 RECORD LENGTH =36568 PIXEL SIZE = 56.00
OUTPUT BITS PER PIXEL =10 ACQUIRED BITS PER PIXEL =10
BANDS PRESENT =2345 PRODUCT CODE =STLC00GBD
VERSION NO =IRSP6DPSV1R2 ACQUISITION TIME =02:52:16:357
GENERATING COUNTRY =CHINA GENERATING AGENCY =RSGS
GENERATING FACILITY =DPFP6 PRODUCT ENDIAN =LITTLE REV CBIASES AND GAINS IN THE BAND ORDER AS ON THIS TAPE
0.000000000000000 52.340000000000003
0.000000000000000 40.750000000000000
0.000000000000000 28.425000000000001
0.000000000000000 4.645000000000000
0.000000000000000 0.000000000000000
0.000000000000000 0.000000000000000
0.000000000000000 0.000000000000000
0.000000000000000 0.000000000000000 SENSOR GAIN STATE = 8 9 8 9
SENSOR STATE =GOOD GEOMETRIC DATA MAP PROJECTION =LCC ELLIPSOID =WGS_84 DATUM =WGS_84
USGS PROJECTION PARAMETERS = 6378137.000000000000000 6356752.314199999906123
55.209495199333482 51.035107167553996 129.000000000000000
10.000000000000000 0.000000000000000 0.000000000000000
0.000000000000000 0.000000000000000 0.000000000000000
0.000000000000000 0.000000000000000 0.000000000000000
0.000000000000000
UL = 1174202.5250E 571139.1862N -681580.807 5708788.219
UR = 1344237.7839E 573316.7699N 342323.193 5708788.219
LR = 1333947.1849E 485402.4658N 342323.193 4742900.219
LL = 1194514.8374E 483619.3269N -681580.807 4742900.219
CENTER = 1262709.6744E 531850.3922N -169628.807 5225844.219 9142 8624
OFFSET = 128 ORIENTATION ANGLE = 0.00
SUN ELEVATION ANGLE =13.1 SUN AZIMUTH ANGLE =169.7 ALTITUDE =829002.00000
HEADING ANGLE = 207.006210

仔细查看帮助文档,发现对于IRS数据,由于hdr文件中没有记录波段数据的文件名称,所以只能猜测可能的波段数据名称,GDAL目前猜的规则是:

<header>.<ext>
<header>.1.<ext>
<header>.2.<ext>
... or <header>.<ext>
band1.<ext>
band2.<ext>
... or <header>.<ext>
band1.dat
band2.dat
... or <header>.<ext>
imagery1.<ext>
imagery2.<ext>
... or <header>.<ext>
imagery1.dat
imagery2.dat
...

从上面可以看出,猜测的几种数据就是没有<header>_1.ges这种类型,于是就ges修改对应的源码,源码位于GDAL_HOME\frmts\raw/fastdataset.cpp。主要修改下面几个方面:

1、Open函数中,数据的生产单位原来是写死的“GENERATING AGENCY =EUROMAP”,而这个数据却是"GENERATING AGENCY =EUROMAP"。所以将原来的

		if (strstr(pszHeader, "GENERATING AGENCY =EUROMAP")!= NULL) 

修改为:

		if ((strstr(pszHeader, "GENERATING AGENCY =EUROMAP")!= NULL) ||
(strstr(pszHeader, "GENERATING AGENCY =RSGS")!= NULL))

2、Open函数中最下面,原来只判断了WGS84,而这个数据里面是WGS_84,所以再加上这个判断。修改后的代码如下:

            if ( EQUAL( pszTemp, "WGS84" ) || EQUAL( pszTemp, "WGS_84" ) )

3、FOpenChannel函数中,加上我们这个数据的波段数据类型,即<header>_1.ges。在原来的default后面加上一个,如下所示:

	default:
pszChannelFilename = CPLFormFilename( pszDirname,
CPLSPrintf( "%s.%d", pszPrefix, iFASTBand ), pszSuffix );
if ( OpenChannel( pszChannelFilename, iBand ) )
break;
pszChannelFilename = CPLFormFilename( pszDirname,
CPLSPrintf( "%s_%d.ges", pszPrefix, iFASTBand ), NULL );
if ( OpenChannel( pszChannelFilename, iBand ) )
break;

保存上面的内容,然后重新编译,使用gdalinfo输出的信息为:

图3 gdalinfo工具查看输出的信息

修改GDAL库支持IRSP6数据的更多相关文章

  1. 修改GDAL库支持RPC像方改正模型

    最近在做基于RPC的像方改正模型,方便对数据进行测试,修改了GDAL库中的RPC纠正模型,使之可以支持RPC像方改正参数. 下面是RPC模型的公式,rn,cn为归一化之后的图像行列号坐标,PLH为归一 ...

  2. 使用Geolocation校正GDAL不支持的数据

    对于低分数据来说,常用的校正方式就是给定数据的经纬度查找表来进行校正.在GDAL中,这种校正方式叫Geolocation array.常用的数据有国外的MODIS数据,国内的如风云系列(FY)和海洋系 ...

  3. 改动GDAL库支持RPC像方改正模型

    近期在做基于RPC的像方改正模型.方便对数据进行測试,改动了GDAL库中的RPC纠正模型,使之能够支持RPC像方改正參数. 以下是RPC模型的公式,rn,cn为归一化之后的图像行列号坐标,PLH为归一 ...

  4. 使GDAL库支持中文路径或中文文件名的处理方法

    之前生成的gdal 2.1.1动态库,在通过命令行执行时,遇到有中文路径或中文图像名时,GDALOpen函数不能正确的被调用,如下图: 解决方法: 1.      在所有使用GDALAllRegist ...

  5. 扩展GDAL,支持CNSDTF格式(一)

    扩展GDAL,支持CNSDTF格式(一) 一.        简介 本文主要根据<中华人民共和国国家标准GB/T17798-2007--地理空间数据交换格式(Geospatialdata tra ...

  6. GDAL库——读取图像并提取基本信息

    GDAL库是一个跨平台的栅格地理数据格式库,包括读取.写入.转换.处理各种栅格数据格式(有些特定的格式对一些操作如写入等不支持).它使用了一个单一的抽象数据模型就支持了大多数的栅格数据.这里有GDAL ...

  7. GDAL库中WFS服务中含有中文不能获取数据的问题

    GDAL库中目前提供了对WFS服务发布的数据进行获取,目前发现对于中文的服务名称或者图层名为中文,GDAL不能正确识别.通过调试发现,其原因有下面两点: 1.输入的URL路径没有使用UTF8编码而从网 ...

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

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

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

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

随机推荐

  1. [bzoj1558][JSOI2009]等差数列

    题目:给定n个数,m个操作,每次给一段区间加一个等差数列或者询问一段区间至少要用多少个等差数列来表示.$n,m\leqslant 10^{5}$ 题解:老套路,维护差分数组,修改操作变成了两个单点加和 ...

  2. 树链剖分模板(BZOJ3083)

    实现了路径修改,子树查询,及换根. 换根其实很简单,分三种情况讨论,画画图就明白了. #include <cstdio> #include <algorithm> using ...

  3. SpringBoot多环境部署,在启动时动态设置相应的配置文件

    项目中,往往在测试环境和正式环境拥有不同的配置,例如数据库连接,第三方库的appkey等.这时候,我们就要在不同的环境启用不同的配置 下面新建三个文件,分别表示开发环境,生产环境和测试环境的配置文件 ...

  4. Linux学习之CentOS(十七)-----释放 Linux 系统预留的硬盘空间 与Linux磁盘空间被未知资源耗尽 (转)

    释放 Linux 系统预留的硬盘空间  大多数文件系统都会保留一部分空间留作紧急情况时用(比如硬盘空间满了),这样能保证有些关键应用(比如数据库)在硬盘满的时候有点余地,不致于马上就 crash,给监 ...

  5. jquery checkbox是否选中

    $("#chkDisplayZxOnly").is(":checked")  选中返回true,否则返回false

  6. pupeteer初体验

    官方文档: https://github.com/GoogleChrome/puppeteer/blob/master/docs/api.md#pagescreenshotoptions puppet ...

  7. 关于html+ashx开发中几个问题的解决方法的感想和总结

    1.针对上篇文章中的服务端处理不敢苟同.仍然坚持使用反射,建立BaseHandler.ashx并在默认process方法中写上反射方法以及权限验证方法.针对具体的情况返回对应的值.服务端其他handl ...

  8. MySQL CURTIME() 函数

    定义和用法 CURTIME() 返回当前的时间. 语法 CURTIME() 实例 下面是 SELECT 语句: SELECT NOW(),CURDATE(),CURTIME() 结果如下所示: NOW ...

  9. 一些有用的Java参考资料

    Better Java,一些好的Java实践 Google Java Style Guide 30个Java编程技巧 JDK8新增语法特性简介,对Java8中新增的函数接口.Lambda表达式.方法引 ...

  10. blog写作心得体会

    虽然写blog也挺久了,写出来的东西自己回顾的时候也会怀疑读者是否能看的明白,还是有种流水账的感觉,以后希望多从读者的角度出发.下面记录一些以后写博客的注意点. 具体关于某种技术点的小知识还有碰到的各 ...