[gdal-dev] Specify Grid Rotation for gdal.Warp() with Geolocation Arrays

Even Rouault even.rouault at spatialys.com
Thu Nov 17 07:07:55 PST 2022


Le 17/11/2022 à 16:01, Brendan Heberlein a écrit :
> Thank you, Mike & Even.
>
> Supposing I wanted to have the output grid origin & dimensions 
> computed automatically, but with a specified rotation angle, is that 
> possible?

There's no API in GDAL for it. You indeed have to set something like the 
following


gt[1] = cos(angle) * pixel_x_size

gt[2] = -sin(angle) * pixel_x_size

gt[4] = sin(angle) * pixel_y_size

gt[5] = cos(angle) * pixel_y_size


I assume the above only works if the origin (gt[0], gt[3]) is the 
lower-left corner coordinate, not the upper-one. And I might certainly 
have got some signs wrong :-)


Slightly related code in the ENVI driver to transform the rotation angle 
from its header file to a geotransform matrix (but conventions might be 
slightly different):

https://github.com/OSGeo/gdal/blob/66d9fe0b1a34a8992c804c2444f7f23c2436b937/frmts/raw/envidataset.cpp#L1536

>
> Anyway I can calculate these parameters myself, so it is not a big 
> issue. Your suggestion worked for me.
>
> Cheers!
> Brendan
>
> ------------------------------------------------------------------------
> *From:* Even Rouault <even.rouault at spatialys.com>
> *Sent:* Saturday, November 5, 2022 4:36 AM
> *To:* Michael Sumner <mdsumner at gmail.com>; Brendan Heberlein 
> <bheberlein at wisc.edu>
> *Cc:* gdal-dev <gdal-dev at lists.osgeo.org>
> *Subject:* Re: [gdal-dev] Specify Grid Rotation for gdal.Warp() with 
> Geolocation Arrays
>
>
> Le 05/11/2022 à 04:33, Michael Sumner a écrit :
>> yes I see, well you can probably set a target GeoTIFF with the 
>> geotransform that you want - and gdalwarp to that as the target.
>
> something like
>
> out_ds = gdal.GetDriverByName("GTiff").Create("output.tif", width, 
> height, number_of_bands, data_type, options = ["TILED=YES"])
>
> out_ds.SetGeoTransform([ some geotransform with rotational terms ])
>
> srs = osr.SpatialReference()
>
> srs.ImportFromEPSG( xxx ) / srs.ImportFromWkt( xxx )
>
> out_ds.SetSpatialRef( srs )
>
> gdal.Warp(out_ds, src_ds, .... )
>
>
>
>> I don't believe you can do that with gdalwarp directly, and I have no 
>> idea with python - and finally I'm sorry to add irrelevant discussion 
>> - but this is interesting and I'm going to try it out in R and C++ 
>> and would love to see a python example too.
>>
>> Cheers, Mike
>>
>>
>>
>>
>>
>> On Sat, Nov 5, 2022 at 2:21 PM Brendan Heberlein <bheberlein at wisc.edu 
>> <mailto:bheberlein at wisc.edu>> wrote:
>>
>>     Hi Mike,
>>
>>     regardless of the map projection, it may be desirable to have the
>>     grid oriented in one direction or another, e.g. due to the
>>     spatial distribution of data points. Although the CRS/SRS
>>     designates the coordinate axes, these are not always aligned with
>>     the desired grid orientation.
>>
>>     So, basically I want to be able to specify an arbitrary
>>     geotransform array for the output grid. This would allow the grid
>>     to be assigned an arbitrary orientation within the CRS frame.
>>
>>     Thanks,
>>     Brendan
>>     ------------------------------------------------------------------------
>>     *From:* Michael Sumner <mdsumner at gmail.com
>>     <mailto:mdsumner at gmail.com>>
>>     *Sent:* Friday, November 4, 2022 6:57 PM
>>     *To:* Brendan Heberlein <bheberlein at wisc.edu
>>     <mailto:bheberlein at wisc.edu>>
>>     *Cc:* gdal-dev <gdal-dev at lists.osgeo.org
>>     <mailto:gdal-dev at lists.osgeo.org>>
>>     *Subject:* Re: [gdal-dev] Specify Grid Rotation for gdal.Warp()
>>     with Geolocation Arrays
>>     well, the map projection does this - there are many
>>     possibilities. Or, do you have another geolocation array you want
>>     as the target?
>>
>>     If you have an example I'm happy to try a few things, but I'd
>>     assumed you had a target map projection in mind. What kind of crs
>>     to choose depends on your goal, or is purely to not have north up?
>>
>>     Perhaps there's something terminology wise I'm missing ...
>>
>>     Mike
>>
>>     On Sat, 5 Nov 2022, 10:50 Brendan Heberlein, <bheberlein at wisc.edu
>>     <mailto:bheberlein at wisc.edu>> wrote:
>>
>>         Hi Mike,
>>
>>         thanks for the response.
>>
>>         Can you clarify how I would go about specifying the grid
>>         orientation for the output raster? None of -te, -ts or -t_srs
>>         address this.
>>
>>
>>         ------------------------------------------------------------------------
>>         *From:* Michael Sumner <mdsumner at gmail.com
>>         <mailto:mdsumner at gmail.com>>
>>         *Sent:* Friday, November 4, 2022 6:41 PM
>>         *To:* Brendan Heberlein <bheberlein at wisc.edu
>>         <mailto:bheberlein at wisc.edu>>
>>         *Cc:* gdal-dev <gdal-dev at lists.osgeo.org
>>         <mailto:gdal-dev at lists.osgeo.org>>
>>         *Subject:* Re: [gdal-dev] Specify Grid Rotation for
>>         gdal.Warp() with Geolocation Arrays
>>         that's exactly what the warper does with geolocation arrays,
>>         set the target extent, dimension, and crs with -te, -ts,
>>         -t_srs with gdalwarp.
>>
>>         python will have those analogous controls for the warper.
>>
>>         Cheers, Mike
>>
>>
>>
>>         On Sat, 5 Nov 2022, 01:23 Brendan Heberlein via gdal-dev,
>>         <gdal-dev at lists.osgeo.org <mailto:gdal-dev at lists.osgeo.org>>
>>         wrote:
>>
>>             Hello,
>>
>>             I would like to be able to warp an image dataset using a
>>             geolocation array, while specifying the grid to which the
>>             output dataset is sampled. Specifically, I want to be
>>             able to warp the dataset to a grid which is not oriented
>>             North-up.
>>
>>             Can GDAL support this currently? Or, what is the
>>             likelihood this could be supported in the future?
>>
>>             I primarily rely on the Python bindings, so a solution
>>             within that framework would be ideal for me.
>>
>>             Thanks!
>>                  — Brendan
>>
>>
>>             _______________________________________________
>>             gdal-dev mailing list
>>             gdal-dev at lists.osgeo.org <mailto:gdal-dev at lists.osgeo.org>
>>             https://lists.osgeo.org/mailman/listinfo/gdal-dev
>>             <https://lists.osgeo.org/mailman/listinfo/gdal-dev>
>>
>>
>>
>> -- 
>> Michael Sumner
>> Software and Database Engineer
>> Australian Antarctic Division
>> Hobart, Australia
>> e-mail: mdsumner at gmail.com <mailto:mdsumner at gmail.com>
>>
>> _______________________________________________
>> gdal-dev mailing list
>> gdal-dev at lists.osgeo.org  <mailto:gdal-dev at lists.osgeo.org>
>> https://lists.osgeo.org/mailman/listinfo/gdal-dev  <https://lists.osgeo.org/mailman/listinfo/gdal-dev>
> -- 
> http://www.spatialys.com  <http://www.spatialys.com>
> My software is free, but my time generally not.

-- 
http://www.spatialys.com
My software is free, but my time generally not.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/gdal-dev/attachments/20221117/7cc246bd/attachment-0001.htm>


More information about the gdal-dev mailing list