如何使用python从给定坐标创建3D表面?



我有一些离散的高度坐标,我需要创建一个光滑的表面,我将继续使用它。我需要为该曲面中的所有坐标提供高度。我正在考虑使用 3D 样条,但我在应用类似问题中建议的方法时遇到了麻烦。我不是一个有经验的程序员,所以我可能会发现任何建议都有帮助。如果我可以问一些与之前已经讨论过的非常相似的事情,请原谅我。我正在使用Python 3.6。

编辑

我做了一个小清单(类似于我所拥有的(。

Z=[]
Z.append([20.2, 20.1, 35])
Z.append([20.1, 24.5, 36])
Z.append([21.0, 23.2, 33])
Z.append([22.3, 20.0, 34])
Z.append([22.3, 19.5, 28])
Z.append([20.1, 19.5, 27])
Z.append([20.1, 24.6, 31])
Z.append([22.3, 24.6, 32])

这里的第一个数字代表经度,第二个数字代表纬度,第三个数字代表海拔高度。我需要制作一个"表面"(不一定是绘制它(,其中包含有关此矩形之间所有坐标的信息。

我相信这听起来可能不清楚,但问题是我不知道我正在寻找的确切结构或数据类型。

一种可能性是使用 scipy 的方法griddata

下面是如何将近东邻居插值方法与数据结合使用的小示例:

import numpy as np
from scipy.interpolate import griddata
# --------------------
Z=[]
Z.append([20.2, 20.1, 35])
Z.append([20.1, 24.5, 36])
Z.append([21.0, 23.2, 33])
Z.append([22.3, 20.0, 34])
Z.append([22.3, 19.5, 28])
Z.append([20.1, 19.5, 27])
Z.append([20.1, 24.6, 31])
Z.append([22.3, 24.6, 32])
# ---------------------------
xin=np.array(Z)[:,0];
yin=np.array(Z)[:,1];
zin=np.array(Z)[:,2];
# ----------------------------
xout=np.linspace(20.,23.,10);
yout=np.linspace(19.,25.,10);
xout,yout = np.meshgrid(xout,yout);
# ----------------------------
zout=griddata((xin,yin),zin,(xout,yout),'nearest');
# -----------------------------
from pylab import pcolormesh,show
pcolormesh(xout,yout,zout);show();

最新更新