爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 1791|回复: 1

三维飞行路线动图

[复制链接]

新浪微博达人勋

发表于 2023-4-6 16:14:24 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
本帖最后由 MeteoInfo 于 2023-4-6 16:55 编辑

三维模型加载后可以用model函数形成一个Model对象,绘图缩放时大小固定,可以设置位置、旋转角度、缩放比例等。下面的例子加载了一个飞机三维模型以及包括经纬度和高度数组的飞行路线,在循环中设置飞机的位置,根据当前点和下一个的坐标确定旋转角度(只旋转Z轴,飞机保持水平)。运行脚本可以看到飞机沿设定的路线飞行的三维动图。可以用鼠标旋转、缩放三维图形进行更多角度的观察。

  1. import time

  2. # Read airplane trajectory data
  3. fn = 'D:/Temp/ascii/guiji.csv'
  4. df = DataFrame.read_table(fn, delimiter=',', format='%i%{yyyy/M/dd H:mm}D%5f')
  5. lon = df['Longitude'].values
  6. lat = df['Latitude'].values
  7. alt = df['Altitude'].values
  8. n = len(lon)

  9. # Read airplane model data
  10. mfn = 'D:/Temp/3d/11805_airplane_v2_L2.obj'
  11. T, x, y, z, normal = plt.load_obj_model(mfn)

  12. # Plot
  13. ax = axes3d(axes_zoom=True)
  14. lighting(mat_specular=1)
  15. #geoshow('cn_province', edgecolor='b')
  16. ax.plot(lon, lat, alt, linewidth=2, color='r')
  17. xlim(111, 113)
  18. ylim(40, 41)
  19. zlim(0, 5000)
  20. xlabel('Longitude')
  21. ylabel('Latitude')
  22. zlabel('Altitude (m)')
  23. antialias()
  24. ap = model(T, x, y, z, facecolor='c', scale=0.3, location=[lon[0],lat[0],alt[0]])
  25. n = len(lon)
  26. for i in range(0, n-1, 20):
  27.     print(i)
  28.     ap.setLocation([lon, lat, alt])
  29.     a = np.rad2deg(np.atan2(lat[i+1]-lat, lon[i+1]-lon))
  30.     ap.setRotation([0,0,a-90])
  31.     plt.draw()
  32.     time.sleep(0.05)


flight_3d_path.png

20230406_142141.mp4 (8.17 MB, 下载次数: 15)
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2023-6-3 22:04:22 | 显示全部楼层
{:eb502:}{:eb502:}{:eb502:}{:eb502:}
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表