本文转载自气象学渣,详情可以扫描下方二维码:
在城市化(城镇扩展)、环境和能源等社会科学研究中常使用夜间灯光影像作为人类活动的表征。研究中使用最多的夜间灯光数据来自美国国防气象卫星计划(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)的图片,我们需要的灯光数据就在这张图里啦。
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=100;lone=137;lats=15;late=52
lons_grid=int((lons+180.0)/(30.0/3600))
lone_grid=int((lone+180.0)/(30.0/3600))
lats_grid=int((75.0-lats)/(30.0/3600))
late_grid=int((75.0-late)/(30.0/3600))
img2=img[late_grid:lats_grid,lons_grid:lone_grid]
plt.imshow(img2)
plt.show()
采用我们上期介绍的绘制动图的方法(戳这里复习:
◆ ◆ ◆ ◆ ◆
长按二维码关注我们
数据森麟公众号的交流群已经建立,许多小伙伴已经加入其中,感谢大家的支持。大家可以在群里交流关于数据分析&数据挖掘的相关内容,还没有加入的小伙伴可以扫描下方管理员二维码,进群前一定要关注公众号奥,关注后让管理员帮忙拉进群,期待大家的加入。
管理员二维码: