示例#1
0
def vrtrawlink_5():

    driver = gdal.GetDriverByName("VRT")
    ds = driver.Create('tmp/rawlink.vrt', 31, 35, 0)

    # Add a new band pointing to this bogus file.
    options = [
        'subClass=VRTRawRasterBand', 'SourceFilename=tmp/rawlink.dat',
        'relativeToVRT=1', 'ImageOffset=100', 'PixelOffset=3', 'LineOffset=93',
        'ByteOrder=MSB'
    ]

    result = ds.AddBand(gdal.GDT_UInt16, options)
    if result != gdal.CE_None:
        gdaltest.post_reason('AddBand() returned error code')
        return 'fail'

    gdaltest.rawlink_ds.FlushCache()

    # Close and reopen to ensure we are getting data from disk.
    ds = None
    xmlstring = open('tmp/rawlink.vrt').read()

    node = gdal.ParseXMLString(xmlstring)
    node = _xmlsearch(node, gdal.CXT_Element, 'VRTRasterBand')
    node = _xmlsearch(node, gdal.CXT_Element, 'SourceFilename')
    node = _xmlsearch(node, gdal.CXT_Attribute, 'relativeToVRT')

    if node is None or node[2][1] != "1":
        gdaltest.post_reason('incorrect relativeToVRT value')
        return 'fail'

    return 'success'
示例#2
0
def vrtderived_2():
    filename = 'tmp/derived.vrt'
    vrt_ds = gdal.GetDriverByName('VRT').Create(filename, 50, 50, 0)

    options = [
        'subClass=VRTDerivedRasterBand',
        'PixelFunctionType=dummy',
    ]
    vrt_ds.AddBand(gdal.GDT_Byte, options)

    simpleSourceXML = '''    <SimpleSource>
      <SourceFilename>data/byte.tif</SourceFilename>
      <SourceBand>1</SourceBand>
    </SimpleSource>'''

    md = {}
    md['source_0'] = simpleSourceXML

    vrt_ds.GetRasterBand(1).SetMetadata(md, 'vrt_sources')
    vrt_ds = None

    xmlstring = open(filename).read()
    gdal.Unlink(filename)

    node = gdal.ParseXMLString(xmlstring)
    node = _xmlsearch(node, gdal.CXT_Element, 'VRTRasterBand')
    node = _xmlsearch(node, gdal.CXT_Element, 'PixelFunctionType')
    node = _xmlsearch(node, gdal.CXT_Text, 'dummy')
    if node is None:
        gdaltest.post_reason('incorrect PixelFunctionType value')
        return 'fail'

    return 'success'
示例#3
0
def minixml_3():

    fp = open('data/doctype.xml', 'r')
    text = fp.read()
    tree = gdal.ParseXMLString(text)

    if tree[0] != gdal.CXT_Element:
        gdaltest.post_reason('wrong node type.')
        return 'fail'

    # Check <chapter> element
    node = tree[6]

    if node[0] != gdal.CXT_Element:
        gdaltest.post_reason('wrong node type.')
        return 'fail'

    if node[1] != 'chapter':
        gdaltest.post_reason('Wrong element name')
        return 'fail'

    if len(node) != 7:
        gdaltest.post_reason('Wrong number of children.')
        return 'fail'

    # Check <chapter><title> subelement
    subnode = node[2]

    if subnode[0] != gdal.CXT_Element:
        gdaltest.post_reason('wrong node type.')
        return 'fail'

    if subnode[1] != 'title':
        gdaltest.post_reason('Wrong element name')
        return 'fail'

    if len(subnode) != 3:
        gdaltest.post_reason('Wrong number of children.')
        return 'fail'

    if subnode[2][1] != 'Chapter 1':
        gdaltest.post_reason('Wrong element content.')
        return 'fail'

    # Check fist <chapter><para> subelement
    subnode = node[3]

    if subnode[0] != gdal.CXT_Element:
        gdaltest.post_reason('wrong node type.')
        return 'fail'

    if subnode[1] != 'para':
        gdaltest.post_reason('Wrong element name')
        return 'fail'

    if len(subnode) != 3:
        gdaltest.post_reason('Wrong number of children.')
        return 'fail'

    return 'success'
示例#4
0
def minixml_4():

    xml = """<?xml encoding="utf-8"?>\n<foo />\n"""
    got_xml = gdal.SerializeXMLTree(gdal.ParseXMLString(xml))
    if xml != got_xml:
        gdaltest.post_reason('serialize xml tree failed.')
        print(got_xml)
        return 'fail'

    return 'success'
示例#5
0
def vrtderived_1():
    filename = 'tmp/derived.vrt'
    vrt_ds = gdal.GetDriverByName('VRT').Create(filename, 50, 50, 0)

    options = [
        'subClass=VRTDerivedRasterBand',
    ]
    vrt_ds.AddBand(gdal.GDT_Byte, options)

    simpleSourceXML = '''    <SimpleSource>
      <SourceFilename>data/byte.tif</SourceFilename>
      <SourceBand>1</SourceBand>
    </SimpleSource>'''

    md = {}
    md['source_0'] = simpleSourceXML

    vrt_ds.GetRasterBand(1).SetMetadata(md, 'vrt_sources')
    md_read = vrt_ds.GetRasterBand(1).GetMetadata('vrt_sources')
    vrt_ds = None

    expected_md_read = '<SimpleSource>\n  <SourceFilename relativeToVRT="0">data/byte.tif</SourceFilename>\n  <SourceBand>1</SourceBand>\n  <SourceProperties RasterXSize="20" RasterYSize="20" DataType="Byte" BlockXSize="20" BlockYSize="20" />\n</SimpleSource>\n'
    if md_read['source_0'] != expected_md_read:
        gdaltest.post_reason('fail')
        print(md_read['source_0'])
        return 'fail'

    xmlstring = open(filename).read()
    gdal.Unlink(filename)

    node = gdal.ParseXMLString(xmlstring)
    node = _xmlsearch(node, gdal.CXT_Element, 'VRTRasterBand')
    node = _xmlsearch(node, gdal.CXT_Attribute, 'subClass')
    node = _xmlsearch(node, gdal.CXT_Text, 'VRTDerivedRasterBand')
    if node is None:
        gdaltest.post_reason('invalid subclass')
        return 'fail'

    return 'success'
示例#6
0
def minixml_1():

    tree = gdal.ParseXMLString(
        '<TestDoc style="123"><sub1/><sub2>abc</sub2></TestDoc>')

    if tree[0] != gdal.CXT_Element:
        gdaltest.post_reason('wrong node type.')
        return 'fail'

    if tree[1] != 'TestDoc':
        gdaltest.post_reason('Wrong element name')
        return 'fail'

    if len(tree) != 5:
        gdaltest.post_reason('Wrong number of children.')
        return 'fail'

    # Check style attribute
    node = tree[2]

    if node[0] != gdal.CXT_Attribute:
        gdaltest.post_reason('wrong node type.')
        return 'fail'

    if node[1] != 'style':
        gdaltest.post_reason('Wrong element name')
        return 'fail'

    if len(node) != 3:
        gdaltest.post_reason('Wrong number of children.')
        return 'fail'

    if node[2][1] != '123':
        gdaltest.post_reason('Wrong element content.')
        return 'fail'

    # Check <sub1> element
    node = tree[3]

    if node[0] != gdal.CXT_Element:
        gdaltest.post_reason('wrong node type.')
        return 'fail'

    if node[1] != 'sub1':
        gdaltest.post_reason('Wrong element name')
        return 'fail'

    if len(node) != 2:
        gdaltest.post_reason('Wrong number of children.')
        return 'fail'

    # Check <sub2> element
    node = tree[4]

    if node[0] != gdal.CXT_Element:
        gdaltest.post_reason('wrong node type.')
        return 'fail'

    if node[1] != 'sub2':
        gdaltest.post_reason('Wrong element name')
        return 'fail'

    if len(node) != 3:
        gdaltest.post_reason('Wrong number of children.')
        return 'fail'

    if node[2][1] != 'abc':
        gdaltest.post_reason('Wrong element content.')
        return 'fail'

    return 'success'