使用Geolocation校正GDAL不支持的数据
2015-03-28 17:19
218 查看
对于低分数据来说,常用的校正方式就是给定数据的经纬度查找表来进行校正。在GDAL中,这种校正方式叫Geolocation array。常用的数据有国外的MODIS数据,国内的如风云系列(FY)和海洋系列卫星(HY)都是使用这种方式来进行处理。
GDAL库读取MODIS数据(HDF格式)的时候,会自动读取里面的经纬度查找表,并构造一个叫做GeoLocation的元数据段。如下所示:
只要有这个信息,使用GDAL就可以来对数据进行校正,但是对于国内的风云系列以及海洋系列卫星的数据来说,在数据里面会有这个信息,但是格式不是按照GDAL可以识别的格式来进行存储,所以不能自动来识别这个GeoLocation信息,从而也就不能直接使用GDAL来对其进行校正处理。
为了解决这个问题,我们可以使用GDAL提供的VRT格式来作为中介,手动来构造这个Geolocation元数据信息,然后再使用GDAL库进行校正处理。VRT的一个例子如下:
下面对这个VRT进行简单的说明,节点Metadata中就是Geolocation信息,一共有九个子节点组成,行偏移量,列偏移量,行步长,列步长,行对应的坐标数据集(纬度数据集),列对应的坐标数据集(经度数据集),纬度数据集波段号,经度数据集波段号以及投影。具体含义可以参考我之前的博客。
下面的VRTRasterBand节点用来构造数据信息,可以构造为多个波段,具体可以参考VRT的格式说明。
构造好上面的VRT数据,然后直接调用GDAL库中的Geolocation校正算法即可完成对数据的校正处理。
GDAL库读取MODIS数据(HDF格式)的时候,会自动读取里面的经纬度查找表,并构造一个叫做GeoLocation的元数据段。如下所示:
只要有这个信息,使用GDAL就可以来对数据进行校正,但是对于国内的风云系列以及海洋系列卫星的数据来说,在数据里面会有这个信息,但是格式不是按照GDAL可以识别的格式来进行存储,所以不能自动来识别这个GeoLocation信息,从而也就不能直接使用GDAL来对其进行校正处理。
为了解决这个问题,我们可以使用GDAL提供的VRT格式来作为中介,手动来构造这个Geolocation元数据信息,然后再使用GDAL库进行校正处理。VRT的一个例子如下:
<VRTDataset rasterXSize="139" rasterYSize="859"> <Metadata domain="GEOLOCATION"> <MDI key="LINE_OFFSET">0</MDI> <MDI key="LINE_STEP">1</MDI> <MDI key="PIXEL_OFFSET">0</MDI> <MDI key="PIXEL_STEP">1</MDI> <MDI key="SRS">GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9108"]],AUTHORITY["EPSG","4326"]]</MDI> <MDI key="X_BAND">1</MDI> <MDI key="X_DATASET">HDF5:"E:\H2A_RM2A20130722000048_0073.h5"://data_fields/Long_of_Observation_Point</MDI> <MDI key="Y_BAND">1</MDI> <MDI key="Y_DATASET">HDF5:"E:\H2A_RM2A20130722000048_0073.h5"://data_fields/Lat_of_Observation_Point</MDI> </Metadata> <VRTRasterBand dataType="Float32" band="1"> <SimpleSource> <SourceFilename relativeToVRT="0">HDF5:"E:\H2A_RM2A20130722000048_0073.h5"://data_fields/Res0_sst</SourceFilename> <SourceBand>1</SourceBand> </SimpleSource> </VRTRasterBand> </VRTDataset>
下面对这个VRT进行简单的说明,节点Metadata中就是Geolocation信息,一共有九个子节点组成,行偏移量,列偏移量,行步长,列步长,行对应的坐标数据集(纬度数据集),列对应的坐标数据集(经度数据集),纬度数据集波段号,经度数据集波段号以及投影。具体含义可以参考我之前的博客。
下面的VRTRasterBand节点用来构造数据信息,可以构造为多个波段,具体可以参考VRT的格式说明。
构造好上面的VRT数据,然后直接调用GDAL库中的Geolocation校正算法即可完成对数据的校正处理。
相关文章推荐
- 使用Geolocation校正GDAL不支持的数据
- 使用GDAL对HDF数据进行geoloc校正
- 使用GDAL工具对FY3系列卫星数据进行校正
- 使用GDAL对静止卫星圆盘数据进行校正(以FY2为例子)
- 使用GDAL对HDF数据进行校正
- 使用GDAL工具对FY3系列卫星数据进行校正
- 使用GDAL对HDF数据进行geoloc校正
- 使用GDAL对HDF数据进行校正
- PreloadDataCache支持预取的数据缓存,使用简单,支持多种缓存算法,支持不同网络类型,扩展性强
- (转)使用的SQLServer版本不支持数据类型“datetime2“
- GDAL-191 与 GEOS-3.3.4混编使用(支持MYSQL)
- 在开发中使用GDAL读取空间数据的使用心得一
- 使用template扩展已有的DDX_Text函数,使扩展能够同时支持各种数据类型的一个例子
- 使用GDAL打开裸数据(RAW)
- 使用的 SQL Server 版本不支持数据类型“date”的解决方法
- 使用Windows系统API计算数据和文件的MD5哈希值,支持大文件
- GDAL支持的栅格数据格式
- 使用的 SQL Server 版本不支持数据类型“date”的解决方法 [转]
- 我经常使用的数据支持模块
- 使用SQL Sever版本不支持数据类型“date”的解决办法