[gdal-dev] module of a complex dataset

Antonio Valentino antonio.valentino at tiscali.it
Mon Sep 8 12:26:40 EDT 2008


Il giorno Tue, 02 Sep 2008 10:49:02 -0400
Frank Warmerdam <warmerdam at pobox.com> ha scritto:

> Antonio Valentino wrote:
> > I hoped there was a way to use derived bands described in
> > http://www.gdal.org/gdal_vrttut.html
> > 
> > <VRTRasterBand dataType="Float32" band="1"
> > subClass="VRTDerivedRasterBand">>
> >   <Description>Magnitude</Description>
> >   <PixelFunctionType>MyFirstFunction</PixelFunctionType>
> >   <SourceTransferType>"CFloat64"</SourceTransferType>
> > 
> > ... but is seems that this approach requires C++ coding
> 
> Antonio,
> 
> Ah, I hadn't thought about that approach, but indeed it still
> requires C++ coding.
> 
> >> or the commandline utilities. But I have added a small sample
> >> script doing this with numpy and python if you would be interested
> >> in working from that.
> >>
> >>    http://trac.osgeo.org/gdal/browser/trunk/gdal/swig/python/samples/magphase.py
> > 
> > thank you Frank.
> > Right now I'm using a similar python script:
> 
> Ah, well you are considerably ahead of me in sophistication
> here already.
> 
> > I think that it would be nice to have a base set of *PixelFunctions*
> > (mod, phase, real, imag, sum, diff, etc.) bundled with the GDAL
> > library in order to allow the user to cook its own virtual datasets
> > and then use standard GDAL tools for further processing.
> 
> This is a plausible idea, but it is not entirely obvious what would
> be sufficiently useful to justify inclusion.  A carefully crafted
> patch, including updates to docs, in this direction would likely be
> well received.

Hi Frank,
please find attached the patch against svn r15340 and a small test
program (using gdal_translate).
The patch provides 6 pixel functions:

- "module": extract module from complex datasets
- "phase": extract phase from complex datasets
- "real": extract real part from complex datasets (OK this is redundant)
- "imag": extract imaginary part from complex datasets
- "sum": sum 2 or more datasets
- "diff": computes the difference between 2 datasets (dataset1-dataset2)

and a function for registering them all:

GDALRegisterDefaultPixelFunc();

to be used at the beginning of GDAL utilities code just like
GDALAllRegister:

--- apps/gdal_translate.cpp	(revisione 15340)
+++ apps/gdal_translate.cpp	(copia locale)
@@ -133,6 +133,7 @@
 /*      command
options.                                                */ /*
-------------------------------------------------------------------- */
GDALAllRegister();
+    GDALRegisterDefaultPixelFunc();
     argc = GDALGeneralCmdLineProcessor( argc, &argv, 0 );
     if( argc < 1 )
         exit( -argc );

Note that I didn't updated bindings related code.

Virtual files in the test directory could be used as examples in the
vrt tutorial if you like.

Best regards

-- 
Antonio Valentino
-------------- next part --------------
A non-text attachment was scrubbed...
Name: pixfun-patch-20080908.tar.gz
Type: application/x-gzip
Size: 30248 bytes
Desc: not available
Url : http://lists.osgeo.org/pipermail/gdal-dev/attachments/20080908/e7f19fe6/pixfun-patch-20080908.tar-0001.gz


More information about the gdal-dev mailing list