[gdal-dev] Need help with geometric correction

RSyaoxin RSyaoxin at hotmail.com
Thu Jun 30 10:20:57 EDT 2011


Hi,all. 
     I want to correct the envisat N1 image, the gcps I used are come from
the image.This image haven't geo-referenced information and projection,but
it's GCPs have geo-referenced information.However I can not get correct
results,the corrected image pixels are all zero.Here is my code: 

        GDALAllRegister(); 

        GDALDriverH hDriver; 
        GDALDataType eDT; 
        GDALDatasetH hDstDS; 
        GDALDatasetH hSrcDS; 
        
       
hSrcDS=GDALOpen("D:\\Users\\ASA_IMP_1PNUPA20070408_135835_000000162057_00082_26689_3974.N1",GA_ReadOnly); 
        CPLAssert(hSrcDS!=NULL); 

        int nGcpCount=GDALGetGCPCount(hSrcDS); 
        const GDAL_GCP *pGCPs=GDALGetGCPs(hSrcDS); 

        GDALWarpOptions *psWarpOptions = GDALCreateWarpOptions(); 
       
psWarpOptions->pTransformerArg=GDALCreateGCPTransformer(nGcpCount,pGCPs,1,0); 
        psWarpOptions->pfnTransformer=GDALGCPTransform; 
        psWarpOptions->eResampleAlg=GRA_NearestNeighbour; 
        psWarpOptions->hSrcDS=hSrcDS; 

        psWarpOptions->nBandCount=0; 
        psWarpOptions->pfnProgress=GDALTermProgress; 
        double adfDstGeoTransform[6];	
        int nPixels=0, nLines=0; 
        GDALSuggestedWarpOutput(psWarpOptions->hSrcDS, GDALGCPTransform,	
                psWarpOptions->pTransformerArg, adfDstGeoTransform,
&nPixels, &nLines); 
        
        hDriver=GDALGetDriverByName("GTiff"); 
        CPLAssert(hDriver!=NULL); 
        eDT=GDALGetRasterDataType(GDALGetRasterBand(hSrcDS,1)); 
       
hDstDS=GDALCreate(hDriver,"D:\\Users\\warp.tif",nPixels,nLines,GDALGetRasterCount(hSrcDS),eDT,NULL); 
        CPLAssert(hDstDS!=NULL); 
        
        psWarpOptions->hDstDS=hDstDS; 

        char *pszDstWKT=NULL; 
        OGRSpatialReference oSRS; 
        oSRS.SetUTM(20,TRUE); 
        oSRS.SetWellKnownGeogCS("WGS84");	
        oSRS.exportToWkt(&pszDstWKT); 

        GDALSetProjection(hDstDS,pszDstWKT); 
        GDALSetGeoTransform(hDstDS,adfDstGeoTransform); 
        CPLFree(pszDstWKT); 
        
        GDALWarpOperation oOperation; 
        oOperation.Initialize(psWarpOptions); 
        oOperation.ChunkAndWarpImage(0,0,nPixels,nLines);	
        GDALDestroyGenImgProjTransformer(psWarpOptions->pTransformerArg); 
        GDALDestroyWarpOptions(psWarpOptions); 

        GDALClose(hDstDS); 
        GDALClose(hSrcDS); 

That's Why?I turn to Anybody who once did this job for some advice. Thank
you! 
Kind regards. 

--
View this message in context: http://osgeo-org.1803224.n2.nabble.com/Need-help-with-geometric-correction-tp6533456p6533456.html
Sent from the GDAL - Dev mailing list archive at Nabble.com.


More information about the gdal-dev mailing list