今天常识读写sentinel-2的数据。
先写上gdal支持的数据类型
GDT_Unknown : 未知数据类型
GDT_Byte : 8bit正整型 (C++中对应unsigned char)
GDT_UInt16 : 16bit正整型 (C++中对应 unsigned short)
GDT_Int16 : 16bit整型 (C++中对应 short 或 short int)
GDT_UInt32 : 32bit 正整型 (C++中对应unsigned long)
GDT_Int32 : 32bit整型 (C++中对应int 或 long 或 long int)
GDT_Float32 : 32bit 浮点型 (C++中对应float)
GDT_Float64 : 64bit 浮点型 (C++中对应double)
GDT_CInt16 : 16bit复整型 (?)
GDT_CInt32 : 32bit复整型 (?)
GDT_CFloat32 : 32bit复浮点型 (?)
GDT_CFloat64 : 64bit复浮点型 (?)
先献上代码,我读取的是sentinel2的数据,目前网上还没有找到有效的代码,不过有一个老哥的很好我在他的框架上改动了一些,就可以用了。神奇的是,我一直以为sentienl的数据是把地理信息等等和图像分开存储的,因为我用envi也好,snap也好都不能直接打开图片同时获得地理信息,打开的jp2文件只是仅仅的图片文件而已,metedata啥都没有。但是这里通过gdal打开却能
产生这种效果,明显是把地理信息都读取出来了。所以在此把代码献上。
在代码中,大部分地方都没改,只是原来读取xml只能得到部分坐标信息,后面死马当活马,想试试打开jp2偶然成功了。
from osgeo import gdal
import os
class GRID:
#读图像文件
def read_img(self,filename):
dataset=gdal.Open(filename) #打开文件
im_width = dataset.RasterXSize #栅格矩阵的列数
im_height = dataset.RasterYSize #栅格矩阵的行数