I'm using the GDAL SWIG python bindings to create a new GeoTiff raster for use in a blockwise exponential-decay function..
kernel_size = 177764054 driver = gdal.GetDriverByName('GTiff') kernel_dataset = driver.Create( kernel_uri.encode('utf-8'), kernel_size, kernel_size, 1, gdal.GDT_Float32, options=[ 'TILED=YES', 'BLOCKXSIZE=1024', 'BLOCKYSIZE=1024']) # Make some kind of geotransform, it doesn't matter what but # will make GIS libraries behave better if it's all defined kernel_dataset.SetGeoTransform([444720, 30, 0, 3751320, 0, -30]) srs = osr.SpatialReference() srs.SetUTM(11, 1) srs.SetWellKnownGeogCS('NAD27') kernel_dataset.SetProjection(srs.ExportToWkt()) kernel_band = kernel_dataset.GetRasterBand(1) kernel_band.SetNoDataValue(-9999) ERROR 1: TIFFNumberOfTiles:Integer overflow in TIFFNumberOfTiles ERROR 1: GTiffDataset::Crystalize:No space for tile arrays ERROR 1: TIFFNumberOfTiles:Integer overflow in TIFFNumberOfTiles ERROR 1: TIFFReadDirectory:Cannot handle zero number of tiles ERROR 1: TIFFNumberOfTiles:Integer overflow in TIFFNumberOfTiles ERROR 1: TIFFWriteEncodedTile:No space for tile arrays ERROR 1: /Users/jdouglass/Documents/habitat_quality_workspace/tmp/tmpvUVuqu, band 1: An error occured while writing a dirty block ERROR 1: TIFFNumberOfTiles:Integer overflow in TIFFNumberOfTiles ERROR 1: TIFFWriteEncodedTile:No space for tile arrays ... Until finally:
More than 1000 errors or warnings have been reported. No more will be reported from now. Admittedly, this is a very, very large raster (177,764,054^2 = 3.1600059e+16 pixels), which would also mean that there are a massive number of blocks (about 30,136,265,604).
Is the upper-bound of the number of blocks really 2^32 (4,294,967,296), represented by a 32-bit integer? Is there any way around this apparent limitation other than to just use very, very large blocks? Am I misusing my dataset creation options?
أكثر...
kernel_size = 177764054 driver = gdal.GetDriverByName('GTiff') kernel_dataset = driver.Create( kernel_uri.encode('utf-8'), kernel_size, kernel_size, 1, gdal.GDT_Float32, options=[ 'TILED=YES', 'BLOCKXSIZE=1024', 'BLOCKYSIZE=1024']) # Make some kind of geotransform, it doesn't matter what but # will make GIS libraries behave better if it's all defined kernel_dataset.SetGeoTransform([444720, 30, 0, 3751320, 0, -30]) srs = osr.SpatialReference() srs.SetUTM(11, 1) srs.SetWellKnownGeogCS('NAD27') kernel_dataset.SetProjection(srs.ExportToWkt()) kernel_band = kernel_dataset.GetRasterBand(1) kernel_band.SetNoDataValue(-9999) ERROR 1: TIFFNumberOfTiles:Integer overflow in TIFFNumberOfTiles ERROR 1: GTiffDataset::Crystalize:No space for tile arrays ERROR 1: TIFFNumberOfTiles:Integer overflow in TIFFNumberOfTiles ERROR 1: TIFFReadDirectory:Cannot handle zero number of tiles ERROR 1: TIFFNumberOfTiles:Integer overflow in TIFFNumberOfTiles ERROR 1: TIFFWriteEncodedTile:No space for tile arrays ERROR 1: /Users/jdouglass/Documents/habitat_quality_workspace/tmp/tmpvUVuqu, band 1: An error occured while writing a dirty block ERROR 1: TIFFNumberOfTiles:Integer overflow in TIFFNumberOfTiles ERROR 1: TIFFWriteEncodedTile:No space for tile arrays ... Until finally:
More than 1000 errors or warnings have been reported. No more will be reported from now. Admittedly, this is a very, very large raster (177,764,054^2 = 3.1600059e+16 pixels), which would also mean that there are a massive number of blocks (about 30,136,265,604).
Is the upper-bound of the number of blocks really 2^32 (4,294,967,296), represented by a 32-bit integer? Is there any way around this apparent limitation other than to just use very, very large blocks? Am I misusing my dataset creation options?
أكثر...