[gdal-dev] gdal_translate shifted values
Even Rouault
even.rouault at spatialys.com
Thu Feb 1 05:22:38 PST 2024
Hi,
I don't think there's any problem regarding GDAL vs xarray. It is just a
difference of convention on how GDAL and xarray choose the origin of
rasters. GDAL selects the northern-west corner as the (0,0) image
coordinate.
The line in GDAL that contains values 13.75 14.25 14.75 which are at
line 80 for XArray is line 124 . And 80 + 124 + 1 = 205 , the dataset
height
Displaying the GRIB dataset with QGIS (/GDAL) on top of OSM shows a
plausible georeferencing.
Even
Le 01/02/2024 à 13:57, Laurențiu Nicola via gdal-dev a écrit :
> It's actually pretty easy to test:
>
> import numpy as np
> import xarray as xr
> from osgeo import gdal
>
> xarray_ds = xr.load_dataset("st4_pr.2017092016.01h", engine="cfgrib")
> # GDAL uses 9999 as NODATA
> xarray_data = np.nan_to_num(xarray_ds.tp.data, nan=9999.0)
> gdal_ds = gdal.Open("st4_pr.2017092016.01h")
> gdal_data = gdal_ds.GetRasterBand(1).ReadAsArray()
>
> >>> gdal_data[80]
> array([9999. , 9999. , 9999. , 9999. , 9999. , 9999. ,
> 9999. , 9999. , 9999. , 9999. , 9999. , 9999. ,
> 9999. , 9999. , 9999. , 9999. , 9999. , 9999. ,
> 9999. , 9999. , 9999. , 9999. , 9999. , 9999. ,
> 9999. , 9999. , 9999. , 9999. , 9999. , 9999. ,
> 9999. , 9999. , 9999. , 9999. , 9999. , 9999. ,
> 9999. , 9999. , 9999. , 9999. , 9999. , 9999. ,
> 9999. , 9999. , 9999. , 9999. , 9999. , 9999. ,
> 9999. , 9999. , 9999. , 9999. , 9999. , 9999. ,
> 9999. , 9999. , 9999. , 9999. , 9999. , 9999. ,
> 9999. , 9999. , 9999. , 9999. , 9999. , 9999. ,
> 9999. , 9999. , 9999. , 9999. , 9999. , 9999. ,
> 9999. , 9999. , 9999. , 9999. , 9999. , 9999. ,
> 9999. , 9999. , 9999. , 9999. , 9999. , 9999. ,
> 9999. , 9999. , 9999. , 9999. , 9999. , 9999. ,
> 9999. , 9999. , 9999. , 9999. , 9999. , 9999. ,
> 9999. , 9999. , 40.5 , 41.125, 41.75 , 42.5 ,
> 43. , 26.5 , 26.875, 27. , 29.875, 49.875,
> 50.375, 41.5 , 41.375, 0. , 0. , 0. ,
> 0. , 0. , 0. , 0. , 0. , 0. ,
> 0. , 0. , 0. , 9999. , 9999. , 9999. ,
> 9999. , 9999. , 9999. , 9999. , 9999. , 9999. ,
> 0. , 0. , 0. , 0. , 0. , 0. ,
> 0. , 0. , 0. , 0. , 0. , 0. ,
> 0. , 0. , 0. , 9999. , 9999. , 9999. ,
> 9999. , 9999. , 9999. , 9999. , 9999. , 9999. ,
> 9999. , 9999. , 9999. , 9999. , 9999. , 9999. ,
> 9999. , 9999. , 9999. , 9999. , 9999. , 9999. ,
> 9999. , 9999. , 9999. , 9999. , 9999. , 9999. ,
> 9999. , 9999. , 9999. , 9999. , 9999. , 9999. ,
> 9999. , 9999. , 9999. , 9999. , 9999. , 9999. ,
> 9999. , 9999. , 9999. , 9999. , 9999. , 9999. ,
> 9999. , 9999. , 9999. , 9999. , 9999. , 9999. ,
> 9999. , 9999. , 9999. , 9999. , 9999. , 9999. ,
> 9999. ])
> >>> xarray_data[80]
> array([9999. , 9999. , 9999. , 9999. , 9999. , 9999. ,
> 9999. , 9999. , 9999. , 9999. , 9999. , 9999. ,
> 9999. , 9999. , 9999. , 9999. , 9999. , 9999. ,
> 9999. , 9999. , 9999. , 9999. , 9999. , 9999. ,
> 9999. , 9999. , 9999. , 9999. , 9999. , 9999. ,
> 9999. , 9999. , 9999. , 9999. , 9999. , 9999. ,
> 9999. , 9999. , 9999. , 9999. , 9999. , 9999. ,
> 9999. , 9999. , 9999. , 9999. , 9999. , 9999. ,
> 9999. , 9999. , 9999. , 9999. , 9999. , 9999. ,
> 9999. , 9999. , 9999. , 9999. , 9999. , 9999. ,
> 9999. , 9999. , 9999. , 9999. , 9999. , 9999. ,
> 9999. , 9999. , 9999. , 13.75 , 14.25 , 14.75 ,
> 19.125, 32.5 , 30.125, 27.125, 25.5 , 22.25 ,
> 22.375, 20.25 , 18.375, 16.625, 15.25 , 9999. ,
> 9999. , 9999. , 9999. , 9999. , 9999. , 9999. ,
> 9999. , 9999. , 9999. , 9999. , 9999. , 9999. ,
> 9999. , 9999. , 9999. , 9999. , 9999. , 9999. ,
> 9999. , 9999. , 9999. , 9999. , 9999. , 9999. ,
> 9999. , 9999. , 9999. , 9999. , 9999. , 9999. ,
> 9999. , 9999. , 9999. , 9999. , 9999. , 9999. ,
> 9999. , 9999. , 9999. , 9999. , 9999. , 9999. ,
> 9999. , 9999. , 9999. , 9999. , 9999. , 9999. ,
> 9999. , 9999. , 9999. , 9999. , 9999. , 9999. ,
> 9999. , 9999. , 9999. , 9999. , 9999. , 9999. ,
> 9999. , 9999. , 9999. , 9999. , 9999. , 9999. ,
> 9999. , 9999. , 9999. , 9999. , 9999. , 9999. ,
> 9999. , 9999. , 9999. , 9999. , 9999. , 9999. ,
> 9999. , 9999. , 9999. , 9999. , 9999. , 9999. ,
> 9999. , 9999. , 9999. , 9999. , 9999. , 9999. ,
> 9999. , 9999. , 9999. , 9999. , 9999. , 9999. ,
> 9999. , 9999. , 9999. , 9999. , 9999. , 9999. ,
> 9999. , 9999. , 9999. , 9999. , 9999. , 9999. ,
> 9999. , 9999. , 9999. , 9999. , 9999. , 9999. ,
> 9999. , 9999. , 9999. , 9999. , 9999. , 9999. ,
> 9999. ], dtype=float32)
>
> The values are obviously different.
>
> I also tried to convert to NetCDF and open them in QGIS, but they look
> almost the same (not identical) to me after fixing up the coordinates,
> so there's probably more at play.
>
> Again, comparing the gdal_translate output with the GRIB data as read
> by GDAL can't show any issues.
>
> Laurentiu
>
> On Thu, Feb 1, 2024, at 13:24, Laurențiu Nicola via gdal-dev wrote:
>> Hi Jukka,
>>
>> If GDAL shuffled around the pixels in that file, you wouldn't be able
>> to notice it by comparing the GRIB and the TIFF, because both would
>> be shuffled.
>>
>> My suggestion was to convert the GRIB to a NC or even CSV using
>> xarray, then comparing the GDAL output against that.
>>
>> Laurentiu
>>
>
>
> _______________________________________________
> gdal-dev mailing list
> gdal-dev at lists.osgeo.org
> https://lists.osgeo.org/mailman/listinfo/gdal-dev
--
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/20240201/c9ceb420/attachment-0001.htm>
More information about the gdal-dev
mailing list