Проблема объединения или слияния плиток MODIS LST с помощью xarrayPython

Программы на Python
Ответить
Anonymous
 Проблема объединения или слияния плиток MODIS LST с помощью xarray

Сообщение Anonymous »

У меня возникла проблема при объединении двух файлов данных xarray. Два файла (MODIS LST, доступ к которым осуществляется через STAC API) относятся к одной и той же дате/времени, но соответствуют соседним географическим ячейкам (рядом, по долготе или x). Когда я использую функцию xr.concat(), все работает нормально, без каких-либо ошибок, но когда я визуализирую данные, я замечаю множество вертикальных белых линий, как показано на рисунке ниже (которые кажутся значениями без данных). Когда я рисую отдельные файлы (с одного и того же временного шага), данные существуют в областях, где появляются вертикальные линии (эти рисунки здесь не показаны).
Воспроизводимый пример приведен ниже, если кто-то захочет попробовать:

Код: Выделить всё

import pystac_client
import stackstac
import planetary_computer
import xarray as xr
import pandas as pd

catalog = pystac_client.Client.open(
"https://planetarycomputer.microsoft.com/api/stac/v1",
modifier=planetary_computer.sign_inplace,
)

# time range
time_range = "2000-10-01/2000-10-30"

# tile 1
bbox = [75, 30, 80, 32]
search = catalog.search(collections=["modis-11A2-061"], bbox=bbox, datetime=time_range)
items = search.get_all_items()
ds_d_t1 = stackstac.stack(items, epsg=4326, chunksize='auto', assets=["LST_Day_1km"], properties=False)
ds_d_t1 = ds_d_t1.rename("LST")

# tile 1
bbox = [66, 35, 67, 37]
search = catalog.search(collections=["modis-11A2-061"], bbox=bbox, datetime=time_range)
items = search.get_all_items()
ds_d_t2 = stackstac.stack(items, epsg=4326, chunksize='auto', assets=["LST_Day_1km"], properties=False)
ds_d_t2 = ds_d_t2.rename("LST")

# lets handle the time, because there is no proper time coordinate
# extract year and day of the year from MODIS ID
def get_date(modis_id):
year = int(modis_id.split('.')[1][1:5])
day_of_year = int(modis_id.split('.')[1][5:])
date = pd.to_datetime(str(year) + str(day_of_year), format='%Y%j')
return date

# create a new time coordinate variable using the get_date function
ds_d_t1['time'] = xr.DataArray([get_date(modis_id) for modis_id in ds_d_t1['id'].values],
dims='time', coords={'time': ds_d_t1['time']})

ds_d_t2['time'] = xr.DataArray([get_date(modis_id) for modis_id in ds_d_t2['id'].values],
dims='time', coords={'time': ds_d_t2['time']})

ds_d_t1 = ds_d_t1.sortby('time')
ds_d_t2 = ds_d_t2.sortby('time')

# concat
ds_m = xr.concat([ds_d_t1, ds_d_t2], dim="x")
ds_m = ds_m.sortby('x')

# visualise
ds_m[0].plot()
Вот полученный рисунок со множеством вертикальных белых линий:
[img]https:/ /i.sstatic.net/lGgGlrS9.png[/img]

Будем очень признательны за любую помощь в правильном объединении этих файлов.

Подробнее здесь: https://stackoverflow.com/questions/791 ... ith-xarray
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»