Hello Frank, I am trying to test my implementation using GDAL (GDALExtractRPCInfo), but I do not get any RPC info from my TIFF file. I have pasted below the code I have used to set/read and test the RPCCoefficientTag managment.
I am involved in a ESA project and my clients used to open the results with a propietary software, tipically ENVI. I have the specification to fill RPCCoefficientTag with the same structure defined by GDAL but I do not know if ENVI is able to open this metadata. //-------------------------------------------------------------------------------------------------------------------- #define TIFFTAG_RPCCOEFFICIENT 50844 static TIFFExtendProc _ParentExtender = NULL; static void GTiffTagExtender(TIFF *tif) { static const TIFFFieldInfo xtiffFieldInfo[] = { { TIFFTAG_RPCCOEFFICIENT, -1,-1, TIFF_DOUBLE, FIELD_CUSTOM, TRUE, TRUE, (char*) "RPCCoefficient" } }; if (_ParentExtender) (*_ParentExtender)(tif); TIFFMergeFieldInfo( tif, xtiffFieldInfo, sizeof(xtiffFieldInfo) / sizeof(xtiffFieldInfo[0]) ); } void SetTAG(){ TIFF * tiff = TIFFOpen("/home/jjmf/sample_images/OutputTIFF/input_tiff_2.tif", "r+"); if (!tiff) { cout << "Unable to open " << endl; exit(0); } double adfRPCTag[92]; adfRPCTag[0] = -1.0; // Error Bias adfRPCTag[1] = -1.0; // Error Random adfRPCTag[2] = 1.231; adfRPCTag[3] = 1.231; adfRPCTag[4] = 11.231; adfRPCTag[5] = 12.231; adfRPCTag[6] = 41.231; adfRPCTag[7] = 17.231; adfRPCTag[8] = 16.231; adfRPCTag[9] = 16.231; adfRPCTag[10] = 16.231; adfRPCTag[11] = 16.231; for (int i = 0; i < 20; i++) { adfRPCTag[12+i] = 1.25; } for (int j = 0; j < 20; j++) { adfRPCTag[32+j] = 12.25; } for (int k = 0; k < 20; k++) { adfRPCTag[52+k] = 13.25; } for (int s = 0; s < 20; s++) { adfRPCTag[72+s] = 15.25; } TIFFSetField(tiff, TIFFTAG_RPCCOEFFICIENT, 92 ,adfRPCTag); TIFFRewriteDirectory(tiff); TIFFClose(tiff); } void ReadTAG(){ TIFF * tiff = TIFFOpen("/home/jjmf/sample_images/OutputTIFF/input_tiff_2.tif", "r"); uint16 nCount; if (!tiff) { cout << "Unable to open " << endl; exit(0); } double *prueba; TIFFGetField(tiff, TIFFTAG_RPCCOEFFICIENT, &nCount, &prueba ); for(uint16 i =0 ; i< nCount ; i++) { cout << prueba[i] <<endl; } TIFFClose(tiff); } int gdalRead(){ GDALAllRegister(); GDALDataset *m_poDataset; const char * pszSrcFilename = "/home/jjmf/sample_images/OutputTIFF/input_tiff_2.tif"; m_poDataset = (GDALDataset *) GDALOpen( pszSrcFilename, GA_ReadOnly ); if( m_poDataset == NULL ) { cout << "Unable to open " << pszSrcFilename << endl; return 0; } GDALRPCInfo sRPC; char ** Metadata= m_poDataset->GetMetadata(NULL); if(GDALExtractRPCInfo(Metadata, &sRPC)) { cout << "Got RPCs Info" <<endl; }else{ cout << "Not RPCs Info" <<endl; } return 1; } int main(int argc, char** argv) { _ParentExtender = TIFFSetTagExtender(GTiffTagExtender); SetTAG(); ReadTAG(); gdalRead(); return 0; } //-------------------------------------------------------------------------------------------------------------------- Many thanks, Jorge 2011/5/24 Frank Warmerdam <warmer...@pobox.com> > On 11-05-24 12:25 PM, Jorge Martin wrote: > >> Many Thanks Frank, I have insert the RPCCoeffcientTag to the file. >> >> Is any comercial software that could read this TAG? In order >> to >> check the implementation I need open the file with a comercial software. I >> have >> tried with ENVI but it does not recognize the format. >> > > Jorge, > > You can test with GDAL. It is commercial software since you can purchase > commercial support for it from folks like me. Or perhaps you mean > proprietary? Or perhaps you just mean respectible? > > > Best regards, > -- > > ---------------------------------------+-------------------------------------- > I set the clouds in motion - turn up | Frank Warmerdam, > warmer...@pobox.com > light and sound - activate the windows | http://pobox.com/~warmerdam > and watch the world go round - Rush | Geospatial Programmer for Rent > >
_______________________________________________ gdal-dev mailing list gdal-dev@lists.osgeo.org http://lists.osgeo.org/mailman/listinfo/gdal-dev