Python读取夜间灯光数据看中国城市发展

  • 2019 年 10 月 8 日
  • 筆記

本文转载自气象学渣

在城市化(城镇扩展)、环境和能源等社会科学研究中常使用夜间灯光影像作为人类活动的表征。研究中使用最多的夜间灯光数据来自美国国防气象卫星计划(Defense Meteorological Satellite Program,DMSP)一系列气象卫星的观测。处理夜间灯光数据的方法和软件有很多,常用的有Arcgis等。在这里小渣将尝试用Python来读取夜间灯光数据。

一、夜间灯光数据下载

DMSP/OLS夜间灯光数据下载地址:

https://www.ngdc.noaa.gov/eog/dmsp/downloadV4composites.html

小渣以2013年为例,下载后得到压缩文件F182013.v4.tar,解压之后:

目前发布的灯光数据产品中使用较多的是稳定灯光数据(stable lights),它剔除了由火灾、爆炸等造成的短暂亮光,只包含了相对稳定的灯光,且均为无云数据。让我们再次解压稳定灯光数据:F182013.v4c_web.stable_lights.avg_vis.tif.gz,获得的是1张标签图像文件格式(tiff)的图片,我们需要的灯光数据就在这张图里啦。

二、Python读取夜间灯光数据

接下来轮到Python登场了。Python有许多库可以解析tiff文件,小渣这里使用的是libtiff库。

1、安装libtiff库

小渣的实践经验表明,直接用pip/conda install在线安装libtiff库可能会报错(具体原因不明)。建议先下载好本机适配的libtiff-0.4.2-xxxx-xxxx-xxxxx.whl文件,采用pip install 路径+libtiff库的离线方式安装最靠谱

下载地址:https://www.lfd.uci.edu/~gohlke/pythonlibs/  安装命令:pip install 路径+libtiff-0.4.2-xxxx-xxxx-xxxxx.whl

2、Python提取指定区域的夜间灯光

安装好Python的libtiff库后,接下来用Python提取并显示中国东部的夜间灯光,附上源代码(在这里小渣不禁想感叹一下Python的简洁与高效

):

from libtiff import TIFF  import matplotlib.pyplot as plt    # 读取夜间灯光数据  tif = TIFF.open('F182013.v4c_web.stable_lights.avg_vis.tif', mode='r')  img = tif.read_image()    #提取包含中国东部范围的夜间灯光数据画图  #夜灯数据覆盖范围为-65~75oN,-180-180oN,分辨率是30’  lons=;lone=;lats=15;late=  lons_grid=int((lons+180.0)/(30.0/))  lone_grid=int((lone+180.0)/(30.0/))  lats_grid=int((75.0-lats)/(30.0/))  late_grid=int((75.0-late)/(30.0/))  img2=img[late_grid:lats_grid,lons_grid:lone_grid]  plt.imshow(img2)  plt.show()  

将将将将~~~中国东部地区2013年的夜间灯光图片粗来啦!中国东部著名的三大城市群:京津冀、长三角和珠三角在图上非常明显。

三、夜间灯光数据看中国城市发展

采用我们上期介绍的绘制动图的方法(戳这里复习:Python绘制台风动图),选取1992年至2013年的夜间灯光图片做成动图进行展示,直观感受一下这些年中国城市的发展吧!