Почему размер lat и lon в файле nc изменяется при сборке двух файлов nc?

#python #netcdf #python-xarray

Вопрос:

У меня есть два .nc файла, которые имеют одинаковые размеры lat и lon, CRS и все остальное.

 Dimensions:  (lat: 62, lon: 94)
Coordinates:
  * lat      (lat) float64 58.46 58.79 59.12 59.44 ... 77.45 77.78 78.11 78.44
  * lon      (lon) float64 -150.0 -149.4 -148.9 -148.3 ... -98.56 -98.0 -97.43
 

Когда я затем добавляю эти два файла вместе, все измерение меняется:

 dem = xr.open_dataset(path   'DEM.nc')
dc = xr.open_dataset(path   'DC.nc')

X = 1 / (1   np.exp(-(-2.2432e 01   (dem.Band1 * 1.97521e-06)   (dc.Band1 * 5.97414e-04))))

print(X)

<xarray.DataArray 'Band1' (lat: 11, lon: 94)>
  * lat      (lat) float64 65.01 65.34 65.67 65.99 ... 73.52 74.18 77.78 78.44
  * lon      (lon) float64 -150.0 -149.4 -148.9 -148.3 ... -98.56 -98.0 -97.43
 

Что происходит? Почему это добавление меняет все измерение?

nb. в dc файле есть несколько ячеек сетки без данных nan . Влияет ли это на это?

РЕДАКТИРОВАТЬ: С учетом данного ответа я все еще не думаю, что это происходит исключительно из-за отсутствия данных, посмотрите на изображение наборов данных по отдельности и наборов данных в совокупности:

введите описание изображения здесь

Комментарии:

1. Можете ли вы предоставить форму обоих наборов данных? И, возможно, предоставить тестовые данные для устранения этой проблемы.

2. Загрузите на диск или что-то еще и предоставьте общедоступную ссылку.

Ответ №1:

Вы дали ответ самому себе с помощью

the dc file has some grid cells without data nan. Does that influence it? Да, потому что xarray тоже смотрит на координаты, а не просто выполняет векторизованные операции. Ознакомьтесь с документацией, чтобы узнать об этом больше.

Обходной путь очень прост: позвольте numpy сделать эту работу за вас!

 X = 1 / (1   np.exp(-(-2.2432e 01   (dem.Band1.values * 1.97521e-06)   (dc.Band1.values * 5.97414e-04))))

data_array = xarray.DataArray(X, coords={'lat': dem.lat, 'lon': dem.lon}, dims=['lat', 'lon'])

dem['combined'] = data_array
 

Комментарии:

1. Привет @dl.метео. Я не думаю, что это действительно так. Я отредактировал свой вопрос, у вас есть время просмотреть его еще раз с изображением отдельных наборов данных и объединенных? Спасибо.

2. @Thomas ознакомьтесь с моим обновленным ответом. Я думаю, что это подходящее решение для вас. Пожалуйста, оцените мой ответ, если он соответствует вашим требованиям.

3. Я посмотрю на это прямо сейчас, спасибо!

4. Спасибо, кажется, это хорошо работает. Красиво — спасибо!