У меня есть файл .nc
, который я открываю с помощью xarray
в качестве набора данных. Этот набор данных имеет 3 переменные:
Его размеры:
Я сам создал набор данных и допустил ошибку, потому что хотел «захватить» временные ряды определенной точки «Полосы» на основе значения ее координат:
dataset.Band.sel(longitude=6.696e+06,latitude=4.999e+05,method='nearest')
(Я основывал значения для получения первых значений обеих переменных).
Проблема в том, что когда я создавал файл .nc
, я вводил широту и долготу не как размеры, а как переменные. Есть ли способ использовать мой код, но изменить несколько вещей, чтобы я мог получить точку на основе ближайших значений переменных широты и долготы? Или я должен полностью переопределить размеры моего .nc
, чтобы заменить x
и y
на longitude
и latitude
?
нет хорошего способа выбрать данные, используя значения широты/долготы - поскольку ваши данные структурированы, у вас, по сути, есть многомерные координаты.
Тем не менее, если ваша широта/долгота на самом деле индексируется только x OR y; то есть latitude
имеет одно и то же значение, повторяющееся снова и снова для всех уровней x
и одно и то же для longitude
с y
, вы можете довольно легко реорганизовать свои данные:
lats = dataset.latitude.mean(dim='x')
lons = dataset.longitude.mean(dim='y')
dataset = dataset.drop(['latitude', 'longitude'])
dataset.coords['latitude'] = latitude
dataset.coords['longitude'] = longitude
dataset = dataset.swap_dims({'x': 'longitude', 'y': 'latitude'})
На этом этапе ваши данные индексируются time, latitude, longitude
, и вы можете выбрать данные по своему усмотрению.
Спасибо ! Это то, что я в итоге сделал, я должен был предвидеть проблему, но приятно видеть, что нет прямого способа сделать это.