def vsifile_generic(filename): fp = gdal.VSIFOpenL(filename, 'wb+') gdal.VSIFWriteL('0123456789', 1, 10, fp) gdal.VSIFTruncateL(fp, 5) if gdal.VSIFTellL(fp) != 10: gdaltest.post_reason('failure') return 'fail' gdal.VSIFSeekL(fp, 0, 2) if gdal.VSIFTellL(fp) != 5: gdaltest.post_reason('failure') return 'fail' gdal.VSIFWriteL('XX', 1, 2, fp) gdal.VSIFCloseL(fp) statBuf = gdal.VSIStatL( filename, gdal.VSI_STAT_EXISTS_FLAG | gdal.VSI_STAT_NATURE_FLAG | gdal.VSI_STAT_SIZE_FLAG) if statBuf.size != 7: gdaltest.post_reason('failure') print(statBuf.size) return 'fail' fp = gdal.VSIFOpenL(filename, 'rb') buf = gdal.VSIFReadL(1, 7, fp) gdal.VSIFCloseL(fp) if buf.decode('ascii') != '01234XX': gdaltest.post_reason('failure') return 'fail' gdal.Unlink(filename) statBuf = gdal.VSIStatL(filename, gdal.VSI_STAT_EXISTS_FLAG) if statBuf is not None: gdaltest.post_reason('failure') return 'fail' return 'success'
def vsifile_3(): if (gdaltest.filesystem_supports_sparse_files('tmp') == False): return 'skip' filename = 'tmp/vsifile_3' fp = gdal.VSIFOpenL(filename, 'wb+') gdal.VSIFTruncateL(fp, 10 * 1024 * 1024 * 1024) gdal.VSIFSeekL(fp, 0, 2) pos = gdal.VSIFTellL(fp) if pos != 10 * 1024 * 1024 * 1024: gdaltest.post_reason('failure') gdal.VSIFCloseL(fp) gdal.Unlink(filename) print(pos) return 'fail' gdal.VSIFSeekL(fp, 0, 0) gdal.VSIFSeekL(fp, pos, 0) pos = gdal.VSIFTellL(fp) if pos != 10 * 1024 * 1024 * 1024: gdaltest.post_reason('failure') gdal.VSIFCloseL(fp) gdal.Unlink(filename) print(pos) return 'fail' gdal.VSIFCloseL(fp) statBuf = gdal.VSIStatL( filename, gdal.VSI_STAT_EXISTS_FLAG | gdal.VSI_STAT_NATURE_FLAG | gdal.VSI_STAT_SIZE_FLAG) gdal.Unlink(filename) if statBuf.size != 10 * 1024 * 1024 * 1024: gdaltest.post_reason('failure') print(statBuf.size) return 'fail' return 'success'
def main(argv): # noqa pylint: disable=too-many-branches """Return 0 in case of success, 1 for failure.""" i = 1 filename = None quiet = False full_check = None while i < len(argv): if argv[i] == "-q": quiet = True elif argv[i] == "--full-check=yes": full_check = True elif argv[i] == "--full-check=no": full_check = False elif argv[i] == "--full-check=auto": full_check = None elif argv[i][0] == "-": return Usage() elif filename is None: filename = argv[i] else: return Usage() i += 1 if filename is None: return Usage() if full_check is None: full_check = filename.startswith("/vsimem/") or os.path.exists( filename) try: ret = 0 warnings, errors, details = validate(filename, full_check=full_check) if warnings: if not quiet: print("The following warnings were found:") for warning in warnings: print(" - " + warning) print("") if errors: if not quiet: print("%s is NOT a valid cloud optimized GeoTIFF." % filename) print("The following errors were found:") for error in errors: print(" - " + error) print("") ret = 1 else: if not quiet: print("%s is a valid cloud optimized GeoTIFF" % filename) if not quiet and not warnings and not errors: headers_size = min(details["data_offsets"][k] for k in details["data_offsets"]) if headers_size == 0: headers_size = gdal.VSIStatL(filename).size print("\nThe size of all IFD headers is %d bytes" % headers_size) except ValidateCloudOptimizedGeoTIFFException as e: if not quiet: print("%s is NOT a valid cloud optimized GeoTIFF : %s" % (filename, str(e))) ret = 1 return ret
def jpeg_19(): import struct for (width, height, iX) in [(32, 32, 12), (25, 25, 8), (24, 25, 8)]: src_ds = gdal.GetDriverByName('GTiff').Create('/vsimem/jpeg_19.tif', width, height, 1) src_ds.CreateMaskBand(gdal.GMF_PER_DATASET) src_ds.GetRasterBand(1).GetMaskBand().WriteRaster( 0, 0, iX, height, struct.pack('B' * 1, 255), 1, 1) src_ds.GetRasterBand(1).GetMaskBand().WriteRaster( iX, 0, width - iX, height, struct.pack('B' * 1, 0), 1, 1) tiff_mask_data = src_ds.GetRasterBand(1).GetMaskBand().ReadRaster( 0, 0, width, height) # Generate a JPEG file with a (default) LSB bit mask order out_ds = gdal.GetDriverByName('JPEG').CreateCopy( '/vsimem/jpeg_19.jpg', src_ds) out_ds = None # Generate a JPEG file with a MSB bit mask order gdal.SetConfigOption('JPEG_WRITE_MASK_BIT_ORDER', 'MSB') out_ds = gdal.GetDriverByName('JPEG').CreateCopy( '/vsimem/jpeg_19_msb.jpg', src_ds) out_ds = None gdal.SetConfigOption('JPEG_WRITE_MASK_BIT_ORDER', None) src_ds = None # Check that the file are indeed different statBuf = gdal.VSIStatL('/vsimem/jpeg_19.jpg') f = gdal.VSIFOpenL('/vsimem/jpeg_19.jpg', 'rb') data1 = gdal.VSIFReadL(1, statBuf.size, f) gdal.VSIFCloseL(f) statBuf = gdal.VSIStatL('/vsimem/jpeg_19_msb.jpg') f = gdal.VSIFOpenL('/vsimem/jpeg_19_msb.jpg', 'rb') data2 = gdal.VSIFReadL(1, statBuf.size, f) gdal.VSIFCloseL(f) if (width, height, iX) == (24, 25, 8): if data1 != data2: gdaltest.post_reason('fail') return 'fail' else: if data1 == data2: gdaltest.post_reason('fail') return 'fail' # Check the file with the LSB bit mask order ds = gdal.Open('/vsimem/jpeg_19.jpg') jpg_mask_data = ds.GetRasterBand(1).GetMaskBand().ReadRaster( 0, 0, width, height) ds = None if tiff_mask_data != jpg_mask_data: gdaltest.post_reason('fail') return 'fail' # Check the file with the MSB bit mask order ds = gdal.Open('/vsimem/jpeg_19_msb.jpg') jpg_mask_data = ds.GetRasterBand(1).GetMaskBand().ReadRaster( 0, 0, width, height) ds = None if tiff_mask_data != jpg_mask_data: gdaltest.post_reason('fail') return 'fail' gdal.GetDriverByName('GTiff').Delete('/vsimem/jpeg_19.tif') gdal.GetDriverByName('JPEG').Delete('/vsimem/jpeg_19.jpg') gdal.GetDriverByName('JPEG').Delete('/vsimem/jpeg_19_msb.jpg') return 'success'