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

G Seiffert hh1 at posteo.de
Mon Dec 21 05:57:18 PST 2020


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 <mailto: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 <mailto: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/3c145302/attachment.html>


More information about the gdal-dev mailing list