使用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.00LOCATION =                  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库支持中文路径或中文文件名的处理方法

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

  4. 编译好的GDAL库,支持ECW格式,支持proj,支持geos

    这几天因为工作需要,把GDAL重新编译了一下,现支持ECW格式,即可以用GDALOPEN读取JPEG2000格式的影像数据;编译时也添加了对geos和proj的支持. 内含3个文件夹,分别是gdal, ...

  5. GDAL读取S-57海图数据中文属性值乱码问题解决(续)

    上篇博文中的代码使用了函数wcstombs来进行处理,今天发现GDAL库里面提供了宽字节转单字节的函数,名字叫CPLRecodeFromWChar(这个函数需要libiconv库的支持,也就是在编译G ...

  6. GDAL读取S-57海图数据中文属性值乱码问题解决

    使用GDAL读取S-57海图数据时,对于属性表中的中文属性值读出来是乱码.如图1所示. 图1 S57海图数据中文乱码字段 通过调试代码发现,S-57文件中的中文是按照宽字节存储在文件中,而GDAL在读 ...

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

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

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

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

  9. GDAL库读取Envisat ASAR数据

    GDAL库本身就可以读取Envisat的图像数据,具体链接为:http://www.gdal.org/frmt_various.html#Envisat. 但是对于ASAR传感器的数据来说,GDAL在 ...

最新文章

  1. kafka入门:简介、使用场景、设计原理、主要配置及集群搭建
  2. 交叉编译arm-none-linux-gnueabi-gcc: No such file or directory
  3. 微服务配置中心是干啥的_微服务入门到精通-分布式配置中心(续)
  4. C++与QML逻辑分离
  5. MFC之AfxbeginThread 线程 创建、挂起、释放、结束、退出
  6. 『数据库』朴实无华的数据库绪论
  7. 跳一跳python开挂_微信跳一跳物理外挂—教​你用 Python 来玩微信跳一跳
  8. 杭电1231最大连续子序列
  9. 【Flutter】如何新建项目,运行你的第一个 flutter 工程项目
  10. read()/write()的生命旅程之三——第三章:write()
  11. linux怎么点亮硬盘灯_一种基于Linux系统下测试Expander背板硬盘指示灯的方法及系统与流程...
  12. mysql查询记录总数_MySQL记录总条数实现查询优化
  13. Ubuntu系统未发现vim命令
  14. BRVAH(BaseRecyclerViewAdapterHelper)详解
  15. intellij idea 2017破解
  16. dell 恢复介质_使用 Dell 恢复介质重新安装操作系统
  17. ACM第三次比赛题目及标准程序(贪心)
  18. TestCenter Layer4-7分析
  19. 算法设计与分析:分治法输出数字旋转方阵
  20. 365句百姓真理——男人好色,女人好情

热门文章

  1. constrain用法java_Java中的@UniqueConstraint注释
  2. qq语音按住ctrl就静音怎么解决_excel图形处理技巧:怎么制作出地摊经济的街景...
  3. 洛谷——P1652 圆
  4. 利用函数求数组中的最大值
  5. appendChild+insertBefore:创建和添加节点
  6. 计算机工程学院运动会方阵口号,运动会方阵口号(精选多篇)
  7. java串口发送十六进制数,本文实例为大家分享了Java实现串口通信的具体代码,供大家参考,具体内容如下1.介绍使用Java实现的串口通信程序,支持十六进制数据的发送与接收。 源码:...
  8. JavaSE面向对象-笔记
  9. Anaconda 国内镜像配置
  10. 最大公约数及最小公倍数计算