You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用纬度、经度、高度数据绘制飞行器轨迹线框图

3D经纬度高度线框图实现指导

现有代码问题修正

  • 未先清洗数据就提取x/y/z:空值会导致绘图出错,应该先执行dropna()再提取字段
  • df1未定义就调用,应该直接对读取的df做清洗
  • 刻度设置在2D画布上,后续创建3D轴后会失效,应该在3D轴对象上设置
  • 缺少实际绘制线框图/轨迹线的代码

可运行完整实现代码

场景1:单条时序轨迹3D线图

适合你提供的时序经纬度高度数据,直接绘制连续移动轨迹

from mpl_toolkits.mplot3d import Axes3D
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

# 1. 读取并清洗数据
df = pd.read_csv('/home/luke/Downloads/dump1090-127_0_0_1-170911.txt', sep=',', skiprows=0, low_memory=False)
# 仅保留三个关键字段都不为空的行
df = df.dropna(subset=['latitude', 'longitude', 'altitude'])

# 2. 提取坐标字段
x = df['longitude']
y = df['latitude']
z = df['altitude']

# 3. 创建3D画布
fig = plt.figure(figsize=(10,7))
ax = plt.axes(projection='3d')

# 4. 绘制3D轨迹线
ax.plot3D(x, y, z, 'steelblue', linewidth=2, label='移动轨迹')

# 5. 设置轴标签与刻度
ax.set_xlabel('经度(Longitude)', fontsize=10)
ax.set_ylabel('纬度(Latitude)', fontsize=10)
ax.set_zlabel('高度(Altitude)', fontsize=10)
ax.set_xticks(range(-3,0))
ax.set_yticks(range(50,60))

# 6. 显示图像
ax.legend()
plt.show()

场景2:区域高度网格化线框图

如果你的数据是区域散点数据,需要先对经纬度做网格化插值再绘制曲面线框

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

# 1. 读取清洗数据同上述步骤
df = pd.read_csv('/home/luke/Downloads/dump1090-127_0_0_1-170911.txt', sep=',', skiprows=0, low_memory=False)
df = df.dropna(subset=['latitude', 'longitude', 'altitude'])
x = df['longitude'].values
y = df['latitude'].values
z = df['altitude'].values

# 2. 生成网格化坐标
xi = np.linspace(x.min(), x.max(), 100)
yi = np.linspace(y.min(), y.max(), 100)
Xi, Yi = np.meshgrid(xi, yi)

# 3. 插值得到高度格点值
Zi = griddata((x, y), z, (Xi, Yi), method='linear')

# 4. 绘制3D线框图
fig = plt.figure(figsize=(10,7))
ax = plt.axes(projection='3d')
ax.plot_wireframe(Xi, Yi, Zi, color='purple', rstride=5, cstride=5, linewidth=0.8)

# 5. 设置轴信息
ax.set_xlabel('经度(Longitude)', fontsize=10)
ax.set_ylabel('纬度(Latitude)', fontsize=10)
ax.set_zlabel('高度(Altitude)', fontsize=10)
plt.show()
  • rstride、cstride参数控制线框行列的采样间隔,数值越大线框越稀疏,可根据实际数据量调整

内容的提问来源于stack exchange,提问作者parsns1

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 21:15:07