[gdal-dev] Geotransform for non-North-up images?

Javier Jimenez Shaw j1 at jimenezshaw.com
Mon Dec 21 07:02:48 PST 2020


I am not sure, but I guess that you have to negate also GT5: y axis is
reversed between image coordinates and "geographic" coordinates.
.___ ._ ..._ .. . ._.  .___ .. __ . _. . __..  ... .... ._ .__
Entre dos pensamientos racionales
hay infinitos pensamientos irracionales.



On Mon, 21 Dec 2020 at 14:57, G Seiffert <hh1 at posteo.de> wrote:

> Thanks Javier. Need to confess: math is not my strong side. I'm more the
> "trial and error" guy. And - shame on me - Google.
>
> Got the rotation AND the scaling correct meanwhile, calculating the params
> as described here:
> https://gis.stackexchange.com/questions/69715/rotating-rasters-using-gdal-geotransform-and-arcgis-desktop?noredirect=1&lq=1
>
> Below a code snippet (I work in Python). However,  with the exact calcs
> from above website, my pics were rotated correctly but for some strange
> reason mirrored vertically! Try and error: Making GT(4) negative got rid of
> the mirroring. So almost happy now, just facing a weird shift of 2m to west
> and 0.7m to south, working on it.
>
> # ROTATION PART Start ================================================
>     rot_deg = 90
>     rotation = np.deg2rad(rot_deg)
>
>     GT0 = orig_x
>     GT1 = math.cos(rotation) * image_resolution
>     GT2 = -math.sin(rotation) * image_resolution
>     GT3 = orig_y
>     GT4 = -math.sin(rotation) * image_resolution
>     GT5 = math.cos(rotation) * image_resolution
>
>     geotrans = (GT0, GT1, GT2, GT3, GT4, GT5)
>
> # ROTATION PART End ================================================
>
> Thanks so far! Also Thomas and Jukka!
> Gerhard
>
> Javier Jimenez Shaw <j1 at jimenezshaw.com>
> 21 December 2020 10:55
> Those transformation parameters can be seen as a 3x3 transformation matrix
> like this
>
> Xg     GT1 GT2 GT0     Xp
> Yg  =  GT4 GT5 GT3  *  Yp
>  1      0   0   1       1
>
> Where [Xp, Yp] is the coordinate in pixels, and [Xg, Yg] is the
> "geographic" coordinate (whatever it means ;)
>
> the 2x2 top left corner of the transformation matrix can be seen as a 2D
> rotation-scaling matrix:
> https://en.wikipedia.org/wiki/Transformation_matrix#Examples_in_2_dimensions
> [GT0, GT3] is the "geographic" coordinate of the pixel [0, 0] (regardless
> rotation or scaling)
>
> Cheers
> .___ ._ ..._ .. . ._.  .___ .. __ . _. . __..  ... .... ._ .__
> Entre dos pensamientos racionales
> hay infinitos pensamientos irracionales.
>
>
>
> G Seiffert <hh1 at posteo.de>
> 21 December 2020 10:24
> Hi all from GDLA.
>
> Thanks for the opportunity to as a question. It's regarding the Geotransform
> Tutorial (https://gdal.org/tutorials/geotransforms_tut.html). Tried to
> get info in the web but since this seems a tricky one, my searches failed.
>
> The tutorial only deals with the ideal case of 'North up' images, for
> which GT(2) and GT(4) are zero. However, my images are 'East up' and
> potentially 'any direction up' (underwater photomosaic surveys by ROV). The
> rotation works with '90' for GT(2, 4). But the scaling seems completely
> ignored. Any hint? If it would be easy, I assume your tutorial would give
> an example for how to deal with "non-N-up' images, but ...
>
> My pics are 1920x1080, with pixel resolution of 0.0015 (yes, 0.15cm per
> pixel, we're flying just 3m above the bottom).
>
> In case I rotate the images prior to geotransform (in Photoshop),
> geotransform works perfect, with GT(2, 4) = 0. Scaling spot on. I can live
> with that for our last survey but I'm also looking for a solution in case
> our survey heading cannot be 0, 90, 180, or 270, but has to be something
> like 35° (due to bottom currents etc.).
>
> Best regards, any hint qappreciated,
> Gerhard
>
>
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/gdal-dev/attachments/20201221/fd1ee5c6/attachment-0001.html>


More information about the gdal-dev mailing list