1

我目前正在尝试根据我拍摄的一些地形测量数据创建一个 3D 曲面图。数据由基于 UTM 的 GPS 位置组成。然后我创建了一个网格,使用最近邻法进行插值,并使用 plotly 绘制了曲面。我的主要问题来自于我的表面图非常尖锐,而仅原始点的散点图看起来更像我想要的。作为参考,这是海滩上 4 个沙丘的地形数据。

我想我已经将问题缩小到插值方法,但我只是不知道如何解决它,以便图形更加平滑。

提前感谢您的任何意见/建议。

import numpy as np
import plotly.graph_objects as go
import pandas as pd
from scipy.interpolate import griddata

# Read Data
eBAD = pd.read_csv('EastBeachAllDunes20190202.txt', header = None, delimiter = ',')
eBAD.columns = ["Point #","Northing","Easting","Zed","NaN"]
eBAD = pd.DataFrame(data = eBAD)

# Define Variables
x = np.array(eBAD.Easting)
y = np.array(eBAD.Northing)
z = np.array(eBAD.Zed)

# Creating Mesh
xi = np.linspace(min(x), max(x))
yi = np.linspace(min(y), max(y))
X, Y = np.meshgrid(xi, yi)
Z = griddata((x, y), z, (xi[None,:], yi[:,None]), method='nearest')

# Plot Scatter of Raw GPS Data 
fig = go.Figure(data=[go.Scatter3d(x=x, y=y, z=z,mode='markers')])
#fig.update_layout(scene_aspectmode='data')
fig.update_layout(scene_aspectmode='manual',
                  scene_aspectratio=dict(x = 5, y = 5, z = 0.5))
fig.show()

# Plot Surface Using Mesh
fig2 = go.Figure(data=[go.Surface(x = xi, y = yi, z=Z)])
#fig2.update_layout(scene_aspectmode='data')
fig2.update_layout(scene_aspectmode='manual',
                  scene_aspectratio=dict(x = 5, y = 5, z = 0.5))
fig2.show()

# Plot Surface Using Mesh
fig3 = go.Figure(data=[go.Surface(x = xi, y = yi, z=Z),go.Scatter3d(x=x, y=y, z=z,mode='markers')])
#fig2.update_layout(scene_aspectmode='data')
fig3.update_layout(scene_aspectmode='manual',
                  scene_aspectratio=dict(x = 5, y = 5, z = 0.5))
fig3.show()

散点图

曲面图

曲面图上的散点图。在这里,您可以看到较高的点不会创建良好的表面可视化。

4

0 回答 0