使用GDAL读取Sentinel数据
GDAL 2.1已经原生支持对于Sentinel数据的读取,我这里使用Sentinel-2光学卫星数据给出使用GDAL工具对其进行读取的方法。
这里我们要大概知道Sentinel数据的组织。下载下来的Sentinel数据是一个ZIP压缩包,里面包含了JPEG2000格式的影像数据以及一些XML格式的元数据文件。
GDAL将Sentinel数据看做一个数据集(概念上类似HDF格式的数据集),里面包含了很多子数据文件。所以,对于Sentinel数据的读取就和对于HDF数据的读取是相同的啦。
对于HDF或者NetCDF格式数据的读取参考我的博文:读取HDF或者NetCDF格式的栅格数据
使用GDAL命令行读取Sentinel数据的元数据信息
直接使用gdalinfo [文件名]
可以查看Sentinel文件的元信息,如下图所示:
从上面的图中我们可以看到所有的Subdatasets
的文件全名,这样我们可以继续使用gdalinfo [子数据集全路径]
的方式查看具体的子数据集的元数据信息
下图显示的数据子集中包含四个波段的数据(红,绿,蓝,近红外)
使用GDAL命令行工具将Sentinel数据转为GeoTIFF格式
转换是针对具体的子数据集而言的,所以使用gdal_translate [sentinel subdataset full name] [output filename]
命令进行
下面的例子将包含红绿蓝近红外波段的数据子集转为GeoTIFF影像
gdal_translate SENTINEL2_L1C:/vsizip/S2A_MSIL1C_20180504T173911_N0206_R098_T13TGF_20180504T212111.zip/S2A_MSIL1C_20180504T173911_N0206_R098_T13TGF_20180504T212111.SAFE/MTD_MSIL1C.xml:10m:EPSG_32613 B2-3-4-8.tif
使用Python脚本读取Sentinel数据
1 | from osgeo import gdal |
程序输出如下:
1 | 打开数据为:Bands B2, B3, B4, B8 with 10m resolution, UTM 13N |