Преобразовать переменную netcdf "land" в широту и долготу с помощью Python

У меня есть глобальный набор метеорологических данных, и я хочу получить доступ к данным для определенной сетки (широта, долгота). Однако данные сжимаются, т.е. интересующие параметры имеют не размеры (широта, долгота), а "земля". "земля" - это одномерный массив целых чисел.

Я импортировал файл в Python, используя

import scipy.io.netcdf as netcdf

path = '/path/.../ncfile.nc'

ncfile = netcdf.netcdf_file(path,'r')

Затем я проверил, какие были переменные, и обнаружил, что, например, переменная "Rainf" имеет размеры (tstep, land). Я исследовал это в Интернете и нашел файл landmask_gswp.nc ( http://dods.ipsl.jussieu.fr/gswp/Fixed/landmask_gswp.nc), который должен содержать информацию, которая мне нужна, то есть, как извлекать информацию (лат, лон) из "земли". Этот файл содержит переменные nav_lat, nav_lon и landmask. nav_lat и nav_lon соотносят, насколько я понимаю, координаты переменных x и y с широтой и долготой. "landmask" - это двумерный массив, содержащий информацию "Ocean = 0" или "land = 1.". Действительно, количество точек совпадает с длиной моего "land" 1D массива. Тем не менее, я не могу понять, как извлечь из него (лат,lon) информацию. Любая помощь приветствуется.

Я надеюсь, что сделал мою проблему несколько понятной; У меня нет опыта в программировании и / или использовании netcdf, поэтому я надеюсь, что вы можете помочь! Заранее спасибо!

2 ответа

Некоторые другие могут найти это полезным, так что вот ответ на проблему. Друг понял это для меня. "land" - это индекс уплощенного массива nav_lat, nav_lon, т.е. первая запись "land" соответствует широте: lat.flat[land[0]] и lon.flat[land[0]].

Вы можете извлечь переменные из ncfile с помощью

lat = ncfile.variables['nav_lat'][:,:]
lon = ncfile.variables['nav_lon'][:,:] 

Это создаст двумерные массивы lat а также lon,

Другие вопросы по тегам