[gdal-dev] Errors in geotransform computation from ENVI rotated header?
Even Rouault
even.rouault at spatialys.com
Tue Jul 18 15:03:21 PDT 2017
On mardi 18 juillet 2017 14:45:31 CEST Kevin B. McCarty wrote:
> Hi Even,
>
> On Tue, Jul 18, 2017 at 1:28 PM, Even Rouault
>
> <even.rouault at spatialys.com> wrote:
> > Did you check that the georeferencing in a GDAL based software (QGIS for
> > example, or maybe by just running gdalwarp to get a north-up oriented
> > output image) with your above proposed fix is consistant with the one you
> > get in ENVI software ?
>
> I've created a pretty artificial .hdr file that exhibits rotation
> together with xpixelsize != ypixelsize. Here it is: (cut-and-paste it
> somewhere and name it to dum.hdr)
>
> ENVI
> samples = 10
> lines = 20
> bands = 1
> header offset = 0
> file type = ENVI Standard
> data type = 1
> interleave = bsq
> byte order = 0
> map info = { UTM, 1, 1, 200, 200, 25, 12.5,
> 30, North, WGS-84, units=Meters, rotation=45 }
>
> Note that the local X size (sample count) is 10 pixels and local Y
> size (line count) is 20 pixels; but since the local X pixel width is
> twice the local Y pixel width, the image in world coordinates should
> be a square of 250 meters on each side, rotated 45 degrees from due
> north about its upper left (in pixel-space) corner.
>
> You can create an accompanying .bsq file for this .hdr file with the
> following Unix command, or via any other mechanism that creates a file
> having at least 200 bytes (exact contents don't matter):
>
> dd if=/dev/zero of=./dum.bsq bs=200 count=1
>
>
> Here is what gdal 2.2.1 gdalinfo reports for the corners of dum.bsq
> [that I claim is erroneous]:
>
> Upper Left ( 200.000, 200.000) ( 7d29'13.03"W, 0d 0' 6.49"N)
> Lower Left ( 553.553, 23.223) ( 7d29' 1.62"W, 0d 0' 0.75"N)
> Upper Right ( 376.777, 288.388) ( 7d29' 7.33"W, 0d 0' 9.36"N)
> Lower Right ( 730.330, 111.612) ( 7d28'55.92"W, 0d 0' 3.62"N)
> Center ( 465.165, 155.806) ( 7d29' 4.48"W, 0d 0' 5.06"N)
>
>
> Here is what it reports for the same input after my suggested fix for
> the transform matrix calculation:
>
> Upper Left ( 200.000, 200.000) ( 7d29'13.03"W, 0d 0' 6.49"N)
> Lower Left ( 376.777, 23.223) ( 7d29' 7.33"W, 0d 0' 0.75"N)
> Upper Right ( 376.777, 376.777) ( 7d29' 7.33"W, 0d 0'12.23"N)
> Lower Right ( 553.553, 200.000) ( 7d29' 1.62"W, 0d 0' 6.49"N)
> Center ( 376.777, 200.000) ( 7d29' 7.33"W, 0d 0' 6.49"N)
>
>
> If you view these two sets of five world coordinates each in your
> favorite map program, you can see that the former coordinates make the
> corners and center of a long thin parallelogram, whereas the latter
> coordinates form a 45-degree rotated square as expected. And for the
> latter set of coordinates, the difference between min and max X
> coordinates, and between min and max Y coordinates, is sqrt(2) * 250
> as expected.
>
> I've also tried some tests with our own (proprietary) software using
> each of the vanilla GDAL 2.2.1 .so file, and the version with my fix,
> in turn.
>
> I've not tried as hard to verify my suggested fixes to computation of
> adfGeoTransform elements [0] and [3], since they are smaller in effect
> and only apply to files that are both rotated and in which the
> reference X and/or Y pixels are other than one, which are probably
> rare. But it seems clear to me that some change to elements [0] and
> [3] of this sort is needed in that (obscure) case.
>
> > I've just left a message to the original author of ENVI rotation read
> > support in:
> >
> > https://github.com/OSGeo/gdal/pull/197#issuecomment-316185610
>
> OK, thank you!
If we don't get feedback from him, please create a ticket about the issue with your changes,
or a pull request at your convenience. Fixes in the writing side would be appreciated too. I
guess the envi_15() test in autotest/gdrivers/envi.py will probably need some adaptations.
Even
--
Spatialys - Geospatial professional services
http://www.spatialys.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/gdal-dev/attachments/20170719/82cd7702/attachment.html>
More information about the gdal-dev
mailing list