[gdal-dev] GCPs in MEM driver, can we?

Joaquim Luis jluis at ualg.pt
Sun Dec 7 17:15:51 EST 2008


Even Rouault wrote:
> Le Sunday 07 December 2008 21:30:17 Joaquim Luis, vous avez écrit :
>> Hi,
>>
>> I have my gdalwarp MEX that works reasonably into converting between
>> projection systems. And now I would like to have it working to do warping
>> with GPS, but after hours of struggling with it, I don't advance a bit. The
>> GCPs are alway ignored.
>>
>>
>> I do create the GCPs like this
>>
>> 	pasGCPs = (GDAL_GCP *) CPLRealloc( pasGCPs, sizeof(GDAL_GCP) * nGCPCount
>> ); GDALInitGCPs( 1, pasGCPs + nGCPCount - 1 );
>> 	for (i = 0; i < nGCPCount; i++) {
>> 		pasGCPs[i].dfGCPPixel = ptr_d[i];
>> 		pasGCPs[i].dfGCPLine = ptr_d[i+nGCPCount];
>> 		pasGCPs[i].dfGCPX = ptr_d[i+2*nGCPCount];
>> 		pasGCPs[i].dfGCPY = ptr_d[i+3*nGCPCount];
>> 		pasGCPs[i].dfGCPZ = 0;
>> 	}
>>
>>
>> Than I set them
>>
>> 	GDALSetGCPs( hSrcDS, nGCPCount, pasGCPs, "" )
> 
> Why don't you pass pszSrcWKT instead of "" ? But I'm not sure that it's really 
> your issue as you specify it below.

Rouault,

It makes no difference. I tried everything

>> and create a transformer
>>
>> 	hTransformArg =
>>      		GDALCreateGenImgProjTransformer( hSrcDS, pszSrcWKT, NULL, pszDstWKT,
>> 						 nGCPCount == 0 ? FALSE : TRUE, 0, 1 );
>>
> 
> I think your way of creating hTransformArg is correct when being used by  
> GDALSuggestedWarpOutput2, but when doing the really warp, you should pass 
> hDstDS instead of NULL as the third argument. See apps/gdalwarp.cpp


Again, it makes no difference if use NULL or hDstDS. Besides, I use null because
on an older version of gdalwarp upon which my MEX is based there was this comment


	/* Create a transformer that maps from source pixel/line coordinates
	   to destination georeferenced coordinates (not destination pixel line)
	   We do that by omitting the destination dataset handle (setting it to NULL). */




More information about the gdal-dev mailing list