- 积分
- 55960
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2011-6-21
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 MeteoInfo 于 2023-4-6 16:55 编辑
三维模型加载后可以用model函数形成一个Model对象,绘图缩放时大小固定,可以设置位置、旋转角度、缩放比例等。下面的例子加载了一个飞机三维模型以及包括经纬度和高度数组的飞行路线,在循环中设置飞机的位置,根据当前点和下一个的坐标确定旋转角度(只旋转Z轴,飞机保持水平)。运行脚本可以看到飞机沿设定的路线飞行的三维动图。可以用鼠标旋转、缩放三维图形进行更多角度的观察。
- import time
- # Read airplane trajectory data
- fn = 'D:/Temp/ascii/guiji.csv'
- df = DataFrame.read_table(fn, delimiter=',', format='%i%{yyyy/M/dd H:mm}D%5f')
- lon = df['Longitude'].values
- lat = df['Latitude'].values
- alt = df['Altitude'].values
- n = len(lon)
- # Read airplane model data
- mfn = 'D:/Temp/3d/11805_airplane_v2_L2.obj'
- T, x, y, z, normal = plt.load_obj_model(mfn)
- # Plot
- ax = axes3d(axes_zoom=True)
- lighting(mat_specular=1)
- #geoshow('cn_province', edgecolor='b')
- ax.plot(lon, lat, alt, linewidth=2, color='r')
- xlim(111, 113)
- ylim(40, 41)
- zlim(0, 5000)
- xlabel('Longitude')
- ylabel('Latitude')
- zlabel('Altitude (m)')
- antialias()
- ap = model(T, x, y, z, facecolor='c', scale=0.3, location=[lon[0],lat[0],alt[0]])
- n = len(lon)
- for i in range(0, n-1, 20):
- print(i)
- ap.setLocation([lon, lat, alt])
- a = np.rad2deg(np.atan2(lat[i+1]-lat, lon[i+1]-lon))
- ap.setRotation([0,0,a-90])
- plt.draw()
- time.sleep(0.05)
20230406_142141.mp4
(8.17 MB, 下载次数: 15)
|
|