数据是数据科学中必不可少的一环。如果没有数据,那么数据科学中所有的算法都将是一纸空谈,毫无利用价值。


机器学习和深度学习的训练也依赖于数据的输入。最近两年机器学习和深度学习在气象领域的应用也逐渐火热起来,而且不少机构都在举办机器学习和深度学习在气象应用的比赛。


近些年来人们也越加关注大气污染的情况,尤其是空气质量,关乎到人们生活的各个方面。考虑到目前国内没有多少关于空气质量数据共享的平台。除了环保部总站提供的实时数据之外,也有一些网站提供了国控站的实时数据以及历史数据,但是这些数据站提供的数据仅是空气质量的数据,而且除了总站平台之外,其余的实时数据分享平台(比如pm25.in)提供的数据有时会因为某些原因导致数据中断。因此出于项目需要,调查了不少提供空气质量数据的网站,然后找到 aqicn.org 网站可以获取空气质量数据,此外还提供了一些气象数据(比如温度,气压,湿度和风速)。但是由于此网站不提供历史数据接口,因此只能通过其提供的实时数据API获取数据。


多源数据库的构建具有不可忽视的意义尤其是对于利用机器学习和深度学习来预测空气质量的项目来说,仅仅需要空气质量数据是远远不够的,因为空气质量的变化依赖于很多因素:比如气象条件,大气的环流背景会对污染物的传输具有非常重要的影响,而且污染源的排放对于污染物的变化也具有非常重要的影响。


微软亚洲研究院曾利用大数据对空气质量进行了预测:


其中利用的不仅仅是空气质量数据,而且还有气象数据以及其它的一些数据。所用到的厂矿数据和人口数据类似数值模式中所使用的人为排放源。


本文不对这些细节进行过多探讨,关于这些内容的讨论将放到后面。上述的讨论只是想说明构建多数据源数据库的重要性。


本来此项目是想作为第一个正式项目来维护的,但是由于一些原因,比如国控站太多,又由于python的GIL锁限制导致下载数据的时候会需要不少资源(测试了12个核,可以在30分钟左右获取到所有国控站数据,这不仅取决于服务器可分配资源,而且还受到网络响应的影响),导致无法继续单独维护此项目运行。


目前程序已经持续运行一个月左右,由于我能使用的资源有限,目前仅持续获取了大概600个站点一个月左右的数据。


简单的对此项目进行一下介绍:


waqip项目是为了从aqicn.org网站下载中国各国控站的空气质量数据以及气象数据,并且存储到数据库。

其中包括了四个主要脚本:

  • aqi.py : 可以根据pm2.5, pm10, co, no2, so2, o3的值计算IAQI和AQI,也可以根据各个要素的分指数计算各要素的值。

  • waqip.py : 下载空气质量数据(包括各要素的分指数以及AQI)以及气象数据(包括温度,气压,湿度和风速等数据)。

  • get_cities_china.py : 获取中国所有国控站的链接。

  • get_waqip_all.py : 下载数据并存储到数据库。采用多进程下载,脚本中测试时使用了12个核。


(注意:为了能够成功下载数据,必须要从aqicn.org网站申请token。)

waqip.sh 脚本可用于设置 crontab 定时任务,而 cities_china_url.csv 文件中包含了中国所有国控站的信息。

程序已经上传到Github,链接见文末。无论你是对这个项目本身感兴趣,还是想学习python,都可以关注一下。



https://github.com/bugsuse/waqip

本文分享自微信公众号 - 气象杂货铺(meteogs)。
如有侵权,请联系 [email protected] 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

03-14 15:20