gpt4 book ai didi

python - 使用 matplotlib 从地形数据创建光滑表面图

转载 作者:太空宇宙 更新时间:2023-11-03 12:05:29 25 4
gpt4 key购买 nike

我有一个代码可以根据纬度、经度和高程数据创建 3d 地形表面。

我正在使用 ax.plot_surface,它创建了一个如下所示的地形表面:

plot1

我想平滑数据以创建看起来更像这样的图片: plot2

有没有更好的方法来平滑网格所做的插值?

my_data 按 [lat,lon,elev] size(912,3) 排序

代码如下

import os
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
from scipy.interpolate import griddata


fig = plt.figure()
ax = Axes3D(fig)
my_data = np.genfromtxt('2014_0.01_v3_HDF5.txt', delimiter = ',', skip_header = 1)
my_data[my_data==0] = np.nan
my_data = my_data[~np.isnan(my_data).any(axis=1)]
X = my_data[:,0]
Y = my_data[:,1]
Z = my_data[:,2]
xi = np.linspace(X.min(),X.max(),(len(Z)/3))
yi = np.linspace(Y.min(),Y.max(),(len(Z)/3))
zi = griddata((X, Y), Z, (xi[None,:], yi[:,None]), method='nearest')

xig, yig = np.meshgrid(xi, yi)

surf = ax.plot_surface(xig, yig, zi, cmap='gist_earth')
fig.colorbar(surf, shrink=0.5, aspect=5)
ax.set_title('2014 ATM Data 0.01 Degree Spacing')
ax.set_xlabel('Latitude')
ax.set_ylabel('Longitude')
ax.set_zlabel('Elevation (m)')
ax.set_zlim3d(0,8000)

最佳答案

您可以替换从最近到三次插值的方法。它给你一个更好的表面。

zi = griddata((X, Y), Z, (xi[None,:], yi[:,None]), method='cubic')

关于python - 使用 matplotlib 从地形数据创建光滑表面图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33287620/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com