Hi Guillaume, On Wed, Jul 19, 2017 at 3:28 AM, Guillaume Pasero <[email protected]> wrote: > > Hi, > > I think my issue is not strictly related. The problem I had was about the way > the rotation angle is computed in WriteProjectionInfo() when the determinant > of the geotransform is positive. > > Let's call det(GT) the determinant of the 2x2 sub-matrix of GT, without > origin terms. In a standard case : GT[1] > 0 and GT[5] < 0 (Y axis downwards) > and we have a negative determinant. Even when there is a rotation, it doesn't > change the sign of the determinant and the formula to compute the rotation > angle is good. However, when the determinant is positive (like when both > spacing are positive), then the computation of the rotation angle has to be > changed.
Yes, that makes sense to me. It seems to me that when the matrix determinant is positive (and the geotransform is not the default no-translation identity), the correct thing to do from a mathematical standpoint is to force exactly one of the output x-pixel or y-pixel sizes to be negative in order to compensate. This is the only way I can see that the geotransform could be made to still have a positive determinant at the time of a later read of that same file. I guess it should be the y-pixel size, since folks are already used to that being negative (in the reverse, more usual situation of a negative-determinant matrix) in e.g. world files. From a practical standpoint, though, I have no idea how many applications out there would both allow, and correctly interpret, an ENVI header with a negative y-pixel size. With respect to my suggested corrections for the ProcessMapinfo() function at read time, I believe that the corresponding fix to the WriteProjectionInfo() function is simple in the usual case of a negative matrix determinant: it is just to swap the use of the [2] and [4] elements of adfGeoTransform[] everywhere that either is used in that function in the computation of variables dfPixelXSize, dfPixelYSize, dfRotation1 and dfRotation2. I would have to think a little more about what the right calculation should be in the case of a positive matrix determinant. If Taylor Brown doesn't respond to this thread within a few days, I'll try to put together a patch myself that incorporates all of this. -- Kevin B. McCarty <[email protected]> _______________________________________________ gdal-dev mailing list [email protected] https://lists.osgeo.org/mailman/listinfo/gdal-dev
