我的目标是将纹理(即图像)悬垂在表面上并使用python在3D中可视化。该应用程序正在查看DEM上的正射影像,因此我使用gdal导入我的数据(图像和DEM)。我尝试使用matplotlib中的plot_surface,但似乎无法向表面添加纹理。
这是当前代码:
from osgeo import gdal
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
from matplotlib.gridspec import GridSpec
import numpy as np
ds = gdal.Open('MyDEM.cub')
dem = ds.ReadAsArray()
do = gdal.Open('MyOrtho.cub')
or = do.ReadAsArray()
xres = gt[1]
yres = gt[5]
X = np.arange(gt[0], gt[0] + dem.shape[1]*xres, xres)
Y = np.linspace(gt[3], gt[3] + dem.shape[0]*yres, ds.RasterYSize)
X, Y = np.meshgrid(X, Y)
fig, ax = plt.subplots(figsize=(16,8), subplot_kw={'projection': '3d'})
surf = ax.plot_surface(X,Y,dem,rstride=1, cstride=1,linewidth=0, antialiased=True,cmap=plt.cm.RdYlBu_r)
fig.colorbar(surf, shrink=0.4, aspect=20)
plt.show()
我该如何使用或阵列作为纹理(例如,或可以具有与dem不同的分辨率/大小,但稍后再进行管理),我想首先使用一个带有纹理的愚蠢3D表面。在Matlab中这很容易,但是如何使用Python做到这一点呢?任何的想法 ?
Axes3D.plot_surface(X, Y, Z, *args, **kwargs)
创建表面图。
默认情况下,它将以纯色阴影着色,但是通过提供
cmap
参数也支持颜色映射。
因此,这matplotlib
似乎不支持在曲面图上使用任意图像。您将需要确定另一个提供此功能的库(快速搜索mayavi
可能会满足您的要求)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句