气象开发常用的开源软件技术

September 2016 · 1 minute read

1. 基于Python的科学计算

Python是一种面向对象的、动态的高级程序设计语言,具有非常简洁而清晰的语法,既可以用于快速开发脚本程序,也可以用于开发大规模的软件,特别适合于完成各种高层任务。

随着Numpy、SciPy、Matplotlib、ETS等众多程序库的开发,Python越来越适合于做科学计算。与科学计算领域最流行的商业软件MATLAB相比,Python是一门真正的通用程序设计语言,比MATLAB所采用的脚本语言的应用范围更广泛,有更多程序库的支持,适用于Windows和Linux等多种平台,完全免费并且开放源代码。虽然MATLAB中的某些高级功能目前还无法替代,但是对于基础性、前瞻性的科研工作和应用系统开发,完全可以用Python来完成。

Python的生态系统是非常完善的。在科学计算方面,Python有两个常用的发行版,即Python(x,y) 和 Anaconda。Python(x,y) 不仅包括了几乎所有的科学计算第三方程序集,还包括了用于科学计算开发的集成开发环境(IDE),如 Spider 和 Eclipse。Anaconda提供了基础和全集两种安装套件,并且在第三方程序集管理和python容器化环境管理方面更为出色。

在科学计算、数据挖掘与机器学习、人工智能(AI)等专业领域,Python都具有相当广泛而深入的应用,美国海洋大气局(NOAA)、国家航空航天局(NASA)、谷歌,全世界其它非常多的机构、公司、数据科学家和工程师都在使用Python并且致力于为开源世界做贡献。

2. 基于Matplotlib的二维数据分析

Matplotlib 是Python最著名的绘图库,它提供了一整套和 MATLAB 类似的绘图函数集,十分适合编写短小的脚本程序,进行快速绘图。此外,Matplotlib 采用面向对象技术来实现,因此组成图表的各个元素都是对象,在编写较大的应用程序时通过面向对象的方式使用 Matplotlib 将更加有效。

Matplotlib 的文档十分完备,并且展示页面中有上百幅图表的缩略图即源程序。因此,如果需要绘制某种类型的图表,只需要在这个页面中浏览、选择、试验一下,基本上就能快速实现。对于不同的参数和更详细的设置,可以在线查阅官方文档。

对于二维图形的绘制,本项目应用最多的便是等值线图或填充图。这里将采用面向对象的方式调用Contour/Contourf 函数的绘图结果,提取等值线、等值面的数字描述(转换为GeoJSON格式),作为WebGIS可视化的基础数据。

3. 基于Leaflet的WebGIS应用

Leaflet 是对于移动端友好的一个用于创建动态交互地图的开源JavaScript程序库。Leaflet 非常轻量级,用于生产环境的程序只有33KB,但其中已经包含了几乎所有的地图特征功能,对于绝大多数地图应用而言都能胜任。

Leaflet 始终本着设计简明、表现优异、高可用性的理念,使它能够非常高效的工作在所有主流移动端和桌面端设备上。Leaflet 有着诸多的第三方插件可以进行扩展,并且有着非常美观和易用的官方文档,其简单、可读性良好的源代码吸引着越来越多的机构和开发者为其做贡献。

Leaflet 支持各种瓦片图层、矢量数据、位图覆盖叠加、GeoJSON,支持纯CSS3的信息框、基于图片或者HTML的地理标记、自定义的地图和控制接口、自定义的地图投影、功能强大的面向对象的类扩展,支持地图缩放、属性查询修改、图层切换和尺度变换,支持拖拽、平移、滚轮缩放、点击等丰富的交互功能,支持缩放和平移动画、瓦片和弹出框消失动画、美观的图层对象控制默认设计、超视网膜分辨率渲染,支持移动端硬件加速、纯CSS3平滑效果、敏捷的多边形渲染,模块化的构建系统高效而稳健,支持所有PC端和移动端主流Web浏览器。

4. 基于Echarts的Web图表

ECharts,缩写来自Enterprise Charts,商业级数据图表,一个开源的纯Javascript的图表库,可以流畅的运行在PC和移动设备上,兼容当前绝大部分浏览器,底层依赖轻量级的Canvas类库ZRender,提供直观,生动,可交互,可高度个性化定制的数据可视化图表。创新的拖拽重计算、数据视图、值域漫游等特性大大增强了用户体验,赋予了用户对数据进行挖掘、整合的能力。

支持折线图(区域图)、柱状图(条状图)、散点图(气泡图)、K线图、饼图(环形图)、雷达图(填充雷达图)、和弦图、力导向布局图、地图、仪表盘、漏斗图、事件河流图等12类图表,同时提供标题,详情气泡、图例、值域、数据区域、时间轴、工具箱等7个可交互组件,支持多图表、组件的联动和混搭展现。

5. 基于Bootstrap的用户端

Bootstrap 是最受欢迎的 HTML、CSS 和 JS 框架,用于开发响应式布局、移动设备优先的 WEB 项目。为所有开发者、所有应用场景而设计。Bootstrap 让前端开发更快速、简单。所有开发者都能快速上手、所有设备都可以适配、所有项目都适用。

预处理脚本:虽然可以直接使用 Bootstrap 提供的 CSS 样式表,但 Bootstrap 的源码是基于最流行的 CSS 预处理脚本 - Less 和 Sass 开发的。开发者可以采用预编译的 CSS 文件快速开发,也可以从源码定制自己需要的样式.。

一个框架、多种设备:网站和应用能在 Bootstrap 的帮助下通过同一份代码快速、有效适配手机、平板、PC 设备,这一切都是 CSS 媒体查询(Media Query)的功劳。

特性齐全:Bootstrap 提供了全面、美观的文档,可以轻松找到关于 HTML 元素、HTML 和 CSS 组件、jQuery 插件方面的所有详细文档。

Bootstrap 是完全开源的。它的代码托管、开发、维护都依赖 GitHub 平台。