geotransform 和 pyresample 中的 get_lonlats() 之间的区别

问题描述 投票:0回答:0

我对 TIF 和 netCDF 文件的地理定位有疑问。

首先,我使用此处建议的 ECOSTRESS_swath2grid.py 脚本将条带数据转换为网格数据:https://github.com/spestana/ECOSTRESS_swath2grid.

在netCDF保存文件的方法中,我定义了网格化的经度和纬度矩阵:

lons_netcdf, lats_netcdf = areaDef.get_lonlats()  

在TIF保存文件的方法中,我用netCDF方法中使用的相同areaDef变量定义geotransform向量,如:gt = [areaDef.area_extent[0], ps, 0, areaDef.area_extent[3], 0, -附注].

然后,在 Qgis 中打开这两个文件,我意识到在图像的东边,TIF 和 netCDF 文件的像素之间有 8 m 的偏移量。我没有注意到纬度偏移。

因此,我比较了geoTIFF经纬度数组和netCDF文件的区别

定义lon_tif和lat_tif变量,我用rioxarray打开刚刚保存的TIF文件,选择x和y变量数据,如:

tif = xr.open_rasterio(outName) lon_tif = tif.x.data lat_tif = tif.y.data

我得到以下结果:

经度

np.unique(lon_tif – lons_netcdf[0,:])

array([5.94099880e-09, 1.78229955e-08, 2.97049922e-08, ..., 1.31907991e-04, 1.31919873e-04, 1.31931755e-04])

len(np.unique(lon_tif – lons_netcdf[0,:]))

11104

np.max(np.unique(lon_tif – lons_netcdf[0,:]))

0.0001319317554191457

纬度

np.unique(lat_tif - lats_netcdf[:,0])

数组([-1.42108547e-14,-7.10542736e-15,0.00000000e+00])

为什么 areaDef.get_lonlats() 和 geotransform 方法之间的地理定位存在差异?哪种方法最适合获得网格化的纬度和经度? 请注意,tif 和 netcdf 的经度和纬度都是 float64 dtype。

geolocation geotiff pyresample
© www.soinside.com 2019 - 2024. All rights reserved.