1. 引言
城市是一个复杂综合的集成系统,研究城市重金属污染对保障当地生态环境及制定相应的预防决策具有重大的现实意义 [1]。有关重金属污染预测模型的研究,前人已做了大量研究工作,孙少龙等人提出了基于灰色–灾变与回归预测的组合模型分析了城市地表层土壤重金属浓度的变化规律,以预测未来城市土壤重金属的灾变日期和相对应的日期数值 [2];骆永明就我国土壤污染临界负荷进行了研究探讨,并指出在未来研究中需要加强对临界浓度制定和重金属污染动态模型构建的研究 [3];以姚琳和廖欣峰为代表的杭州市环境监测中心站提出了建立大气重金属污染预测预警系统的构想,并首次采用建立重金属危害指数的方法,解析和评估大气颗粒物重金属的环境危害 [4]。此外还有其他学者提出了很多稳定性良好、准确性高的预测模型,但大多是基于数学统计的方法对重金属污染进行回归分析以达到一定的预测作用,国内有关重金属污染动态预测模型的研究仍然处于待发展阶段,大部分学者就重金属污染动态预测模型的研究仅仅只提出了一些构想和概念设计,并没有深入实际地的实现。目前有关重金属污染的可视化研究,只是从理论角度阐述了可视化的实现方法及可视化平台的概念设计,并没有给出具体的实现过程。
此外,现代城市重金属污染的变化趋势是一个非线性的动态过程,人类活动、工业污染、地质变化等外在不稳定因素都使得重金属污染的变化趋势不能简单地以传统的数学统计方法来描述。为了准确地预测区域重金属的污染状况,本文结合卡尔曼滤波算法,采用时间变化协和量模拟重金属污染的非自然演变误差,对多个时空状态下的重金属污染状况进行多次迭代更新,从动态系统中通过稳定的状态方程描述重金属污染的变化趋势,借助不断迭代更新的当前状态观测值去修正下一时态下重金属污染的预测值,实现重金属污染的动态预测,以达到重金属污染的预防作用。本文基于Django架构设计了城市规划平台,重点研究重金属污染防治可视化的具体实现过程,对城市重金属污染的动态监测及预防起到一定的作用。
2. 系统开发的应用框架
本文通过前后端分离的架构模式开发了城市规划平台。项目前端基于vue渐进式框架设计,后端以Django架构搭建,基于MVC (Model (模型) + View (视图) + Controller (控制器))设计模式 [5],实现程序的动态设计。
如图1所示,项目的整体运行逻辑如下:首先由Django框架接收用户在前端发送的POST请求,接着自动匹配URL转发给视图系统(view.py)处理,视图系统是开发框架中的核心,负责接收前端请求、访问数据库数据、返回后端处理结果。当后端处理完前端的请求后,最后由视图系统将处理得到的结果返回给用户。

Figure 1. Urban planning platform system architecture
图1. 城市规划平台系统架构
此外,系统的业务层包括金属污染的地图渲染、城市规划影响指标的热力图可视化展示、城市规划发展水平预测及评估;展示层提供浏览器访问页面时的AJAX (异步的JavaScript和XML)请求;前端界面采用最新的vue.js框架,使得整个页面美观大方,并能让用户在使用平台时有较好的体验;顶层的访问系统采用HTTP (超文本传输协议) [6],实现实时响应功能。
有关数据库方面,该平台采用体积小、速度快、使用成本低的关系型数据库,即MySQL数据库。按照业务逻辑关系的不同,数据库分别建立用户的注册表和管理各功能模块的数据表,其中功能表的Value属性表示对应经纬度下某一指标的属性值,比如在此经纬度下重金属贡的含量。为了避免数据冗余以及数据的操作问题,所有数据库中表的设计严格遵守第三范式。此外,本项目中的数据主要来源于贵阳市政府数据开放平台与贵州大学资源与环境工程学院。
当用户登录成功后,页面跳转到主页面。如图2所示,主页面集成了多个功能模块的入口,包括数据汇总、金属污染、可视化展示、预测体系、评估体系以及平台信息。除此之外,还包括一些图形化小组件来丰富主页面的内容,如新闻资讯、国家有害重金属污染标准以及平台设计的相关介绍。简约、大方的商业化界面风格能够使用户在使用该平台时拥有更出色的体验。
后台管理页面基于vue框架编写而成,实现了后台用户访问量的统计、代办事务的统计、主要数据指标的数据可视化报表显示,其后台管理平台由默认的超级管理员来管理。首先由数据库中Date属性检索当日数据库中存储的各项数据指标,接着由后端通过SQL查询语句从数据库中获取该数据并封装为josn类型的数据集,然后通过post方法传递到前端页面,最后由前端页面解析该josn类型的数据集,并根据解析后的贵阳市城市规划数据指标生成数据可视化报表,从而更直观、简洁地反映贵阳市的城市实时状况,以帮助管理员制定城市规划的运营决策。后台管理系统只是就城市区域内主要重金属含量的实时情况做数据可视化报表,以实现对重金属污染状况的动态监测和实时反馈,接下来将对重金属污染的数据可视化做一个更加深入的研究。
3. 重金属污染的可视化研究
本文基于高德地图组件的热力图实现重金属污染在地图上的数据渲染。首先,需要高德地图共享平台中申请个人使用的key键,再使用vue-amap在vue中引入高德地图,最后在main.js配置文件中引入高德地图插件,便可以在前端实现地图功能。
在完成上述配置后,即可进入数据渲染页面。当进入数据可视化功能模块时,设置1000 ms的缓冲时间,这是为了避免高德地图等第三方插件不能及时加载完毕而导致部分功能失效。所有插件加载完毕,地图主视角默认定位在当前ip地址的地理位置,根据时间、地理位置等条件检索所需要渲染的数据,此类数据封装为json类型,单条数据格式为{lng:经度值,lat:纬度值,value:渲染程度}。检索好所需要渲染的数据后,将会对heatmap对象进行初始化,依次设置热力图渲染的样式和数据集,调用创建热力图的函数便可在地图上实现数据可视化功能。如果后续有新增数据,可通过ajax方法依次加载新增加的数据,通过对页面的局部刷新达到页面的动态更新效果。
如图3所示,按照中国重金属污染风险评价标准进行风险程度划分 [7],在地图上以不同层次的颜色直观反映重金属污染的风险程度,采用ajax方法实时更新数据能有效实现重金属污染的动态渲染,实现重金属污染的动态监测,对城市重金属污染起到一定的监管和预防作用。
4. 重金属污染指标的卡尔曼插值预测模型
由监测站点采集到的数据为离散采样数据,且重金属污染数据具有动态性,会随着时空变化在一定范围内波动。此外,在对贵阳市重金属污染数据进行采集的过程中由于人工操作不当或仪器精度等原因产生一定的过程误差和观测误差。为了更好地预测重金属污染数据,并准确反映这种波动,本文采用卡尔曼预测方法进行重金属污染浓度的预测。卡尔曼预测的实质是采用递归思想,通过均方差最小准则得到最优估计值。由已知测量数据的值得到状态矢量的最佳初值和状态协方差矩阵初值,获得最优估计的一系列数值,从动态系统中通过稳定的状态方程描述趋势,起到预测作用 [8]。
本文通过以下的状态方程和测量方程模拟了一个非线性重金属污染指标预测系统模型 [8] (以贵阳市土壤中重金属Pb含量为例):
(1)
(2)
其中
表示在离散时间参数k时的系统状态向量,
表示系统函数在k−1时刻的状态函数,其中
表示在k时刻下的输入,
表示k时刻下的过程噪声,即状态方程的时间变化协和量。
表示k时刻系统输出,即观测量,
是系统函数在k时刻的状态,
为观测噪声。由于在数据采集过程中,采集仪器及操作人员是固定的,故将过程噪声
和观测噪声
为一个定量。
将
与
分别进行线性化展开 [9],模型可简化为:
(3)
(4)
其中A为状态转移矩阵,B为输入控制矩阵,C为输出系数矩阵。
具体算法思想如下:
1) 由已知的k−1时刻的重金属指标数据的最优估计
去预测k时刻系统的先验估计
。
(5)
2) 由先验估计
的表达式求得先验估计的协方差方程,由于
自身就是过程噪声,故
的协方差就是自身,其中
表示k时刻的输入而不是随机变量,准确输入的协方差为0,故预测协方差方程为
(6)
(7)
3) 由上一次的误差协方差
和过程噪声
来计算下一状态的预测协方差
,其中
(8)
4) 计算卡尔曼增益
(9)
5) 计算当前最优估计值
(10)
6) 更新协方差矩阵,以迭代更新求得下一状态下重金属Pb指标的最优估计值。
(11)
卡尔曼预测是一个递归的过程,可以结合上一时刻状态的估计值与当前时刻状态的观测值,同时使用观测值修正当前值,得到最优结果。本文以2021年11月当中的28天内贵阳市花溪区十里河滩区域内重金属Pb的含量为例,结合三次样条插值方法将数据曲线进行拟合插值,绘制出贵阳市花溪区十里河滩区域内重金属Pb的月平均含量的插值模拟图,模拟十里河滩区域内重金属Pb的空间分布及局部污染特征,并拟合地理区域内每个经纬度网格对应的重金属Pb的含量浓度,最终检验拟合值与实际值的差异,以验证本方法的可行性与准确性。
由于本文预测的目标数据为一维数据,故初始化A = 1,B = 0,C = 1,由于
和
无论取何值都会使模型最终收敛,估这两个参数的取值对最终的预测模型影响不大 [10]。经过多次调整超参数可得:本实验状态矢量的最佳初值
,状态协方差矩阵初值
。
下面以贵阳市花溪区十里河滩区域2021年11月1日至2021年11月28日的重金属Pb含量为例验证卡尔曼预测模型的准确性,本实验假定观测值大小等同于真实数据基础上叠加一个高斯噪声(0,
),其中
,过程噪声
。如图4所示,其中11月4日,11月12日,11月14日等日卡尔曼最

Figure 4. Comparison of predicted and actual heavy metal Pb content in Shilihe Beach, Guiyang
图4. 贵阳市十里河滩重金属Pb含量预测与实际对比图
优估计预测精确度高达94%以上,与真实数据偏离最大的11月19日预测精确度也达到了87%,卡尔曼最优估计的预测效果整体良好,能较好地反映其真实数据的变化趋势。
(12)
为了验证卡尔曼插值模型的准确性,本文采用皮尔逊相关系数检验来验证卡尔曼预测值与真实数据之间的关联性。如公式12所示,R为相关系数,
为预测值,
为实际观测值,
和
分别为预测值与实际观测值的均值,而相关系数R是衡量两个变量之间相互关系的参数。两个变量之间的相互关系大体上可以分为3种,正相关、负相关和无关。一般说来,相关系数R的绝对值大于0.8就认为两个变量有很强的相关性 [11]。经计算可得R = 0.87,说明基于卡尔曼预测模型所得到的预测值与实际观测值呈强正相关。在此基础上,分别将预测值与实际观测值样本在SPSS中做Wilcoxon带符号秩检验,通过分析配对样本,验证基于卡尔曼滤波预测的重金属污染含量和实际监测值的一致性。如表1所示,发现在剔除一些明显的异常值后,监测得到的重金属污染含量值双侧渐进显著性概率为0.802,大于显著性水平α = 0.05 [12],即认为重金属Pb含量的预测值和监测值没有明显差异,确定了卡尔曼预测模型在重金属指标预测方面的可用性和可靠性。

Table 1. Wilcoxon test statistical results graph
表1. Wilcoxon检验统计结果图
(a.基于正秩)。
5. 卡尔曼插值模型应用结果
根据贵阳市花溪区地理经纬度位置(东经106˚27'~106˚52',北纬26˚11'~26˚34'),选取花溪区行政区域内的地理空间进行研究。应用本文的重金属污染指标的卡尔曼插值预测模型,通过ArcGIS工具进行空间插值,绘制出了贵阳市花溪区重金属Pb污染的插值模拟图,模拟重金属的空间分布及局部污染特征,并根据现有阶段的污染状况预测未知区域的重金属Pb平均污染浓度,这使得花溪区的区域面内每个经纬网格上都可以直观地体现出重金属的污染浓度特征值。
由图5(a),图5(b)可以看出贵阳市花溪区重金属Pb的污染浓度空间分布特征与污染浓度的频数分布范围。整个贵阳市花溪区重金属Pb污染的平均浓度主要分布在4.98~30.26 mg/kg之间,结合当地经济发展状况分析可得:人类活动频繁,车流量大,工厂密集的区域重金属污染浓度较高;靠近花溪国家城市湿地公园,受工业污染程度较低的区域重金属污染浓度较低。总的来说,贵阳市花溪区的重金属含量整体低于贵州省土壤背景值,区域内水土环境质量较为优良。
6. 结语
本文是Django架构在城市规划领域的一次深入研究与应用,拓展了国内Django的应用领域,文中有关城市规划的数据可视化平台设计与实现的方法及研究思路能给贵阳市的城市规划提供帮助。特别是

Figure 5. Spatial distribution characteristics and kernel density analysis of heavy metal Pb pollution in Huaxi District
图5. 花溪区重金属Pb污染空间分布特征及核密度分析
在重金属指标预测方面,本文基于卡尔曼滤波并通过递归的方式进行重金属指标预测,并重点研究了卡尔曼预测模型在重金属污染预测方面的应用,为重金属污染预测提供了一种新的方法。结果表明:卡尔曼插值预测模型在重金属污染预测方面是可行的,其预测结果的显著性概率为0.802,具有较好的预测效果,并能较好地拟合重金属的空间分布情况。但文中仅能获取得到贵阳市十里河滩区域在2021年11月份当中的28天内重金属Pb的平均含量监测,其时间与空间涵盖的广度不足,所拟合的预测模型并不能很好地推广到整个贵阳市区域内。希望在后期能与有关部门展开更多的合作,实现对整个贵阳市重金属污染的预测。
基金项目
贵州大学大学生创新创业项目资助(S202010657052);
贵州大学高等教育研究项目(GDGJYT2020011)。
NOTES
*通讯作者。