corteva / rioxarray

geospatial xarray extension powered by rasterio
https://corteva.github.io/rioxarray
Other
504 stars 80 forks source link

Wrong bounds from assigned transform #703

Closed zxdawn closed 8 months ago

zxdawn commented 8 months ago

Code Sample

import xarray as xr
import rioxarray
import numpy as np
from affine import Affine

data = xr.DataArray(np.random.rand(1280, 1242), dims=['y', 'x'])

geotransform = np.array([5.05417592e+01,  5.42232520e-04, -0.00000000e+00,
                         3.56568868e+01, -0.00000000e+00, -5.42232520e-04])

data.rio.write_transform(Affine.from_gdal(*geotransform), inplace=True)
data.rio.write_crs('EPSG:4326', inplace=True)

print(data.rio.bounds())

Problem description

The output is

(50.5417592, 34.9628291744, 51.21521198984, 35.6568868)

Expected Output

The latitude should decrease from 35.6568868.

Environment Information

rioxarray (0.14.1) deps:
  rasterio: 1.3.6
    xarray: 2023.6.0
      GDAL: 3.6.2
      GEOS: 3.11.1
      PROJ: 9.1.1
 PROJ DATA: [/Users/xinz/miniconda3/envs/emit_tutorials/share/proj](https://file+.vscode-resource.vscode-cdn.net/Users/xinz/miniconda3/envs/emit_tutorials/share/proj)
 GDAL DATA: [/Users/xinz/miniconda3/envs/emit_tutorials/share/gdal](https://file+.vscode-resource.vscode-cdn.net/Users/xinz/miniconda3/envs/emit_tutorials/share/gdal)

Other python deps:
     scipy: 1.9.1
    pyproj: 3.5.0

System:
    python: 3.9.15 | packaged by conda-forge | (main, Nov 22 2022, 08:52:10)  [Clang 14.0.6 ]
executable: [/Users/xinz/miniconda3/envs/emit_tutorials/bin/python](https://file+.vscode-resource.vscode-cdn.net/Users/xinz/miniconda3/envs/emit_tutorials/bin/python)
   machine: macOS-13.2.1-arm64-arm-64bit
snowman2 commented 8 months ago

import rasterio.transform

rasterio.transform.array_bounds(
    width=data.rio.width,
    height=data.rio.height,
    transform=Affine.from_gdal(*geotransform)
)
(50.5417592, 34.9628291744, 51.21521198984, 35.6568868)
FabricioArendTorres commented 3 months ago

An explanation instead of just a code snippet would be helpful.