Estoy escribiendo un programa en python que convierte archivos ráster utilizando gdal, y el uso de VRT como un formato intermedio. Una de las cosas que tengo que hacer es convertir las bandas entre diferentes formatos. Estoy bastante seguro de que usted hace esto con el uso de Pixel Funciones. Dado que python no tiene esta funcionalidad, tengo que usar C++ para esta parte. He utilizado el código de la VRT tutorial sitio web, pero no parece funcionar.
GDALAddDerivedBandPixelFunc("MyFirstFunction", TestFunction);
typedef CPLErr
(*GDALDerivedPixelFunc)(void **papoSources, int nSources, void *pData,
int nXSize, int nYSize,
GDALDataType eSrcType, GDALDataType eBufType,
int nPixelSpace, int nLineSpace);
Me implementar esa función con el código de http://www.gdal.org/gdal_vrttut.html, pero no parece estar funcionando. Estoy llamando gdal_translate para hacer el proceso de conversión, pero parece que el píxel en función no de la estancia. El addpixelfunc devuelve un resultado de 0. Hay alguna manera para escribir un GDAL extensión para que esta función sea permanente?
Actualización:
He sido capaz de crear correctamente un píxel de la función y hacer que funcione si puedo convertir manualmente el archivo en el mismo programa de C++ como la GDALAddDerivedBandPixelFunc reside, sin embargo todavía estoy interesado en cómo podría hacer esto de manera permanente. Aunque puede no ser necesario ya que podría permitir al usuario cambiar algunos números en la función.