[gdal-dev] creating .VRT files with the python bindings
Even Rouault
even.rouault at mines-paris.org
Tue Feb 1 17:04:39 EST 2011
Le mardi 01 février 2011 22:57:10, Ricardo Filipe Soares Garcia da a écrit :
> Hi Even, list
>
> Since I don't have a chance to test gdal 1.8.0 at my machine, I
> decided to apply an (ugly) hack to alter the VRT file after it is
> created, changing all the 'relativeToVRT' values to '0'. It is working
> fine.
I imagine ubuntugis will be updated at some point to use GDAL 1.8.0
>
> About my other question:
>
> - Is it possible to use derived bands via python bindings? I guess
> I'll have to write a pixel function and somehow register it with
> gdal...
I don't think it is possible via python bindings. You probably need to use C++
for that.
>
>
> My HDF5 files have a scaling factor that I'd like to correct through
> the VRT. I guess this is one of the points in using derived bands. If
> it can't be done with a derived band, is there other option?
Yes, instead of adding a <SimpleSource> use a <ComplexSource> than is an
extension of <SimpleSource> that can have a <ScaleRatio> sub element. See
http://www.gdal.org/gdal_vrttut.html
>
> Thanks
>
>
> On Tue, Feb 1, 2011 at 6:50 PM, Even Rouault
>
> <even.rouault at mines-paris.org> wrote:
> > Ricardo,
> >
> > Basically the XML you pass with SetMetadataItem() is deserialized and
> > serialized again, but the relativeToVRT element isn't part of the
> > internal model of the VRT driver and is "recomputed" at serialization
> > time, so this explains why it can change behind your back.
> >
> > I think however that this has been fixed in GDAL 1.8.0 in
> > http://trac.osgeo.org/gdal/changeset/20939
> >
> > Best regards,
> >
> > Even
> >
> > Le mardi 01 février 2011 02:27:36, Ricardo Filipe Soares Garcia da a écrit
:
> >> Hello list
> >> I am trying to create a .VRT file to mosaic a bunch of HDF5 files. It
> >> is starting to work, except for the fact that I can't seem to set the
> >> relativeToVRT attribute of the SourceFilename tag to "0".
> >>
> >> I've been adapting the online vrt tutorial[1] from C++ to Python. The
> >> tutorial says that relativeToVRT will default to "0", but I'm getting
> >> the exact opposite. It is defaulting to "1", and even if I try to set
> >> it to "0" explicitly when using the SetMetadataItem method, it will
> >> still be saved as a "1". I have included an excerpt of the code at the
> >> end of this message. I'll post the rest of it if it is relevant.
> >>
> >> After saving the file, I can open a text editor and replace all the
> >> "1" with "0" and this fixes it, allowing me to get the desired
> >> visualization (on QGIS).
> >>
> >> Am I doing something wrong here? Or is this possibly a bug? I'm using
> >> gdal 1.7.3, as available on the ubuntugis-unstable repository.
> >>
> >>
> >> Another question: is it possible to use derived bands via python
> >> bindings? I guess I'll have to write a pixel function and somehow
> >> register it with gdal...
> >>
> >> [1] - http://www.gdal.org/gdal_vrttut.html
> >>
> >> [2] - python code follows:
> >>
> >>
> >> def get_xml_source(fileName, dataSet, xSize, ySize, dType, blockX,
> >> blockY, sXOff, sYOff, sXSize, sYSize, dXOff,
> >> dYOff, dXSize, dYSize, relToVRT=0, band=1):
> >> template = """
> >> <SimpleSource>
> >> <SourceFilename relativeToVRT='%i'>HDF5:%s://%s</SourceFilename>
> >> <SourceBand>%i</SourceBand>
> >> <SourceProperties RasterXSize='%i' RasterYSize='%i' DataType='%s'
> >> BlockXSize='%i' BlockYSize='%i' />
> >> <SrcRect xOff='%i' yOff='%i' xSize='%i' ySize='%i' />
> >> <DstRect xOff='%i' yOff='%i' xSize='%i' ySize='%i' />
> >> </SimpleSource>
> >> """
> >> return template % (relToVRT, fileName, dataSet, band, xSize, ySize,
> >> dType, blockX, blockY, sXOff, sYOff, sXSize,
> >> sYSize, dXOff, dYOff, dXSize, dYSize)
> >>
> >> .... somewhere down the code...
> >>
> >> xmlSource = get_xml_source(lit, dataSet, xResolution, yResolution,
> >> "Int16", blockXSize, blockYSize, 0,
> >> 0, xResolution, yResolution, xOff, yOff, xResolution, yResolution)
> >> outBand.SetMetadataItem("teste", xmlSource, "new_vrt_sources")
More information about the gdal-dev
mailing list