Moviepy结合Basemap,用python制作旋转地球视频

python语言可以方便地制作和编辑视频,制作视频的核心是moviepy库,在使用moviepy的基础上综合调用其它的功能库,就可以做出各种有趣的视频。旋转的地球是比较常见的一个视频内容,我们看看怎样用20行代码实现它。
在这里插入图片描述

【视频生成的基本概念】

视频的本质就是连续的图片,利用人眼的视觉暂留而形成运动的感觉。视频有一个基本的参数叫做:FPS(frames per second):每秒多少张图片。如果一个视频的FPS=20,也就是每秒会闪过20张图片。

所以,使用moviepy生成视频的一个核心就是如下的两句代码:

animation = VideoClip(make_frame, duration=3.6)
animation.write_videofile("earth.mp4", fps=20)
  • 第一句代码定义一个动画
    核心中的核心:make_frame是一个自定义函数,这个函数接收一个时间参数,返回的是一张图片。
    duration是视频总时长,秒为单位。比如,这里是生成一个3.6秒的动画。

  • 第二句,以某个把这个帧率(FPS)将动画保存为视频文件。其实也完全可以保存为GIF,将第二行改为如下的代码:

animation.write_gif("earth.gif", fps=20)

【怎样画地球】

剩下的工作,就是在make_frame函数中,根据传入的时间参数,画出地球的图片了。我们将使用另外一个库:Basemap。basemap提供了非常方便的画地图的功能。它的安装略有复杂,但按照网上提示肯定可以操作成功,。

我们来看看地球怎样画。

def make_frame(t):
	# 地图信息,采用正射投影(ortho),就有立体效果
	# 面向0纬度,经度随时间而变,就出现了旋转效果!
	map = Basemap(projection='ortho', lat_0=0, lon_0=-t*100)
	# 地球的底色就是海洋
	map.drawmapboundary(fill_color='aqua')
	# 画大洲
	map.fillcontinents(color='coral',lake_color='aqua')
	# 海岸线
	map.drawcoastlines()
	# 国界线
	map.drawcountries()
# 将结果转换为图片返回
return mplfig_to_npimage(fig)

是不是非常简单呢?

【加上晨昏线】

在这里插入图片描述
在太阳的照射下,地球上才有白天和黑夜。地球是一个球体,恰好半球黑天,半球白天。白天半球和黑夜半球的交界处,就称为晨昏线,由于它正好是一个圆形,也称为晨昏圈。我们注意到晨昏线的角度是倾斜的,因为地轴与太阳平面有一个23.5度的交角。我们还看到,北极部分完全笼罩在阴影中,而南极部分则在阳光下。说明现在是北半球的冬天,北极处于极夜状态,而南极是极昼。
只需增加两行代码,就可以实现这一功能。

    time= datetime.fromtimestamp(t*24*1000)
    map.nightshade(time, delta=0.2)

我们这里,将传入的参数t做一个转换。因为实际制作3.6秒视频地球旋转360度,而在实际上,地球是24个小时才转动360度。相当于放大了24*1000倍。这样的参数转换,才能让晨昏圈处于稳定的位置。

【总结】

本文讲了制作视频的基本原理,以及基于basemap的地图(地球)画法,你记住了么?

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
Python basemap是一个用于地图绘制和制图的Python库。它的功能强大,可以在地理上绘制各种类型的地图,如地理热图、气象图、地理标记等。 首先,Python basemap提供了各种投影方式,如正射投影和等距圆柱投影等。这些投影方式允许用户根据需要来选择合适的投影方式来呈现地图。此外,还可以设置地图的中心和范围,从而实现局部地区的放大和整体地图的展示。 其次,Python basemap还支持添加和绘制各种地理信息的功能。它可以导入和绘制地形数据、海岸线、边界线、湖泊等要素,使得地图更加真实和细致。同时,还可以通过添加经纬度坐标网格线来更好地帮助用户定位和标记位置。 另外,Python basemap还支持绘制各种标记和符号,以帮助用户更好地进行数据展示。它可以在地图上绘制散点图、连线图、区域图等,以及添加标签和注释来更好地说明数据和地理信息。 此外,Python basemap还提供了许多绘图和制图的工具和功能,如颜色填充、图例设置、图像合并等。这些功能可以使用户更加轻松地完成地图绘制任务,并且可以根据需求来调整和优化地图的输出效果。 总的来说,Python basemap是一个功能强大且易于使用的工具,可以帮助用户在地图绘制和制图方面取得令人满意的结果。无论是进行数据可视化、地理分析还是地理教学,它都是一个值得推荐的选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

圣手书生肖让

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值