登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 15195775117 于 2021-1-31 17:53 编辑
一、时代的趋势
目前,关于大气环境的,无论气象还是环保,都进入了大数据领域。 气象领域,大数据技术分析效率高、发论文快; 环保行业也由【卖仪器】向【卖服务】转变。
基于自身大气物理学和大气环境的专业背景,如何在新时代继续学习发展,成为专家性人才,是我从开始工作就一直思考的事。 上个月,在结束了半个月的“市场巡礼”后,我的思考得到启发和加速,整理构思了大气环境的数据科学“科技树”。
二、对科技树的要求
游戏界有“科技树”一说,意思是通过选择发展不同的技术方向导致不同的研发结果。
点错科技树,后果很严重!
目前数据处理工具非常多,首先面临的是使用什么工具的问题。 环境大数据不仅要解放目前的工作量,还要考虑把自己分析方法做成软件、app或网站,这样才能形成自己的科技产品, 所以,环保大数据对于工具有4大需求:科学计算+制图(包括GIS)+能批量+可做软件。
三、谁是最佳的软件开发语言?
论软件开发,目前主流的只有4个:Java、python、C#、C++。
Java是目前写软件的主流语言,是web开发和app开发的霸主,其软件比python的更稳健; 但是,Java存在2个缺陷: 1、适合团体作战,不适合单人敏捷开发; 2、科学计算、大数据、神经网络等欠缺,扩展性远不如python。
C#目前热度很低,各方面无突出优势,彰显出垄断性霸主微软的不思进取。
C++的运行速度快,但是开发速度很慢,不适合。 php语言:只在服务器端编程应用较多,扎克伯格一开始是用php做Facebook的,现在已经不流行了。
所以,最佳软件开发语言是python, 虽然其自身存在运行速度慢的缺陷,但是可以通过pybind11等工具调用C来解决,numpy库的计算速度也是优化过的。
四、python可利用的资源
Fortran语言,比C更加古老几十年的数值计算语言,目前在气象领域仍在应用。它的生命力在于其计算速度比C还快,但是因为使用群体小,Fortran语言的优化和维护较差,计算速度已经快赶不上C++了,在其历史脚本上改也是痛苦的事,已经不建议用该语言做开发了,但是其以前有用的功能可以用python调用,接口包是f2py。
matlab,科学计算经典软件,主要缺点是图像质量差,仿真建模等功能脚本比较珍贵,可以通过mlab包接入python。
IDL,遥感与可视化专业软件,以前试过用该语言开发,但是该语言小众,资料少,且多为英文,限制了开发速度,GUI不完善,不适合编写商用软件。其脚本可以通过idlpy包接入python。
五、废弃不用的枝杈工具
P.S.这里的取舍是基于我的需求的: 气象和GIS的专业软件:meteoinfo、ArcGIS、GrADS、NCL等,python要么有pyNCL等接口包,要么有替代性功能,不是太需要。 Origin、SPSS无法与python的matplotlib、Pandas、SciPy相比,以前我还用过VB来批量处理excel,现在用xlrd包和pandas包。 R语言的功能python基本都有,R语言的定位是工具,软件开发乏力。
六、展示端UI
自己写的分析算法打包成软件才能推广增值,值得学习的工具有: web前端三件宝:HTML、CSS、JS web制图工具包:echarts 前端设计框架类,React、VUE、Ant Design等 python制图包:matplotlib,seaborn... GIS展示:高德地图的JS-API 桌面应用UI设计框架:pyQt ......
七、算法开发
以上内容属于“外功”,分析算法属于“内功”,目前有很多算法书,数学建模资料也很有参考价值。算法主要考虑2块: 1、实现专业性的分析功能 (局地污染规律,突发污染识别,污染影响评估,季节性风场日变化规律,数据同化分析......) 2、软件运行速度 (循环计算里能少一句是一句,能矩阵计算就不循环,能用大矩阵就不用小矩阵,能用数学库的就不用python自带函数......) 3、其他好多好多要学的
八、初学者可能遇到的困难
不少大气环保公司的数据报告都是纯手工,忙起来很费人力,跟富士康流水线差不多,
这种工作方式不是长久之计,学精编程才是救赎之道!
自身多年体会,初学者走环境数据程序员之路,会遇到以下问题:
1、抽象思考的痛苦:
大家做数据分析,基本都是从操作EXCEL表开始的,非常直观, 而编程计算是抽象的,尤其数据量很大的时候,我们往往需要绘制很多图来把握数据的特征,这是一个别扭而幸福的过程。
2、告别老朋友的不舍:
大家自己往往都有自己趁手的“兵器”,你用VB操作excel,我用SPSS,他用matlab,花了很多时间和心血在上面,不舍得放手, 我们从学校带出来的这些工具,或者自学的一些工具,未必能适合市场潮流,我们必须挑选出自己的最佳装备,进行重新磨合。 不能批量的工具,你次次手工做吗? 用破解版的软件,你等别人告吗?...... 为了自身发展,没有潜力的工具要果断舍弃。 我本人使用IDL语言6年,写了无数行代码,从上个月开始,我正逐步把常用功能用python替换,以后IDL就作为python的遥感与可视化的外挂模块。 以前我也用过kml格式做地图文件,后来我转而用高德地图API,使用json格式。 与替代代码耗费的时间相比,错误的方向更致命!
3、学习与工作的兼顾:
或许你的图是origin画的,你的数据批量处理是VB的,你的一次分析需要打开三五个工具,建议在以后的工作中,逐步用python取代这些步骤,最后实现一条龙。
4、坚持就是胜利:
编程学习没什么难度,大家都是考过全国计算机二级的,这是一种低门槛的平民教育。 计算机语言的学习,跟学习外语如出一辙,就是不断地熟悉: 学习新对象新函数就好比学习新单词; 写一个脚本好比写英语作文。
|