[gdal-dev] Computing a geo-transform with gdalwarp from a set of GCPs also rectifies the input images

Andrew C Aitchison andrew at aitchison.me.uk
Thu Mar 25 08:56:39 PDT 2021


On Tue, 23 Mar 2021, Bullinger, Sebastian wrote:

> Dear gdal community,
>
> I'm currently working with a set of satellite images that are geo-registered with a set of GCPs. To compute a geo-transform from the GCPs, I've been using gdalwarp with:
>
> gdalwarp -of GTiff path/to/original/file path/to/warped/file
>
> While "gdalwarp" correctly computes a transformation from the GCPs, at the same it also performs some kind of rectification / north-up image transformation. I'm not sure about the applied operation.
>
> Presumably, the reason for this is that the original GCPs reflect a transformation with skew factors.
> See the following transformations of the original and the warped image.
>
>>>> import gdal
>>>> dataset = gdal.Open("path/to/original/file")
>>>> print(gdal.GCPsToGeoTransform(dataset.GetGCPs()))
> (-58.57294039342205, -3.991598267026281e-06, 0.0, -34.451175177186684, -3.6492767328575985e-07, 3.1987810722132996e-06)
>
>>>> import gdal
>>>> dataset = gdal.Open("path/to/warped/file")
>>>> print(dataset.GetGeoTransform())
> (-58.577917916461026, 3.435846284510554e-06, 0.0, -34.44693359348493, 0.0, -3.435846284510554e-06)
>
> The "rectification" result is very convenient, since it allows to use the images with an existing satellite image segmentation pipeline (which tiles the satellite images using geo-tiles)
> However, in order to overlay the segmentations (performed on the "rectified" images) with the original images, I need some information about the transformation applied during "gdalwarp".
>
> I've searched the documentation for more information - unfortunately without success.
> For example, parameters like "-novshiftgrid" do not affect this transformation.
>
> It would be very helpful, if someone could shed some light on the used "rectification".
> What kind of operation is applied? What would be the correct term to search for?
> Is it "only" a decomposition of the transform? Or does "gdalwarp" something else too?
> Is there a possibility to access this information, while using "gdalwarp"? (Or can this operation also be done by hand?)
> Does GDAL contain any functions to invert this "rectification" step - given the corresponding transformation used by "gdalwarp"?

I don't know the answers.

I *guess* that the rectification is not deliberate, but simply that the
output rectangle is aligned with the (target) spatial reference system 
(SRS).
Have you noticed whether the output image has no-data pixels at the 
edges, or crops the original ? I would expect it to do a little of each.

-- 
Andrew C. Aitchison					Kendal, UK
 			andrew at aitchison.me.uk


More information about the gdal-dev mailing list