R: NetCDF->растр->получение значений в нерегулярной сетке
-
- Гуру
- Сообщения: 964
- Зарегистрирован: 22 май 2010, 20:20
- Репутация: 154
R: NetCDF->растр->получение значений в нерегулярной сетке
Здравствуйте.
Кто-нибудь решал в R Cran следующую задачу:
регулярный по Latitude/Longitude NetCDF-файл
перевести в растр и по этому растру
получить значения в узлах нерегулярной сетки. (?)
Поделитесь опытом, пожалуйста.
Кто-нибудь решал в R Cran следующую задачу:
регулярный по Latitude/Longitude NetCDF-файл
перевести в растр и по этому растру
получить значения в узлах нерегулярной сетки. (?)
Поделитесь опытом, пожалуйста.
Последний раз редактировалось nickleb 02 июн 2015, 09:42, всего редактировалось 1 раз.
-
- Гуру
- Сообщения: 4056
- Зарегистрирован: 15 окт 2010, 08:33
- Репутация: 1054
- Ваше звание: программист
- Откуда: Казань
Re: R: NetCDF->растр->получение значений в нерегулярной сетк
кто-нибудь решалnickleb писал(а):Здравствуйте.
Кто-нибудь решал в R Cran следующую задачу:
регулярный по Latitude/Longitude NetCDF-файл
перевести в растр и по этому растру
получить значения в узлах нерегулярной сетки. (?)
Поделитесь опытом, пожалуйста.
1) Интерполировать в Lon/Lat нельзя, переводим точки в какую-нибудь равнопромежуточную проекцию
2) Интерполируем в узлы прямоугольной регулярной сетки (это растр, но в табличном виде). Границы берем с запасом, чтобы целевая область уместилось. Интерполируем сплайнами из пакета MBA
Сетку строим так
Код: Выделить всё
grid.XX<_grid.X0+grid.nX*grid.dX
grid.YY<_grid.Y0+grid.nY*grid.dY
grid.XY<-expand.grid(grid.XX,grid.YY)
Код: Выделить всё
col<-floor((target$X-grid.X0)/grid.dX)
row<-floor((target$Y-grid.Y0)/grid.dY)
Код: Выделить всё
rX<-target$X-(grid.X0+grid.dX*col)
rY<-target$Y-(grid.Y0+grid.dY*col)
Код: Выделить всё
Z10<-(row+1-1)*grid.nX+col Z11<-(row+1-1)*grid.nX+col+1
Z00<-(row-1)*grid.nX+col Z01<-(row-1)*grid.nX+col+1
проще прямо в пункте (2) интерполировать на целевую сетку, что резко сокращает объем работы
-
- Гуру
- Сообщения: 964
- Зарегистрирован: 22 май 2010, 20:20
- Репутация: 154
Re: R: NetCDF->растр->получение значений в нерегулярной сетк
... спасибо-спасибо, gamm! захотелось сразу в привычный старый Surfer: пересчитать в Ламберта Азимутальную, kriging'овать в регулярку, и от-slice'-овать по полученному grid'у в иррегулярку .. но Surfer старый и NеtCDF не грузит... по R: вашу технологическую линеечку посмотрю-изучу...
-
- Гуру
- Сообщения: 964
- Зарегистрирован: 22 май 2010, 20:20
- Репутация: 154
Re: R: NetCDF->растр->получение значений в нерегулярной сетк
Достопочтимый gamm, доброе утро! А в R Вы чем и как Kriging'уете?gamm писал(а):nickleb писал(а): 2) Интерполируем в узлы прямоугольной регулярной сетки (это растр, но в табличном виде). Границы берем с запасом, чтобы целевая область уместилось. Интерполируем сплайнами из пакета MBA
Сетку строим так[/code]Код: Выделить всё
grid.XX<_grid.X0+grid.nX*grid.dX grid.YY<_grid.Y0+grid.nY*grid.dY grid.XY<-expand.grid(grid.XX,grid.YY)
-
- Гуру
- Сообщения: 4056
- Зарегистрирован: 15 окт 2010, 08:33
- Репутация: 1054
- Ваше звание: программист
- Откуда: Казань
Re: R: NetCDF->растр->получение значений в нерегулярной сетк
Что-то мне подсказывает, что в surfer вы никакой вариограммы не строили, а использовали линейную вариограмму по умолчанию. Т.е. строили сплайн. Поэтому не мудрите, и используте MBA, это тоже сплайны, очень быстрые.
[ Сообщение с мобильного устройства ]
[ Сообщение с мобильного устройства ]
-
- Гуру
- Сообщения: 964
- Зарегистрирован: 22 май 2010, 20:20
- Репутация: 154
Re: R: NetCDF->растр->получение значений в нерегулярной сетк
Поля у меня исходные происхождения модельного... Мне только значения для узлов своей сетки получить... Что-ж, по-э-R-ю по Вашей схеме..gamm писал(а):Что-то мне подсказывает, что в surfer вы никакой вариограммы не строили, а использовали линейную вариограмму по умолчанию. Т.е. строили сплайн. Поэтому не мудрите, и используте MBA, это тоже сплайны, очень быстрые.
[ Сообщение с мобильного устройства ]
-
- Гуру
- Сообщения: 964
- Зарегистрирован: 22 май 2010, 20:20
- Репутация: 154
Re: R: NetCDF->растр->получение значений в нерегулярной сетк
Уважаемый gamm, а через MBА-package получить в ASCII-файл узлы проинтерполированного 3D-положение изолинии по исходному многоуровенному NetCDF возможно?gamm писал(а):Интерполируем сплайнами из пакета MBAnickleb писал(а):
-
- Гуру
- Сообщения: 4056
- Зарегистрирован: 15 окт 2010, 08:33
- Репутация: 1054
- Ваше звание: программист
- Откуда: Казань
Re: R: NetCDF->растр->получение значений в нерегулярной сетк
ничего не понял - ни что есть на входе, ни что нужно получить на выходе ... NetCDF - сетка, изолиний там нет; и непонятно, к чему относится "многоуровневый"; и что на выходе нужно - сетку? нужны структуры данных, а не форма представления (ASCII)nickleb писал(а):а через MBА-package получить в ASCII-файл узлы проинтерполированного 3D-положение изолинии по исходному многоуровенному NetCDF возможно?
-
- Гуру
- Сообщения: 964
- Зарегистрирован: 22 май 2010, 20:20
- Репутация: 154
Re: R: NetCDF->растр->получение значений в нерегулярной сетк
на входе NetCDF с Temp[Lat/Lon/Depth/] в географии... надо получить глубину изотермы ноль градусов по этому параллелепипеду в задаваемом наборе точек с отличными от исходного набора Lat/Lon-координатами...gamm писал(а):ничего не понял - ни что есть на входе, ни что нужно получить на выходе ... NetCDF - сетка, изолиний там нет; и непонятно, к чему относится "многоуровневый"; и что на выходе нужно - сетку? нужны структуры данных, а не форма представления (ASCII)nickleb писал(а):а через MBА-package получить в ASCII-файл узлы проинтерполированного 3D-положение изолинии по исходному многоуровенному NetCDF возможно?
-
- Гуру
- Сообщения: 4056
- Зарегистрирован: 15 окт 2010, 08:33
- Репутация: 1054
- Ваше звание: программист
- Откуда: Казань
Re: R: NetCDF->растр->получение значений в нерегулярной сетк
1) насколько я понял, есть 3D сетка со значениями температурыnickleb писал(а):на входе NetCDF с Temp[Lat/Lon/Depth/] в географии... надо получить глубину изотермы ноль градусов по этому параллелепипеду в задаваемом наборе точек с отличными от исходного набора Lat/Lon-координатами...
2) получаем отметки в вертикальных столбцах: грузим столбец (или несколько, и ли все, если влазит), и для каждого столбца находим глубину нуля (используем approx(), взяв x=T, y=depth, xout=0 - я предполагаю, что там монотонность, иначе просто перебором)
3) имеем точкb (Lon,Lat,depth), которые пересчитываем в какую-нибудь равнопромежуточную проекцию, которая не сбоит в ваших широтах, получаем набор (Xprj,Yprj,depth)
4) переводим целевые координаты в ту же проекцию, и интерполируем на них, используя "точечный" вариант МВА
5) profit
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 5 гостей