интерполировать данные в треугольную сетку - PullRequest
0 голосов
/ 15 мая 2019

Существует много вопросов (и ответов) для людей, которые интерполируют неструктурированные данные в структурированный вывод.решения, которые включают сетку сетки или двумерные сплайны.Однако я ищу обратное.Как я могу интерполировать структурированные данные в неструктурированную (delaulany) треугольную (быстро)?

Данные, которые у меня есть, загружаются с помощью meshio как часть pygmsh.

import meshio as mio
data = mio.read(fname)

data.cells['vertex'].shape
Out[128]: (2906, 1)
data.cells['triangle'].shape
Out[129]: (213898, 3)

plt.figure()
plt.tripcolor(data.points[:, 0], data.points[:, 1], -data.points[:, 2])
plt.triplot(data.points[:, 0], data.points[:, 1], 'k.', ms=2)

показывает график ниже shoreline data.У меня есть новые данные, которые я пытаюсь обновить на этой треугольной сетке.Я планировал интерполировать значения регулярно структурированных данных в одни и те же точки пространства, а затем обновлять значения треугольной сетки.

1 Ответ

0 голосов
/ 15 мая 2019

Самое близкое, что я нашел к этому, это Python: интерполяция в треугольной сетке

Отработка этого ответа и расширение примерами.

newBathy['lon'].shape
Out[154]: (1040, 271)
newBathy['lat'].shape
Out[155]: (1040, 271)
newBathy['elevation'].shape
Out[156]: (1040, 271)
#I have to flatten so i don't get a shape error 
triObj = tri.Triangulation(newBathy['lon'].flatten(), newBathy['lat'].flatten()) 
ftri = tri.LinearTriInterpolator(triObj, newBathy['elevation'].flatten())
newZs = ftri(data.points[:, 0], data.points[:, 1])

Это оставляет меня с данными только в небольшой части известного домена, но я могу обновить немаскированные значения в новых Z из значений из data.points([:,3]). Не совсем понял лучший способ, поскольку кубическая интерполяция занимает некоторое время и заставляет мой компьютер звучать как космический корабль. Линейный четко работает, но может выглядеть лучше.

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...