[gdal-dev] GDALCreateApproxTransformer and error threshold ramifications question

Martin Chapman mchapman at hyperacktive.com
Mon Jun 7 12:03:03 PDT 2021



Thanks for the explanation in the second paragraph of your response.  My
colleagues are probably gonna give me grief because the warp operation could
have been much faster all these years, but hey, better late than never. J
It sounds like using the approximate warp will work great then.  I’m


I’m not sure what is slowing down the warp in the new version, but I should
say that lightly because we only ran some simple tests and I may not be
exactly correct about that.  It wasn’t really gdalwarp that was slower, it
was my code that uses the warp api, so it could just be something I am
doing.  What is clear though, is that using the approx transformer with an
error threshold greater than 0.0 is significantly faster, which is probably
no surprise to you.  We were comparing gdalwarp v1.9 to gdalwarp v3.x
(latest) specifying –et as 0.0.  We were warping a geotiff in some UTM zone
to WGS84.  When we removed the –et parameter the run times were way faster.
I will look into it further and let you know if I find anything.


Thanks again!


Best regards,

Martin Chapman


From: Even Rouault [mailto:even.rouault at spatialys.com] 
Sent: Monday, June 7, 2021 11:07 AM
To: Martin Chapman; gdal-dev at lists.osgeo.org
Subject: Re: [gdal-dev] GDALCreateApproxTransformer and error threshold
ramifications question



it would be interesting if you could identify which change caused the slow
down you notice. Nothing jumps to mind. git bisect could help (assuming this
is only GDAL related, and not due to changes in PROJ versions)

The value of the error threshold is in pixels. So 0.125 means you accept up
to a 1/8th pixel error, so yes, that's already quite high quality. An error
threshold of 0 is rarely needed, unless you use RPC ortho-rectification with
a DEM, especially in mountainous regions.


Le 07/06/2021 à 18:19, Martin Chapman a écrit :

Even, Frank or anyone in the know about gdal warp API,


I have been using the GDALCreateGenImgProjTransformer function to create my
transformer arg in the warp options for the ChunkAndWarpImage function with
an error threshold set to 0.0 for a while now and everything works great.  I
did this initially because I wanted the best possible warp results.
Recently, I noticed that the performance of that operation had slowed down
significantly in the newer versions and I am assuming that’s because the
process has been improved to be more rigorous and produce better results


Anyhow, I was looking at how I could speed up the process without
sacrificing too much accuracy and I noticed that the default behavior in the
gdalwarp utility uses an error threshold of 0.125 and the
GDALCreateApproxTransformer function to create the transformer arg.  I read
the documentation and I think I understand the ramifications of doing so,
but I was hoping somebody could give me a more detailed explanation of how
much the warp results will be affected by using the
GDALCreateApproxTransformer function with a threshold of 0.125.  I am
assuming it must not be that bad because Frank choose that value as the
default value years ago.  I noticed it really improves the performance but I
didn’t want to make the conversion without knowing exactly what I am


I am assuming with an error threshold of 0.0 it is a per pixel warp
operation and if the threshold is greater than 0.0 and the
GDALCreateApproxTransformer function is used it ends up being a grid warp.
Is that correct?  Does the threshold mean that the warped pixel may be off
by one pixel in the results or could it be worse than that? 


Thanks in advance for any light you can shed on the subject!


Best regards,

Martin Chapman  

gdal-dev mailing list
gdal-dev at lists.osgeo.org

My software is free, but my time generally not.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/gdal-dev/attachments/20210607/efe33354/attachment.html>

More information about the gdal-dev mailing list