def test_basisu_write_etc1s_incompatible_or_missing_options(): src_ds = gdal.Open('../gcore/data/stefan_full_rgba.tif') out_filename = '/vsimem/out.basis' gdal.ErrorReset() with gdaltest.error_handler(): assert gdal.GetDriverByName('BASISU').CreateCopy( out_filename, src_ds, options = ['ETC1S_MAX_ENDPOINTS_CLUSTERS=16128']) is None assert gdal.GetLastErrorMsg() != '' gdal.ErrorReset() with gdaltest.error_handler(): assert gdal.GetDriverByName('BASISU').CreateCopy( out_filename, src_ds, options = ['ETC1S_MAX_SELECTOR_CLUSTERS=16128']) is None assert gdal.GetLastErrorMsg() != '' gdal.ErrorReset() with gdaltest.error_handler(): assert gdal.GetDriverByName('BASISU').CreateCopy( out_filename, src_ds, options = ['ETC1S_QUALITY_LEVEL=1', 'ETC1S_MAX_ENDPOINTS_CLUSTERS=16128']) is not None assert gdal.GetLastErrorType() == 2 # warning gdal.Unlink(out_filename) gdal.ErrorReset() with gdaltest.error_handler(): assert gdal.GetDriverByName('BASISU').CreateCopy( out_filename, src_ds, options = ['ETC1S_QUALITY_LEVEL=1', 'ETC1S_MAX_SELECTOR_CLUSTERS=16128']) is not None assert gdal.GetLastErrorType() == 2 # warning gdal.Unlink(out_filename)
def tiff_read_irregular_tile_size_jpeg_in_tiff(): md = gdal.GetDriverByName('GTiff').GetMetadata() if md['DMD_CREATIONOPTIONLIST'].find('JPEG') == -1: return 'skip' ds = gdal.Open('data/irregular_tile_size_jpeg_in_tiff.tif') gdal.ErrorReset() gdal.PushErrorHandler('CPLQuietErrorHandler') ds.GetRasterBand(1).Checksum() gdal.PopErrorHandler() if gdal.GetLastErrorType() == 0: gdaltest.post_reason('fail') return 'fail' gdal.ErrorReset() gdal.PushErrorHandler('CPLQuietErrorHandler') ds.GetRasterBand(1).GetOverview(0).Checksum() gdal.PopErrorHandler() if gdal.GetLastErrorType() == 0: gdaltest.post_reason('fail') return 'fail' gdal.ErrorReset() return 'success'
def jpeg_6(): ds = gdal.Open('data/vophead.jpg') # Bacause of the optimization done in r17446, we should'nt yet get this error if gdal.GetLastErrorType() == 2 \ and gdal.GetLastErrorMsg().find('Ignoring EXIF') != -1: gdaltest.post_reason('got error too soon.') return 'fail' md = ds.GetMetadata() # Did we get an exif related warning? if gdal.GetLastErrorType() != 2 \ or gdal.GetLastErrorMsg().find('Ignoring EXIF') == -1: gdaltest.post_reason('we did not get expected error.') return 'fail' if len(md) != 1 or md['EXIF_Software'] != 'IrfanView': gdaltest.post_reason('did not get expected metadata.') print(md) return 'fail' ds = None return 'success'
def basic_test_7_internal(): try: gdal.Open('non_existing_ds', gdal.GA_ReadOnly) gdaltest.post_reason('opening should have thrown an exception') return 'fail' except: # Special case: we should still be able to get the error message # until we call a new GDAL function if gdal.GetLastErrorMsg( ) != '`non_existing_ds\' does not exist in the file system,\nand is not recognised as a supported dataset name.\n': gdaltest.post_reason('did not get expected error message') return 'fail' if gdal.GetLastErrorType() == 0: gdaltest.post_reason('did not get expected error type') return 'fail' # Should issue an implicit CPLErrorReset() gdal.GetCacheMax() if gdal.GetLastErrorType() != 0: gdaltest.post_reason('got unexpected error type') return 'fail' return 'success'
def jpeg_6(): ds = gdal.Open('data/vophead.jpg') # Because of the optimization in r17446, we shouldn't yet get this error. if (gdal.GetLastErrorType() == 2 and gdal.GetLastErrorMsg().find('Ignoring EXIF') != -1): gdaltest.post_reason('got error too soon.') return 'fail' with gdaltest.error_handler('CPLQuietErrorHandler'): # Get this warning: # Ignoring EXIF directory with unlikely entry count (65499). md = ds.GetMetadata() # Did we get an exif related warning? if (gdal.GetLastErrorType() != 2 or gdal.GetLastErrorMsg().find('Ignoring EXIF') == -1): gdaltest.post_reason('did not get expected error.') return 'fail' if len(md) != 1 or md['EXIF_Software'] != 'IrfanView': gdaltest.post_reason('did not get expected metadata.') print(md) return 'fail' ds = None return 'success'
def basic_test_7_internal(): try: gdal.Open('non_existing_ds', gdal.GA_ReadOnly) gdaltest.post_reason('opening should have thrown an exception') return 'fail' except: # Special case: we should still be able to get the error message # until we call a new GDAL function if not matches_non_existing_error_msg(gdal.GetLastErrorMsg()): gdaltest.post_reason('did not get expected error message, got %s' % gdal.GetLastErrorMsg()) return 'fail' if gdal.GetLastErrorType() == 0: gdaltest.post_reason('did not get expected error type') return 'fail' # Should issue an implicit CPLErrorReset() gdal.GetCacheMax() if gdal.GetLastErrorType() != 0: gdaltest.post_reason('got unexpected error type') return 'fail' return 'success'
def jpeg_17(): gdal.ErrorReset() gdal.PushErrorHandler('CPLQuietErrorHandler') ds = gdal.Open('data/bogus.jpg') gdal.PopErrorHandler() if ds is not None or gdal.GetLastErrorType( ) != gdal.CE_Failure or gdal.GetLastErrorMsg() == '': gdaltest.post_reason('fail') return 'fail' gdal.ErrorReset() ds = gdal.Open('data/byte_corrupted.jpg') gdal.PushErrorHandler('CPLQuietErrorHandler') # ERROR 1: libjpeg: Huffman table 0x00 was not defined cs = ds.GetRasterBand(1).Checksum() gdal.PopErrorHandler() if gdal.GetLastErrorType() != gdal.CE_Failure or gdal.GetLastErrorMsg( ) == '': # libjpeg-turbo 1.4.0 doesn't emit errors... if cs != 4925: gdaltest.post_reason('fail') return 'fail' gdal.ErrorReset() ds = gdal.Open('data/byte_corrupted2.jpg') gdal.PushErrorHandler('CPLQuietErrorHandler') # Warning 1: libjpeg: Corrupt JPEG data: found marker 0x00 instead of RST63 ds.GetRasterBand(1).Checksum() gdal.PopErrorHandler() if gdal.GetLastErrorType() != gdal.CE_Warning or gdal.GetLastErrorMsg( ) == '': gdaltest.post_reason('fail') return 'fail' gdal.ErrorReset() ds = gdal.Open('data/byte_corrupted2.jpg') gdal.PushErrorHandler('CPLQuietErrorHandler') gdal.SetConfigOption('GDAL_ERROR_ON_LIBJPEG_WARNING', 'TRUE') # ERROR 1: libjpeg: Corrupt JPEG data: found marker 0x00 instead of RST63 ds.GetRasterBand(1).Checksum() gdal.SetConfigOption('GDAL_ERROR_ON_LIBJPEG_WARNING', None) gdal.PopErrorHandler() if gdal.GetLastErrorType() != gdal.CE_Failure or gdal.GetLastErrorMsg( ) == '': gdaltest.post_reason('fail') return 'fail' return 'success'
def setGeorefImage(): ds = gdal.Open( pImgSel['filename'], GA_Update ) if gdal.GetLastErrorType() != 0: return { 'isOk': False, 'msg': gdal.GetLastErrorMsg() } xOrigin = yOrigin = None if isView: xOrigin = self.paramsImage['view']['extent'].xMinimum() yOrigin = self.paramsImage['view']['extent'].yMaximum() else: xOrigin = self.paramsImage['tiePoint'][0] yOrigin = self.paramsImage['tiePoint'][1] tiePointOrigin = ( xOrigin, yOrigin ) i = 0 xIni = tiePointOrigin[i] + pImgSel['tiePoint'][i] * self.paramsImage['res'][i] i = 1 yIni = tiePointOrigin[i] - pImgSel['tiePoint'][i] * self.paramsImage['res'][i] transform = ( xIni, self.paramsImage['res'][0], 0.0, yIni, 0.0, -1*self.paramsImage['res'][1] ) ds.SetGeoTransform( transform ) ds.SetProjection( self.paramsImage['wktProj'] ) band = ds.GetRasterBand( 1 ) band.SetNoDataValue( 0.0 ) ds = None return { 'isOk': True }
def test_tiff_srs_read_GeogGeodeticDatumGeoKey_reserved_range(): ds = gdal.Open('data/gtiff/GeogGeodeticDatumGeoKey_reserved.tif') with gdaltest.error_handler(): sr = ds.GetSpatialRef() assert sr.GetName() == "WGS 84 / Pseudo-Mercator" assert gdal.GetLastErrorMsg() != '' assert gdal.GetLastErrorType() == gdal.CE_Warning
def check_integrity(raster_file): ds = gdal.Open(raster_file) for band in range(1, ds.RasterCount + 1): ds.GetRasterBand(band).Checksum() if gdal.GetLastErrorType() != 0: raise RasterFileIntegrityError('Band %s of %s is corrupted.' % (band, raster_file))
def image_check(fn): ds = gdal.Open(fn) status = True for i in range(ds.RasterCount): ds.GetRasterBand(i + 1).Checksum() if gdal.GetLastErrorType() != 0: status = False return status
def getBandSelect(): ds = gdal.Open(self.paramsProcess['filepath'], gdal.GA_ReadOnly) if gdal.GetLastErrorType() != 0: ds = None return {'isOk': False, 'message': gdal.GetLastErrorMsg()} band = ds.GetRasterBand(1) band.SetNoDataValue(0.0) return {'isOk': True, 'dataset': ds, 'band': band}
def tiff_read_tag_without_null_byte(): ds = gdal.Open('data/tag_without_null_byte.tif') if gdal.GetLastErrorType() != 0: gdaltest.post_reason( 'should have not emitted a warning, but only a CPLDebug() message' ) return 'fail' ds = None return 'success'
def basic_test_7_internal(): with pytest.raises(Exception): gdal.Open('non_existing_ds', gdal.GA_ReadOnly) # Special case: we should still be able to get the error message # until we call a new GDAL function assert matches_non_existing_error_msg(gdal.GetLastErrorMsg()), ('did not get expected error message, got %s' % gdal.GetLastErrorMsg()) # Special case: we should still be able to get the error message # until we call a new GDAL function assert matches_non_existing_error_msg(gdal.GetLastErrorMsg()), 'did not get expected error message, got %s' % gdal.GetLastErrorMsg() assert gdal.GetLastErrorType() != 0, 'did not get expected error type' # Should issue an implicit CPLErrorReset() gdal.GetCacheMax() assert gdal.GetLastErrorType() == 0, 'got unexpected error type'
def polygonizeSelectionImage(): ds_img = gdal.Open( pImgSel['filename'], GA_ReadOnly ) if gdal.GetLastErrorType() != 0: return { 'isOk': False, 'msg': gdal.GetLastErrorMsg() } band = ds_img.GetRasterBand( 1 ) # Sieve Band drv = gdal.GetDriverByName('MEM') ds_sieve = drv.Create( '', ds_img.RasterXSize, ds_img.RasterYSize,1, band.DataType ) ds_sieve.SetGeoTransform( ds_img.GetGeoTransform() ) ds_sieve.SetProjection( self.paramsImage['wktProj'] ) band_sieve = ds_sieve.GetRasterBand(1) p_threshold = self.paramsSieve['threshold'] p_connectedness = self.paramsSieve['connectedness'] gdal.SieveFilter( band, None, band_sieve, p_threshold, p_connectedness, [], callback=None ) ds_img = band = None if gdal.GetLastErrorType() != 0: return { 'isOk': False, 'msg': gdal.GetLastErrorMsg() } # Memory layer - Polygonize srs = osr.SpatialReference() srs.ImportFromWkt( self.paramsImage['wktProj'] ) drv_poly = ogr.GetDriverByName('MEMORY') ds_poly = drv_poly.CreateDataSource('memData') layer_poly = ds_poly.CreateLayer( 'memLayer', srs, ogr.wkbPolygon ) field = ogr.FieldDefn("dn", ogr.OFTInteger) layer_poly.CreateField( field ) idField = 0 gdal.Polygonize( band_sieve, None, layer_poly, idField, [], callback=None ) ds_sieve = band_sieve = None if gdal.GetLastErrorType() != 0: return { 'isOk': False, 'msg': gdal.GetLastErrorMsg() } # Get Geoms geoms = [] layer_poly.SetAttributeFilter("dn = 255") for feat in layer_poly: geoms.append( feat.GetGeometryRef().Clone() ) ds_poly = layer_poly = None return { 'isOk': True, 'geoms': geoms }
def test_jpeg_17(): gdal.ErrorReset() with gdaltest.error_handler('CPLQuietErrorHandler'): ds = gdal.Open('data/bogus.jpg') assert (not (ds is not None or gdal.GetLastErrorType() != gdal.CE_Failure or gdal.GetLastErrorMsg() == '')) gdal.ErrorReset() ds = gdal.Open('data/byte_corrupted.jpg') with gdaltest.error_handler('CPLQuietErrorHandler'): # ERROR 1: libjpeg: Huffman table 0x00 was not defined cs = ds.GetRasterBand(1).Checksum() if (gdal.GetLastErrorType() != gdal.CE_Failure or gdal.GetLastErrorMsg() == ''): # libjpeg-turbo 1.4.0 doesn't emit errors... assert cs == 4925 gdal.ErrorReset() ds = gdal.Open('data/byte_corrupted2.jpg') with gdaltest.error_handler('CPLQuietErrorHandler'): # Get this warning: # libjpeg: Corrupt JPEG data: found marker 0x00 instead of RST63 ds.GetRasterBand(1).Checksum() assert (not (gdal.GetLastErrorType() != gdal.CE_Warning or gdal.GetLastErrorMsg() == '')) gdal.ErrorReset() ds = gdal.Open('data/byte_corrupted2.jpg') with gdaltest.error_handler('CPLQuietErrorHandler'): gdal.SetConfigOption('GDAL_ERROR_ON_LIBJPEG_WARNING', 'TRUE') # Get this ERROR 1: # libjpeg: Corrupt JPEG data: found marker 0x00 instead of RST63 ds.GetRasterBand(1).Checksum() gdal.SetConfigOption('GDAL_ERROR_ON_LIBJPEG_WARNING', None) assert (not (gdal.GetLastErrorType() != gdal.CE_Failure or gdal.GetLastErrorMsg() == ''))
def test_jpeg_6(): ds = gdal.Open('data/vophead.jpg') # Because of the optimization in r17446, we shouldn't yet get this error. assert (not (gdal.GetLastErrorType() == 2 and gdal.GetLastErrorMsg().find('Ignoring EXIF') != -1)), 'got error too soon.' with gdaltest.error_handler('CPLQuietErrorHandler'): # Get this warning: # Ignoring EXIF directory with unlikely entry count (65499). md = ds.GetMetadata() # Did we get an exif related warning? assert (not (gdal.GetLastErrorType() != 2 or gdal.GetLastErrorMsg().find('Ignoring EXIF') == -1)), \ 'did not get expected error.' assert len(md) == 1 and md['EXIF_Software'] == 'IrfanView', \ 'did not get expected metadata.' ds = None
def test_gdalbuildvrt_lib_bandList(): src_ds = gdal.GetDriverByName('MEM').Create('src1', 3, 1, 2) src_ds.SetGeoTransform([2, 0.001, 0, 49, 0, -0.001]) src_ds.GetRasterBand(1).Fill(255) src_ds.GetRasterBand(2).Fill(0) vrt_ds = gdal.BuildVRT('', [src_ds], bandList=[2, 1, 2]) assert vrt_ds.GetRasterBand(1).Checksum() == 0 assert vrt_ds.GetRasterBand(2).Checksum() != 0 assert vrt_ds.GetRasterBand(3).Checksum() == 0 with gdaltest.error_handler(): assert gdal.BuildVRT('', [src_ds], bandList=[3]) is None src2_ds = gdal.GetDriverByName('MEM').Create('src2', 3, 1, 3) src2_ds.SetGeoTransform([2, 0.001, 0, 49, 0, -0.001]) # If no explicit band list, we require all sources to have the same # number of bands with gdaltest.error_handler(): gdal.ErrorReset() assert gdal.BuildVRT('', [src_ds, src2_ds]) is not None assert gdal.GetLastErrorType() != 0 with gdaltest.error_handler(): gdal.ErrorReset() assert gdal.BuildVRT('', [src2_ds, src_ds]) is not None assert gdal.GetLastErrorType() != 0 # If explicit band list, we tolerate different band count, provided that # all requested bands are available. gdal.ErrorReset() assert gdal.BuildVRT('', [src_ds, src2_ds], bandList=[1, 2]) is not None assert gdal.GetLastErrorType() == 0 gdal.ErrorReset() assert gdal.BuildVRT('', [src2_ds, src_ds], bandList=[1, 2]) is not None assert gdal.GetLastErrorType() == 0
def test_rmf_34(): numpy = pytest.importorskip('numpy') drv = gdal.GetDriverByName('RMF') tst_name = 'tmp/rmf_34.mtw' tst_ds = drv.Create(tst_name, 32, 32, 1, gdal.GDT_Int32, options=['MTW=YES', 'BLOCKXSIZE=16', 'BLOCKYSIZE=16']) assert tst_ds is not None, ('Can\'t create ' + tst_name) nodata = 0 tst_ds.GetRasterBand(1).SetNoDataValue(nodata) # Write NoData block buff = numpy.full((16, 16), nodata, dtype=numpy.int32) assert gdal.CE_None == tst_ds.GetRasterBand(1).WriteArray(buff, 0, 0) gdal.ErrorReset() tst_ds.FlushCache() assert gdal.GetLastErrorType( ) == gdal.CE_None, 'Flush cache failed: ' + gdal.GetLastErrorMsg() # Write valid block min_valid_data, max_valid_data = 1, 2 buff = numpy.full((16, 16), min_valid_data, dtype=numpy.int32) assert gdal.CE_None == tst_ds.GetRasterBand(1).WriteArray(buff, 16, 0) buff = numpy.full((16, 16), max_valid_data, dtype=numpy.int32) assert gdal.CE_None == tst_ds.GetRasterBand(1).WriteArray(buff, 16, 16) tst_ds.FlushCache() assert gdal.GetLastErrorType( ) == gdal.CE_None, 'Flush cache failed: ' + gdal.GetLastErrorMsg() tst_ds = None tst_ds = gdal.Open(tst_name) assert tst_ds is not None, ('Can\'t open ' + tst_name) assert min_valid_data == int(tst_ds.GetMetadataItem('ELEVATION_MINIMUM')) assert max_valid_data == int(tst_ds.GetMetadataItem('ELEVATION_MAXIMUM')) tst_ds = None os.remove(tst_name)
def test_hfa_corrupt_aux(): # NOTE: we depend on being able to open .aux files as a weak sort of # dataset. gdal.PushErrorHandler('CPLQuietErrorHandler') ds = gdal.Open('data/F0116231.aux') gdal.PopErrorHandler() assert ds.RasterXSize == 1104, 'did not get expected dataset characteristics' assert gdal.GetLastErrorType() == 2 and gdal.GetLastErrorMsg().find('Corrupt (looping)') != -1, \ 'Did not get expected warning.' ds = None
def grib_3(): if gdaltest.grib_drv is None: return 'skip' tst = gdaltest.GDALTest('GRIB', 'bug3246.grb', 4, 4081) gdal.PushErrorHandler('CPLQuietErrorHandler') result = tst.testOpen() gdal.PopErrorHandler() msg = gdal.GetLastErrorMsg() if msg.find('data access may be incomplete') == -1 \ or gdal.GetLastErrorType() != 2: gdaltest.post_reason('did not get expected warning.') return result
def __init__(self, msg=None): ''' For raising GDAL related errors @type msg: C{str} @param msg: Initial message to include with GDAL the error message @return None ''' errtype = { gdal.CE_None: 'None', gdal.CE_Debug: 'Debug', gdal.CE_Warning: 'Warning', gdal.CE_Failure: 'Failure', gdal.CE_Fatal: 'Fatal' } self.errmsg = gdal.GetLastErrorMsg().replace('\n', ' ') self.errnum = gdal.GetLastErrorNo() self.errtyp = errtype.get(gdal.GetLastErrorType(), 'None') gdal.ErrorReset() if msg: self.errmsg = '\n'.join([msg, self.errmsg]) Exception.__init__(self, self.errmsg, self.errnum, self.errtyp)
def test_ngw_7(): # FIXME: depends on previous test if gdaltest.ngw_ds is None: pytest.skip() gdal.ErrorReset() gdal.SetConfigOption('CPL_ACCUM_ERROR_MSG', 'ON') gdal.PushErrorHandler('CPLQuietErrorHandler') ovr_band = gdaltest.ngw_ds.GetRasterBand(1).GetOverview(21) assert ovr_band is not None ovr_band.Checksum() gdal.PopErrorHandler() gdal.SetConfigOption('CPL_ACCUM_ERROR_MSG', 'OFF') msg = gdal.GetLastErrorMsg() assert gdal.GetLastErrorType() != gdal.CE_Failure, msg gdal.ErrorReset()
def tps_1(): drv = gdal.GetDriverByName('MEM') ds = drv.Create('foo', 2, 2) gcp_list = [ gdal.GCP(0, 0, 0, 0, 0), gdal.GCP(0, 50, 0, 0, 50), gdal.GCP(50, 0, 0, 50, 0), gdal.GCP(50, 50, 0, 50, 50), gdal.GCP(0 * 25, 0 * 25, 0, 25, 25), ] ds.SetGCPs(gcp_list, osr.GetUserInputAsWKT('WGS84')) utm_wkt = osr.GetUserInputAsWKT('+proj=utm +zone=11 +datum=WGS84') transformer = gdal.Transformer(ds, None, ['DST_SRS=' + utm_wkt, 'METHOD=GCP_TPS']) if transformer is None or gdal.GetLastErrorType() == 0: return 'fail' return 'success'
def hfa_corrupt_aux(): # NOTE: we depend on being able to open .aux files as a weak sort of # dataset. gdal.PushErrorHandler('CPLQuietErrorHandler') ds = gdal.Open('data/F0116231.aux') gdal.PopErrorHandler() if ds.RasterXSize != 1104: gdaltest.post_reason('did not get expected dataset characteristics') return 'fail' if gdal.GetLastErrorType() != 2 \ or gdal.GetLastErrorMsg().find('Corrupt (looping)') == -1: gdaltest.post_reason('Did not get expected warning.') return 'fail' ds = None return 'success'
def __init__(self, msg=None, *args, **kwargs): ''' For raising GDAL related errors @type msg: C{str} @param msg: Initial message to include with GDAL the error message @return None @todo: GDAL now has a UseExceptions method, should this class go away? ''' errtype = { gdal.CE_None: 'gdal.CE_None', gdal.CE_Debug: 'gdal.CE_Debug', gdal.CE_Warning: 'gdal.CE_Warning', gdal.CE_Failure: 'gdal.CE_Failure', gdal.CE_Fatal: 'gdal.CE_Fatal' } self.errmsg = gdal.GetLastErrorMsg().replace('\n', ' ') self.errnum = gdal.GetLastErrorNo() self.errtyp = errtype.get(gdal.GetLastErrorType(), 'None') gdal.ErrorReset() if msg: self.errmsg = '\n'.join([msg, self.errmsg]) Exception.__init__(self, (self.errmsg, self.errnum, self.errtyp))
def getGeomsSieve(): srs = osr.SpatialReference() srs.ImportFromWkt(infoimage['wktSRS']) drv_poly = ogr.GetDriverByName('MEMORY') ds_poly = drv_poly.CreateDataSource('memData') layer_poly = ds_poly.CreateLayer('memLayer', srs, ogr.wkbPolygon) field = ogr.FieldDefn("dn", ogr.OFTInteger) layer_poly.CreateField(field) idField = 0 gdal.Polygonize(band_sieve, None, layer_poly, idField, [], callback=None) if gdal.GetLastErrorType() != 0: return {'isOk': False, 'msg': gdal.GetLastErrorMsg()} geoms = [] layer_poly.SetAttributeFilter("dn = 1") for feat in layer_poly: geoms.append(feat.GetGeometryRef().Clone()) ds_poly = layer_poly = None return {'isOk': True, 'geoms': geoms}
def test_ngw_7(): if gdaltest.ngw_drv is None or gdaltest.ngw_ds is None: pytest.skip() if check_availability(gdaltest.ngw_test_server) == False: gdaltest.ngw_ds = None gdaltest.ngw_drv = None pytest.skip() gdal.ErrorReset() gdal.SetConfigOption('CPL_ACCUM_ERROR_MSG', 'ON') gdal.PushErrorHandler('CPLQuietErrorHandler') ovr_band = gdaltest.ngw_ds.GetRasterBand(1).GetOverview(21) assert ovr_band is not None ovr_band.Checksum() gdal.PopErrorHandler() gdal.SetConfigOption('CPL_ACCUM_ERROR_MSG', 'OFF') msg = gdal.GetLastErrorMsg() assert gdal.GetLastErrorType() != gdal.CE_Failure, msg gdal.ErrorReset()
def ogr_geom_linestring_limits(): geom = ogr.CreateGeometryFromWkt('LINESTRING EMPTY') if geom.Length() != 0: return 'fail' gdal.ErrorReset() gdal.PushErrorHandler('CPLQuietErrorHandler') geom.GetPoint(-1) gdal.PopErrorHandler() if gdal.GetLastErrorType() == 0: return 'fail' gdal.ErrorReset() gdal.PushErrorHandler('CPLQuietErrorHandler') geom.GetPoint(0) gdal.PopErrorHandler() if gdal.GetLastErrorType() == 0: return 'fail' gdal.ErrorReset() gdal.PushErrorHandler('CPLQuietErrorHandler') geom.GetPoint_2D(-1) gdal.PopErrorHandler() if gdal.GetLastErrorType() == 0: return 'fail' gdal.ErrorReset() gdal.PushErrorHandler('CPLQuietErrorHandler') geom.GetPoint_2D(0) gdal.PopErrorHandler() if gdal.GetLastErrorType() == 0: return 'fail' gdal.ErrorReset() gdal.PushErrorHandler('CPLQuietErrorHandler') geom.SetPoint(-1, 5, 6, 7) gdal.PopErrorHandler() if gdal.GetLastErrorType() == 0: return 'fail' gdal.ErrorReset() gdal.PushErrorHandler('CPLQuietErrorHandler') geom.SetPoint_2D(-1, 5, 6) gdal.PopErrorHandler() if gdal.GetLastErrorType() == 0: return 'fail' if False: gdal.ErrorReset() gdal.PushErrorHandler('CPLQuietErrorHandler') geom.SetPoint(2147000000, 5, 6, 7) gdal.PopErrorHandler() if gdal.GetLastErrorType() == 0: return 'fail' gdal.ErrorReset() gdal.PushErrorHandler('CPLQuietErrorHandler') geom.SetPoint_2D(2147000000, 5, 6) gdal.PopErrorHandler() if gdal.GetLastErrorType() == 0: return 'fail' geom = ogr.CreateGeometryFromWkt('LINESTRING(0 0)') if geom.Length() != 0: return 'fail' geom = ogr.CreateGeometryFromWkt('LINESTRING(0 0, 1 0)') if geom.Length() != 1: return 'fail' return 'success'
def ogr_sql_28(): ds = ogr.GetDriverByName("Memory").CreateDataSource("my_ds") lyr = ds.CreateLayer("my_layer") lyr.GetLayerDefn().GetGeomFieldDefn(0).SetName( 'geom') # a bit border line but OK for Memory driver... field_defn = ogr.FieldDefn("strfield", ogr.OFTString) lyr.CreateField(field_defn) field_defn = ogr.FieldDefn("intfield", ogr.OFTInteger) lyr.CreateField(field_defn) lyr = ds.CreateLayer("my_layer2") field_defn = ogr.FieldDefn("strfield", ogr.OFTString) lyr.CreateField(field_defn) field_defn = ogr.FieldDefn("strfield2", ogr.OFTString) lyr.CreateField(field_defn) try: sql_lyr = ds.ExecuteSQL(None) gdaltest.post_reason('expected error on NULL query') return 'fail' except: pass queries = [ '', '1', '*', 'SELECT', "SELECT ' FROM my_layer", 'SELECT + FROM my_layer', 'SELECT (1 FROM my_layer', 'SELECT (1)) FROM my_layer', 'SELECT (1,) FROM my_layer', 'SELECT 1 + FROM my_layer', "SELECT 1 + 'a' FROM my_layer", 'SELECT 1 - FROM my_layer', 'SELECT 1 * FROM my_layer', 'SELECT 1 % FROM my_layer', 'SELECT *', 'SELECT * FROM', 'SELECT * FROM foo', 'SELECT FROM my_layer', 'SELECT FROM FROM my_layer', "SELECT ('strfield'", "SELECT 'strfield' +", "SELECT 'strfield' 'strfield'", "SELECT CONCAT('strfield')", 'SELECT foo(strfield) FROM my_layer', # Undefined function 'foo' used. 'SELECT strfield, FROM my_layer', 'SELECT strfield, foo FROM my_layer', 'SELECT strfield AS FROM my_layer', 'SELECT strfield AS 1 FROM my_layer', 'SELECT strfield AS strfield2 FROM', 'SELECT strfield + intfield FROM my_layer', 'SELECT CAST', 'SELECT CAST(', 'SELECT CAST(strfield', 'SELECT CAST(strfield AS', 'SELECT CAST(strfield AS foo', 'SELECT CAST(strfield AS foo)', 'SELECT CAST(strfield AS foo) FROM', 'SELECT CAST(strfield AS foo) FROM my_layer', 'SELECT CAST(strfield AS CHARACTER', 'SELECT CAST(strfield AS CHARACTER)', 'SELECT CAST(strfield AS CHARACTER) FROM', 'SELECT CAST(strfield AS CHARACTER) FROM foo', 'SELECT CAST(strfield AS CHARACTER(', 'SELECT CAST(strfield AS CHARACTER(2', 'SELECT CAST(strfield AS CHARACTER(2)', 'SELECT CAST(strfield AS CHARACTER(2))', 'SELECT CAST(strfield AS CHARACTER(2)) FROM', 'SELECT CAST(strfield AS CHARACTER(2)) FROM foo', 'SELECT CAST(strfield AS 1) FROM my_layer', 'SELECT * FROM my_layer WHERE', #'SELECT * FROM my_layer WHERE strfield', 'SELECT * FROM my_layer WHERE strfield = ', 'SELECT * FROM my_layer WHERE strfield = foo', "SELECT * FROM my_layer WHERE foo = 'a'", "SELECT * FROM my_layer WHERE strfield = 'a" "SELECT * FROM my_layer WHERE strfield = 'a' ORDER ", "SELECT * FROM my_layer WHERE strfield = 'a' ORDER BY", "SELECT * FROM my_layer WHERE strfield = 'a' ORDER BY foo", "SELECT * FROM my_layer WHERE strfield = 'a' ORDER BY strfield UNK", "SELECT * FROM my_layer ORDER BY geom", # Cannot use geometry field 'geom' in a ORDER BY clause "SELECT FOO(*) FROM my_layer", "SELECT FOO(*) AS bar FROM my_layer", "SELECT COUNT", "SELECT COUNT(", "SELECT COUNT() FROM my_layer", "SELECT COUNT(*", "SELECT COUNT(*)", "SELECT COUNT(*) FROM", "SELECT COUNT(*) AS foo FROM", "SELECT COUNT(* FROM my_layer", "SELECT COUNT(FOO intfield) FROM my_layer", "SELECT COUNT(DISTINCT intfield FROM my_layer", "SELECT COUNT(DISTINCT *) FROM my_layer", "SELECT FOO(DISTINCT intfield) FROM my_layer", "SELECT FOO(DISTINCT intfield) as foo FROM my_layer", "SELECT DISTINCT foo FROM my_layer", "SELECT DISTINCT foo AS 'id' 'id2' FROM", "SELECT DISTINCT foo AS id id2 FROM", "SELECT DISTINCT FROM my_layer", "SELECT DISTINCT strfield, COUNT(DISTINCT intfield) FROM my_layer", "SELECT MIN(intfield*2) FROM my_layer", "SELECT MIN(intfield,2) FROM my_layer", "SELECT MIN(foo) FROM my_layer", "SELECT MAX(foo) FROM my_layer", "SELECT SUM(foo) FROM my_layer", "SELECT AVG(foo) FROM my_layer", "SELECT MIN(strfield) FROM my_layer", "SELECT MAX(strfield) FROM my_layer", "SELECT SUM(strfield) FROM my_layer", "SELECT AVG(strfield) FROM my_layer", "SELECT AVG(intfield, intfield) FROM my_layer", "SELECT * FROM my_layer WHERE AVG(intfield) = 1", "SELECT * FROM 'foo' foo", "SELECT * FROM my_layer WHERE strfield =", "SELECT * FROM my_layer WHERE strfield = foo", "SELECT * FROM my_layer WHERE strfield = intfield", "SELECT * FROM my_layer WHERE strfield = 1", "SELECT * FROM my_layer WHERE strfield = '1' AND", #"SELECT * FROM my_layer WHERE 1 AND 2" , "SELECT * FROM my_layer WHERE strfield LIKE", "SELECT * FROM my_layer WHERE strfield LIKE 1", "SELECT * FROM my_layer WHERE strfield IS", "SELECT * FROM my_layer WHERE strfield IS NOT", "SELECT * FROM my_layer WHERE strfield IS foo", "SELECT * FROM my_layer WHERE strfield IS NOT foo", "SELECT * FROM my_layer WHERE (strfield IS NOT NULL", "SELECT * FROM my_layer WHERE strfield IN", "SELECT * FROM my_layer WHERE strfield IN(", "SELECT * FROM my_layer WHERE strfield IN()", "SELECT * FROM my_layer WHERE strfield IN('a'", "SELECT * FROM my_layer WHERE strfield IN('a',", "SELECT * FROM my_layer WHERE strfield IN('a','b'", "SELECT * FROM my_layer WHERE strfield IN('a','b'))", "SELECT * FROM my_layer LEFT", "SELECT * FROM my_layer LEFT JOIN", "SELECT * FROM my_layer LEFT JOIN foo", "SELECT * FROM my_layer LEFT JOIN foo ON my_layer.strfield = my_layer2.strfield", "SELECT * FROM my_layer LEFT JOIN my_layer2 ON my_layer.strfield = foo.strfield", "SELECT * FROM my_layer LEFT JOIN my_layer2 ON my_layer.strfield = my_layer2.foo", #"SELECT * FROM my_layer LEFT JOIN my_layer2 ON my_layer.strfield != my_layer2.strfield", "SELECT *, my_layer2. FROM my_layer LEFT JOIN my_layer2 ON my_layer.strfield = my_layer2.strfield", "SELECT *, my_layer2.foo FROM my_layer LEFT JOIN my_layer2 ON my_layer.strfield = my_layer2.strfield", "SELECT * FROM my_layer UNION", "SELECT * FROM my_layer UNION ALL", "SELECT * FROM my_layer UNION ALL SELECT", "SELECT * FROM my_layer UNION ALL SELECT *", "SELECT * FROM my_layer UNION ALL SELECT * FROM", ] for query in queries: gdal.ErrorReset() #print query gdal.PushErrorHandler('CPLQuietErrorHandler') sql_lyr = ds.ExecuteSQL(query) gdal.PopErrorHandler() if sql_lyr is not None: gdaltest.post_reason('expected None result on "%s"' % query) ds.ReleaseResultSet(sql_lyr) return 'fail' if gdal.GetLastErrorType() == 0: gdaltest.post_reason('expected error on "%s"' % query) return 'fail' ds = None return 'success'