本文主要是介绍ASTER产品数据 (AST_08) 几何校正,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
前言
国内有关ASTER的博客等资料真的很少。因个人需求,用过这个数据的不少产品,分享一下校正的方法。
数据可从EarthData进行下载,需要注册账号。
这个数据的温度和发射率产品的分辨率可达90 m,但是回访周期特别长。几年可能也就几十幅数据。
官方有数据预处理工具HEG
,安装后,不能正常运行,尝试了两台电脑都不行,所以放弃了。这里提供一种用gdal
校正的思路。
AST_08 几何校正
AST_08是90 m分辨率的地表温度数据,乘以0.1可转换为开尔文单位。
由于是NASA的HDF数据,首先想到的是geoloc
校正,即根据元数据里的地理位置信息自动校正。但是经过实验并不行。
经过产看文件格式,发现里面存放了具有11个像元间隔的经纬度信息。所以尝试使用添加Gcps
,即控制点校正。
import gdal, osr
import numpy as npfile = r'E:\AST_08_00307242016030826_20210513075055_5224.hdf'dataset = gdal.Open(file)
sub_dataset = dataset.GetSubDatasets()def readSubdatasetAsArray(sub_dataset_name):return gdal.Open(sub_dataset_name).ReadAsArray()lst_dataset = gdal.Open(sub_dataset[0][0]) # lst的子数据集对象lats = readSubdatasetAsArray(sub_dataset[6][0])
lons = readSubdatasetAsArray(sub_dataset[7][0])row = np.linspace(0, 700, 11, endpoint=True)
col = np.linspace(0, 830, 11, endpoint=True)
cols, rows = np.meshgrid(row, col)gcps = [gdal.GCP(lons[row, col], lats[row, col], 0, rows[row, col], cols[row, col]) \for row in range(11) for col in range(11)]srs = osr.SpatialReference()
srs.ImportFromEPSG(4326)
lst_dataset.SetGCPs(gcps, srs.ExportToWkt())correctdata = gdal.Warp(r'E:\ast08_utm.tif', lst_dataset, dstSRS="EPSG:32649" , xRes=90, yRes=90, format='GTiff', tps=True)
del correctdata
我使用了EPSG代码指定了UTM 50N投影,有关各种投影的代码可以通过QGIS查询得到。
校正后影像,已和Landsat影像对比,校正的没有问题。
这篇关于ASTER产品数据 (AST_08) 几何校正的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!