Discussion:
[gdal-dev] GDALCreateApproxTransformer and error threshold ramifications question
Martin Chapman
2021-06-07 16:19:56 UTC
Permalink
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
sacrificing.



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
Even Rouault
2021-06-07 17:06:38 UTC
Permalink
Martin,

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.

Even
Post by Martin Chapman
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 sacrificing.
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
https://lists.osgeo.org/mailman/listinfo/gdal-dev
--
http://www.spatialys.com
My software is free, but my time generally not.
Martin Chapman
2021-06-07 19:03:03 UTC
Permalink
Even,



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
thrilled!



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:***@spatialys.com]
Sent: Monday, June 7, 2021 11:07 AM
To: Martin Chapman; gdal-***@lists.osgeo.org
Subject: Re: [gdal-dev] GDALCreateApproxTransformer and error threshold
ramifications question



Martin,

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.

Even

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
sacrificing.



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-***@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/gdal-dev
--
http://www.spatialys.com
My software is free, but my time generally not.
Loading...