这段时间北京隔三差五就是一场雨,雨后天空简直蓝的不像话,胖友圈每次都会来一波秀蓝天秀风景。在这里我就来秀一下PM2.5。
最终效果
工具
- 现代浏览器(支持WebGL即可)
- 代码编辑器
- QGIS:QGIS是一个用户界面友好的桌面地理信息系统,可运行在Linux、Unix、Mac OSX和Windows等平台之上。QGIS是基于Qt,使用C++开发的一个用户界面友好、跨平台的开源版桌面地理信息系统。
步骤
下载数据
地理信息数据哪家强?NASA
http://sedac.ciesin.columbia.edu/data/set/sdei-global-annual-avg-pm2-5-2001-2010/data-download
上面的链接就是下载数据的地址,是NASA托管在哥伦比亚大学的地球数据信息系统数据中心,提供了2001年到2010年的全球PM2.5数据。需要翻墙才能访问。第一次下载需要注册,比较麻烦,最后我会上传一个数据到网盘。
事实上我们下载得到的是geotiff文件,下载下来可以直接打开可以看到一幅世界地图的图片。
这个时候就需要QGIS登场了
抽取数据
QGIS的使用方法我是从google上搜刮来的,勉强能完成这次的可视化任务。
现在我们要从下载到的tif文件中提取出经纬度和对应的值的数据。
打开QGIS,在左上面板中选择下载的tif文件,打开后就会在右边的主窗口看到一幅有颜色差异的世界地图,在左下角可以看到这个文件包含的数据集合的最大值和最小值(54.202-1.322)。
接下来我们要导出数据了,点击栅格=>转化=>格式转化
然后设置输出文件路径,在设置输出路径的时候会有一个格式选项,选择Gridded XYZ。
输出大小可以勾选25%或者不勾选(不勾选会默认100%),在这里输出大小可以理解为采样精度。值得一提的是在下面有一个“完成后载入画布中”的选项,建议把这个选项取消。
点击"OK",我们就会得到经纬度和值的数据集合,如果选择100%大小的话文件体积还是蛮大的。
数据整理
打开后我们发现有很多经纬度坐标对应的值是-999,其实就是0,我们可以把值为-999的数据去掉。另外导出数据的经纬度会保留十几位小数,这也是没有必要的,可以处理为只保留小数点后五位。经过这两步处理,我们完成了对数据的瘦身。
可视化
在本例中,我们将使用WebGL-Globe进行可视化呈现,WebGL-Globe是由google的dataarts团队基于Three.js开发的简单易用的地理信息数据三维可视化工具。
WebGL-Globe => https://github.com/dataarts/webgl-globe
通过查看readme文件发现,WebGL-Globe有自己的数据结构:
var data = [
[
'seriesA', [ latitude, longitude, magnitude, latitude, longitude, magnitude, ... ]
],
[
'seriesB', [ latitude, longitude, magnitude, latitude, longitude, magnitude, ... ]
]
];
latitude, longitude, magnitude => 纬度,经度,数值量级
将我们的数据处理成WebGL-Globe接收的形式,然后我们就能得到一个很棒的可视化作品了。
当然,这可是网页中的可以交互的3D可视化哦,还蛮酷炫的不是吗?