интерполяция точек сетки данных wrf на lat lon в python с numpy и scipy

Я новичок в python, и я пытаюсь написать функцию, которая будет брать массив numpy из файла netcdf с размерами [время, высота, долгота, широта] и интерполировать функцию на указанные широту и долготу. Я просмотрел scipy.interpolate, но все еще не уверен, что оттуда делать. любая помощь?


person Barry Baker    schedule 09.08.2012    source источник
comment
Это должно быть возможно с scipy.interpolate.griddata: docs .scipy.org / doc / scipy / reference / created /. Пожалуйста, опубликуйте образцы данных и код, который у вас уже есть.   -  person Jakob S.    schedule 09.08.2012
comment
Данные уже находятся в регулярной сетке? (Я спрашиваю, потому что это часто бывает с netcdf.) Если так, использование griddata будет довольно неэффективным. Вы, вероятно, захотите вместо этого scipy.ndimage.map_coordinates.   -  person Joe Kington    schedule 09.08.2012
comment
Если данные уже находятся в сетке (я так не предполагал), @JoeKington совершенно прав!   -  person Jakob S.    schedule 09.08.2012
comment
Если вы используете интерполяцию для чего-то действительно важного для вас, вам может потребоваться осторожность вдали от экватора, поскольку расстояние между линиями меняется.   -  person Ken    schedule 09.08.2012
comment
Следующая версия (0.11.0) Scipy будет иметь RectSphereBivariateSpline, который должен быть подходящим для этой цели: docs.scipy.org/doc/scipy/reference/generated/   -  person pv.    schedule 13.08.2012
comment
Спасибо всем за ответ. Я даже не совсем уверен, с чего начать. потому что у меня есть 2-мерный массив для широты и долготы, поэтому lat = [x, y] и lon = [x, y] в сетке. теперь у меня есть другое значение, допустим, скорость ветра, которая также имеет вертикальную составляющую, поэтому ws = [z, x, y]. Я хочу интерполировать скорость ветра на значение широты и долготы, отличное от регулярной сетки, предоставляемой широтой и долготой. я действительно не понимаю, как какая-либо из этих функций действительно делает то, что мне нужно.   -  person Barry Baker    schedule 14.08.2012
comment
Извините, я был немного занят над своей диссертацией в последнее время, и у меня не было много времени над этим поработать. Это решение, которое я придумал. По сути, это просто средневзвешенное значение из 9 ближайших точек сетки в большом круге от желаемого местоположения. любая помощь по ускорению этого процесса или обнаруженные вами ошибки, дайте мне знать. КОД --------------- ›ссылка < / а>   -  person Barry Baker    schedule 24.08.2012
comment
Мне удалось придумать простой способ сделать это с помощью библиотеки pyresample. Это позволило мне определить свою сетку WRF, а затем сетку наблюдений. Он интерполирует с использованием pyKDTree и работает очень быстро.   -  person Barry Baker    schedule 10.01.2017


Ответы (2)


Я не могу сказать из вопроса, хотите ли вы (а) интерполировать весь набор данных в новый набор координат широты / долготы или (б) получить значение в одном месте широты / долготы.

В любом случае, если вы не женаты на том, чтобы делать это в python, было бы намного проще использовать remapgrid в Операторы климатических данных (убедитесь, что вы устанавливаете с поддержкой netCDF). Это требует, чтобы файлы netCDF следовали CF-соглашениям (см. Эту запись о том, как сделать ваш файл WRF CF-совместимым).

Документацию по remapgrid можно найти здесь. См., В частности, раздел 1.3 (стр. 9-12) для получения информации о параметрах сетки и раздел 2.10 (начало стр. 106) для получения информации о методах интерполяции. Есть несколько вариантов переназначения, и команда, которую вы используете, зависит от вашего приложения.

(a) Вот пример переназначения с использованием билинейной интерполяции на гауссову (128x64) сетку

cdo remapbil,n32 wrfout_d01_1999-01-01-01_00:00:00.nc out.nc

(b) Вот пример переназначения с использованием сопоставления ближайшего соседа с одной точкой широты и долготы:

cdo remapnn,lon=-107.0_lat=34.0 wrfout_d01_1999-01-01-01_00:00:00.nc out.nc
person eclark    schedule 21.05.2015

Вы можете использовать XESMF для его регистрации.

В нем есть руководства для GEOSChem, но почти то же самое для WRF.

Я написал блокнот о том, как регистрировать Данные WRF.

person Xin Zhang    schedule 25.11.2018