Exemple #1
0
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)
Exemple #2
0
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'
Exemple #3
0
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'
Exemple #4
0
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'
Exemple #5
0
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'
Exemple #6
0
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'
Exemple #7
0
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 }
Exemple #9
0
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))
Exemple #11
0
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}
Exemple #13
0
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'
Exemple #14
0
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 }
Exemple #16
0
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() == ''))
Exemple #17
0
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
Exemple #18
0
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
Exemple #19
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)
Exemple #20
0
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
Exemple #21
0
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)
Exemple #23
0
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()
Exemple #24
0
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'
Exemple #25
0
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'
Exemple #26
0
    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))
Exemple #27
0
        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}
Exemple #28
0
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()
Exemple #29
0
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'