[gdal-dev] Warping onto an image with only GCPs with Python
anton.korosov at nersc.no
Thu Jan 12 03:23:05 EST 2012
Some time ago I've asked about problems with gdalwarp (the e-mails
below). I tried to utilize Python binding instead but got the same
results. This brief script overlays the Europe map (GeoTIFF with
geotransform) onto a MERIS images (PDS file with GCPs). But the result
looks wrong again - the map is very small and apperas in the upper left
corner (attached file).
geotransformfile = 'europe.tif'
outfile = 'colocated.tif'
# open input datasets
src_ds = gdal.Open(geotransformfile)
dst_ds = gdal.Open(GCPfile)
# create writable copy of the destination image
driver = gdal.GetDriverByName( "GTiff" )
out_ds = driver.CreateCopy(outfile, dst_ds, 0 )
# reproject onto destination image with GCPs
Can you please confirm that this is a bug in GDAL? If so I will issue a
Thank you in advance!
PS. If the GCPs in the destination image are replaced with a
GeoTransfrom generated using the gdal.GCPsToGeoTransform() function, the
result looks much better but the image is still rather distorted. Which
is understandable because curvature of a MERIS images (given by GCPs)
cannot be fully explained by few numbers in the geotransform.
On 12/16/2011 03:56 PM, Anton Korosov wrote:
> I'm not sure but probably my question is related to the one below.
> I'm trying to mosaic one MODIS images onto another with GDAL:
> -b 1 /data/modis1.tif
> -b 1 /data/modis2.tif
> gdalwarp modis1.tif modis2.tif
> Bu the results looks weird - the first image is on top of the second one
> but it is very small, distorted and in the top-left corner (though they
> cover approximately the same area).
> Do I understand right that such operation would work only when the
> target image georeference is defined by GeoTransform and not by GCPs?
> Can I also ask if it is a big work to include ability of GDAL to warp
> onto grid with GCPs (or RPC or geolocation array) ? And if it is planned
> in some future?
> Thank you!
> On 12/15/2011 03:47 PM, Knut-Frode Dagestad wrote:
>> Hróbjartur Þorsteinsson explained to me a near-hidden feature of GDAL,
>> namely to reproject one image onto the coverage of another.
>> Given two images:
>> Then an empty image can be created from image A with e.g.
>> $ gdal_translate -ot Float32 -scale 0 0 999 999 -a_nodata 999
>> imageA.tiff domainA.tiff
>> And then imageB can be warped onto the extent of this image simply with:
>> $ gdalwarp imageB.tiff domainA.tiff
>> domainA.tiff will then contain the data from imageB, exactly co-located
>> with imageA.
>> The problem is that this only works when imageA contains a geotransform,
>> and not when it contains only GCPs.
>> So my question is:
>> Is there any workaround to warp data from one image onto another image
>> which is geolocated by GCPs only?
>> With the -to option of gdalwarp it is possible to pass some parameters
>> to GDALCreateGenImgProjTransformer2(). In the documentation of this
>> function I find the following option:
>> "METHOD: may have a value which is one of GEOTRANSFORM, GCP_POLYNOMIAL,
>> GCP_TPS, GEOLOC_ARRAY, RPC to force only one geolocation method to be
>> considered on the source dataset."
>> But there is no corresponding option to force use of GCP_POLYNOMIAL for
>> the *destination* dataset. I guess this is a bad sign?
>> Thank you for any help!
>> gdal-dev mailing list
>> gdal-dev at lists.osgeo.org
> gdal-dev mailing list
> gdal-dev at lists.osgeo.org
-------------- next part --------------
A non-text attachment was scrubbed...
Size: 19680 bytes
Desc: not available
Url : http://lists.osgeo.org/pipermail/gdal-dev/attachments/20120112/0c8aeaad/colocated-0001.png
More information about the gdal-dev