温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,汇文网负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
网站客服:3074922707
大气
污染物
浓度
空间
分布图
绘制
方法
杨洛祺
交叉与综合本栏目责任编辑:李雅琪Computer Knowledge and Technology电脑知识与技术第19卷第6期(2023年2月)第19卷第6期(2023年2月)大气污染物浓度风域空间分布图的绘制方法杨洛祺1,2,3,顾世杰1,2,3,刘晓帅1,2,3,胡引翠1,2,3,武帅1,2,3,田冰1,2,3(1.河北师范大学 地理科学学院,河北 石家庄 050024;2.河北省环境演变与生态建设实验室,河北 石家庄 050024;3.河北省环境变化遥感识别技术创新中心,河北 石家庄 050024)摘要:风玫瑰图主要用以表达风向频率或各方向上的平均风速。若要可视化表达各风向上不同风速情境下的大气污染物浓度的分异特征,需要突破当前风玫瑰图仅展示风速风向信息的限制。为解决这一问题,文章在风玫瑰图基础上,采用晕渲法,用深浅不同的色调表示研究区域在统计时段内大气污染物浓度在各风向、不同风速下的特征。基于Python,使用contour函数以及numpy、matplotlib、pandas库,文章研发了大气污染物浓度风域空间分布图绘制工具,解决了绘图中由于数据缺失而造成的图像空白和计算报错的问题,并形成创新性的污染物质量浓度与风域的组合晕渲玫瑰图绘制方法。相较于传统的气象学制图软件,该工具绘图基础要求偏向底层绘图,更加灵活易用,为研究大气污染物区域特征以及跨区域传输特征提供了新的可视化方法和技术手段。关键词:大气;污染物质量浓度;风玫瑰图;风域;空间中图分类号:P412.36;P208文献标识码:A文章编号:1009-3044(2023)06-0113-05开放科学(资源服务)标识码(OSID):0 引言在大气污染物风域空间分布研究中,定量解析及污染物溯源研究是目前研究的重点方向之一1-5。大气污染物浓度分布可视化表达是辅助发现大气污染传输区域特征及研究成果共享交流的重要技术手段,专题地图和量化图表是常用的可视化表达方式。专题地图在基于底图的基础上按照主题的要求,突出并完善地表示一种或几种与主题相关的要素信息,着重描述专题化的内容及专门化的用途6。通常采用地理信息系统软件分析制作大气污染专题地图7-9,如绘制大气污染物后向轨迹图,分析污染物潜在源区及轨迹分布图;采用办公语言或高级编程语言绘制量化图表10-13,如NCL绘制污染物质量浓度风玫瑰图。量化图表在量化信息的情况下突出一种或几种特定表达指标的价值和衡量标准。量化图表中,风玫瑰图是得到广泛应用的方法,其直观地描述了风速风向等气象要素的变化特征。其将地面风向分为8个或16个方位进行表示,用极坐标系绘制某一时间段内研究区域风速风向出现频率的综合统计图。其在建筑规划、风能资源评估、大气污染评价等领域具有广泛的应用11,14。张顺尧15等在城市微气候对建筑物的影响研究中,通过小区域风玫瑰图的运用,揭示了建筑物开口方向与微气候中风场的相关关系;张克存16等利用风玫瑰图可视化了测点风向及起沙风频率,辅助性地展示了湖泊外围的输沙方向;张宇17利用风玫瑰图与Pearson系数表达了臭氧和VOCs与风速风向的相关性程度及拟合关系。目前绘制风玫瑰图以C#、Python、NCL以及Extjs、Excel、Matlab为主要的高级编程语言和办公语言为基础18-24。风玫瑰图用以表达风向频率或各方向上的平均风速。本文选取量化图表的表示方法,分析研究区域各方向风速大小并加和污染物浓度信息要素,获得多级地理尺度的大气污染物时序变化数据集,构建研究区域污染物组合污染物质量浓度与风域的组合玫瑰图25-28。目的是可视化表达各风向上不同风速情境下的大气污染物浓度的分异特征,突破当前风玫瑰图仅展示风速风向信息的限制。为解决这一问题,本文在风玫瑰图基础上,采用晕渲法,用深浅不同的色调表示研究区域在统计时段内大气污染物浓度在各风向、不同风速下的特征。将依托风玫瑰图可视化展示的特点,在风向、风速所构成的风域空间中,晕渲呈现站点监测的大气污染物浓度在风域空间中的变化。为实现这一可视化收稿日期:2023-01-25基金项目:2022年河北省省级研究生示范课程(项目编号:15117544)作者简介:杨洛祺(2000),女,辽宁鞍山人,硕士,研究方向为定量遥感;顾世杰(1999),男,湖南永州人,硕士,研究方向为地学计算;刘晓帅(2000),女,河北邯郸人,硕士,研究方向为社会文化信息系统;胡引翠(1973),女,河北石家庄人,通信作者,教授,博士,研究方向为环境遥感与地学计算;武帅(1998),男,河北承德人,硕士,研究方向为生态环境综合评价;田冰(1973),女,天津人,副教授,博士,研究方向为生态遥感与评价。E-mail:http:/Tel:+86-551-65690963 65690964ISSN 1009-3044Computer Knowledge and Technology电脑知识与技术Vol.19,No.6,February2023113DOI:10.14004/ki.ckt.2023.0323本栏目责任编辑:李雅琪交叉与综合Computer Knowledge and Technology电脑知识与技术第19卷第6期(2023年2月)第19卷第6期(2023年2月)技术思路,本文基于Python语言中anaconda329配置环境并使用第三方库Simple Index库,统筹使用晕渲法及叠加法的原理,设计一种融合大气污染物(PM2.5、PM10、臭氧等)浓度、三维风向包括水平分量及垂直分量及风速信息的污染物质量浓度与风域的组合晕渲玫瑰图的绘制工具,绘制结果能更清晰地体现污染物的浓度变化及来源信息,为近地面大气污染物传输特征的研究提供一种更直观的可视化方法。1 数据来源与基础数据预处理1.1 数据来源文章使用的数据包括:日期、风速、风向和污染物浓度。数据来源主要为验证实例的污染物近地面监测点、气象站点的实时监测数据,欧洲哥白尼卫星数据服务中心提供的ERA-5数据和清华大学提供的TAP数据。近地面监测点数据来源于河北师范大学地理科学学院监测点(37.99N,114.52E),该位置属于城市区域次交通枢纽和科研混合区。气象数据来源于石家庄市气象站(53698站)数据,包括实时风速、风向等信息。本研究中利用在线观测仪器测量了PM2.5逐时质量浓度及所使用的气象数据信息,测量时间为2022年8月1日。ERA-5 数据(https:/cds.climate.copernicus.eu/-!/home)来源于欧洲哥白尼卫星数据服务中心提供的数据集,选取石家庄市(38.05N,114.52E)近地面10m的水平方向风速分量和垂直方向风速分量的数据;TAP(Tracking Air Pollution in China)数据(http:/ PM2.5浓度数据,该数据综合了多种气溶胶数据反演及站点数据,自然源及人为源数据作为辅助数据,较高水平地反映了当时PM2.5浓度具体情况。1.2 近地面监测点数据预处理近地面监测点和气象站监测到的大气污染物浓度、风场等数据的储存均为文本格式,需将数据进行储存格式转换,并以污染物类型和具体时间为依据对基础数据进行统计,将Excel表格上传到PyCharm软件中加载数据。首先,将污染物浓度的数据类型浮点型(float)转换为短整型(int),减少存储空间,提高计算效率。其次,将数据由文本型转换为Excel格式,并以污染物类型和时段为依据对基础数据进行分类。再次,将预处理后的数据(包括风向、风速和PM2.5浓度)加载至工具软件,将风向单位由度转换为弧度,将数据缺失的网格用0值进行填充。最后,利用pivot_table函数绘制数据透视表,使用meshgrid函数建立相关矩阵。主要代码如下:dataPM2.5=dataPM2.5.astype(float)dt=data.pivot_table(values=PM2.5,index=风速(m/s),columns=风向(deg),aggfunc=np.mean)dt.fillna(0,inplace=True)dt=dt.reindex(index=speed,columns=deg,fill_value=0)dt.head(31)theta,r=np.meshgrid(deg,speed)本程序案例应用日均数据绘制日均大气污染物浓度风域空间分布图,但该程序不仅限于绘制日均图,可根据自身研究需要,绘制月均或年均污染物风域空间分布图。在应用中需注意修改#header函数,使函数参数与Excel格式对齐,实现软件正常读取。例如小时数据需修改为#header=24;逐月数据为#header=12等。1.3 ERA-5数据预处理下载对应研究区域的ERA-5数据,对数据进行格式转换。数据中包括近地面10m的水平方向风速分量u-wind和垂直方向风速分量v-wind,可通过程序代码实现水平、垂直方向的风速风量和风向的转换。主要代码如下:if(u 0)and(v 0):fx=270-math.atan(v/u)*180/math.pielif(u 0):fx=90-math.atan(v/u)*180/math.pielif(u 0)and(v 0)and(v 0):fx=180elif(u=0)and(v 0)and(v=0):fx=270elif(u 0)and(v=0):fx=90elif(u=0)and(v=0):fx=999.92 可视化实现本 文 开 发 环 境 为 PyCharm Community Edition2021.2。由 于 Python3 不 兼 容 Python2,所 以 在PyCharm Community Edition 2021.2中将基础环境设定为 anaconda 环境并安装 Simple Index 开源环境库(https:/www.lfd.uci.edu/gohlke/pythonlibs/)由北京外国语大学提供。利用传统的Windrose绘图工具绘制风玫瑰图,具有只包含风速风向的信息、操作复杂、易出现统计结果报错等局限性,为后续的专题化相关研究带来了困114交叉与综合本栏目责任编辑:李雅琪Computer Knowledge and Technology电脑知识与技术第19卷第6期(2023年2月)第19卷第6期(2023年2月)难。为解决这一问题,本文将渲染法和透视法创新性与风玫瑰图相结合,主要使用contour函数、numpy库、maplotlib库及pandas库进行绘制方法的创新,为风域空间专题呈现提供新思路。绘制过程中,对风速风向数据进行统计,利用linspace函数将数据进行分类,其中风速按16等分分类,风向按32等分分类。风向信息以圆形来表示,作为基础底图。绘制出的0方向为正北方向,风向度数对应正北方向与风向间的夹角并按顺时针方向测量,范围为0360,单位为角度数。风速通过不同大小的圆进行表示,根据研究区域的风速统计值域范围设定圆的半径R(程序案例默认R=10,即所获数据中最大风速不超过10m/s),将数据进行网格化并把网格内的数据按较小值划分,利用def函数创建for循环,形成嵌套圆图形。主要代码如下:datadeg=np.radians(datadeg)v=dataspeedR=10speed=np.linspace(0,R,endpoint=True,num=16)deg=np.linspace(0,2*np.pi,endpoint=True,num=32)def maker(s,sequence):Divide the data in the grid into smaller valuesfori,val in enumerate(sequence):if s=sequencei:returnvald=datadegdataspeed=v.apply(maker,sequence=speed)datadeg=d.apply(maker,sequence=deg)data.head