def __init__(self, filename):
if os.path.isfile(filename):
self.filename = filename if os.path.isabs(filename) else os.path.join(os.getcwd(), filename)
self.raster = gdal.Open(filename, GA_ReadOnly)
else:
raise IOError('file does not exist')
self.cols = self.raster.RasterXSize
self.rows = self.raster.RasterYSize
self.bands = self.raster.RasterCount
self.dim = [self.rows, self.cols, self.bands]
self.driver = self.raster.GetDriver()
self.format = self.driver.ShortName
self.dtype = gdal.GetDataTypeName(self.raster.GetRasterBand(1).DataType)
self.projection = self.raster.GetProjection()
self.srs = osr.SpatialReference(wkt=self.projection)
self.proj4 = self.srs.ExportToProj4()
try:
self.epsg = crsConvert(self.srs, 'epsg')
except RuntimeError:
self.epsg = None
self.geogcs = self.srs.GetAttrValue('geogcs')
self.projcs = self.srs.GetAttrValue('projcs') if self.srs.IsProjected() else None
self.geo = dict(
zip(['xmin', 'xres', 'rotation_x', 'ymax', 'rotation_y', 'yres'], self.raster.GetGeoTransform()))
# note: yres is negative!
self.geo['xmax'] = self.geo['xmin'] + self.geo['xres'] * self.cols
self.geo['ymin'] = self.geo['ymax'] + self.geo['yres'] * self.rows
self.res = [abs(float(self.geo['xres'])), abs(float(self.geo['yres']))]
self.nodata = self.raster.GetRasterBand(1).GetNoDataValue()
self.__data = []
评论列表
文章目录