xr.concat 在 nc 文件中堆叠 tif 文件时使我的图像变形

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

我正在使用此代码将我的 tiff 文件合并为 .nc 文件:

import glob
import xarray as xr
import rioxarray as rxr
import pandas as pd

filenames = glob.glob('*.tif')
print(filenames)
transformed_filenames = [filename.replace("-", "") for filename in filenames]
print(transformed_filenames)
def time_index_from_filenames(filenames):
    '''helper function to create a pandas DatetimeIndex
       Filename example: 20150520_0164.tif'''
    return pd.DatetimeIndex([pd.Timestamp(f[:8]) for f in filenames])


time = xr.Variable('time', time_index_from_filenames(transformed_filenames))
chunks = {'x': 1529, 'y': 2777, 'band': 1}
da = xr.concat([rxr.open_rasterio(f) for f in filenames], dim=time)

da = da.drop_vars('band') 
da.to_netcdf('OC3_AR.nc')

尽管这段代码对于我的一个数据集运行良好,但它使我的图像在第二个数据集上变形:

Tif 文件: 在此输入图片描述

数控文件:

在此输入图片描述

如何解决?是由于投影(两张图像之间的投影相同)吗?与 .tif 相比,nc 文件的尺寸增加了一倍(tif 为 1529x2777 vs 3058x5554)

python concatenation python-xarray
1个回答
0
投票
  1. 您似乎正在尝试使用可能具有不同纬度/经度坐标的文件来执行

    xr.concat
    。在这种情况下,该函数将仅在现有的匹配坐标之间强制连接,从而导致这种奇怪的 netcdf 输出。仅当您确定数据集共享相同的纬度/经度坐标时,才应沿时间维度串联数据集。尝试仅使用一个文件执行从 .tif 到 .nc 的转换来检查此问题。

  2. GeoTIFF 图像通常具有翻转显示标准。由于您要将数据 .tif 转换为 .nc,因此您可能还必须翻转它:

    da.y = da.y[::-1]
    以匹配 NetCDF 中的原始投影。

© www.soinside.com 2019 - 2024. All rights reserved.