城市表层土壤重金属污染分析

摘要

重金属污染是破坏土壤环境的重要因素,并直接或问接危害到人体健康。本文以某城区为例,对土壤中As、Cd、Cr、Cu、Hg、Ni、Pb和Zn 8种重金属进行分析,采用经典综合评价方法和内梅罗指数法对重金属的污染指数进行计算;采用统计方法和空间分布分析,确定污染的主要原因;采用算法循环遍历,推导出污染源的位置;通过分析寻求更多的信息,在此基础上扩展原有的模型,把握城市地质环境的演变。主要内容如下:
针对问题一,了解8种主要重金属元素在该城区的空间分布,是建立模型的准备。我们绘制该城区功能区图和8种重金属元素在该城区空间分布图,从而直观清晰的了解重金属在城区的空间分布。根据附录中提供数据,在利用MATLAB,就能绘制出需要的图。对应分析该城区内不同区域重金属的污染程度,我们建立两个数学模型,分别是经典综合评价模型与内梅罗指数法模型,这两个模型有着递进关系,从模糊到清晰、不断地修正与优化,从而得出较理想的该城区内不同区域重金属的污染程度的结果。
针对问题二,问题一模型计算得出的数据,给问题二带来许多有用的数据。利用问题一中建立模型的解,知道了每种重金属元素各个测试点的单因子指数,结合“土壤单项污染程度分级标准表”,通过统计得出每个测试点的每种重金属元素的污染级别。通过分析论述这些数据关系,我们可以说明重金属污染的主要原因。
针对问题三,在根据重金属污染物由高向低地势传播特征,我们在建立个小模型,通过编程求解,就能推导出污染源的位置。
针对问题四,我们需要理清楚收集什么信息,为了宏观把控城市地质环境的演变,需要把握很多方面的信息,人口的数量级,产业部门类型,城区生活垃圾填埋场,城区地理方位,城区流体的空间位置与流向,重金属传输机理等。在此基础上,我们可以建立模型来预测城市地质环境的演变。首先要确立各种影响因素的指标,利用这些指标,再确定好这些影响因素的权重值,帮助我们更好的建立模型来分析地质环境。
关键词:土壤重金属,污染指数,传播特征,空间分布

1、问题提出与重述

随着城市经济的快速发展和城市人口的不断增加,人类活动对城市环境质量的影响日显突出。对城市土壤地质环境异常的查证,以及如何应用查证获得的海量数据资料开展城市环境质量评价,研究人类活动影响下城市地质环境的演变模式,日益成为人们关注的焦点。
按照功能划分,城区一般可分为生活区、工业区、山区、主干道路区及公园绿地区等,分别记为1类区、2类区、……、5类区,不同的区域环境受人类活动影响的程度不同。
现对某城市城区土壤地质环境进行调查。为此,将所考察的城区划分为间距1公里左右的网格子区域,按照每平方公里1个采样点对表层土(0~10厘米深度)进行取样、编号,并用GPS记录采样点的位置。应用专门仪器测试分析,获得了每个样本所含的多种化学元素的浓度数据。另一方面,按照2公里的间距在那些远离人群及工业活动的自然区取样,将其作为该城区表层土壤中元素的背景值。
题目附件1列出了采样点的位置、海拔高度及其所属功能区等信息,题目附件2列出了8种主要重金属元素在采样点处的浓度,题目附件3列出了8种主要重金属元素的背景值。
我们要通过数学建模来完成以下任务:
(1) 给出8种主要重金属元素在该城区的空间分布,并分析该城区内不同区域重金属的污染程度。
(2) 通过数据分析,说明重金属污染的主要原因。
(3) 分析重金属污染物的传播特征,由此建立模型,确定污染源的位置。
(4) 分析所建立模型的优缺点,为更好地研究城市地质环境的演变模式,还应收集什么信息?有了这些信息,我们该如何建立模型解决问题?

2、问题分析

2.1 问题(1)的分析

该问题要求我们给出8种重金属元素在该城区的空间分布情况,并分析该城区内不同区域重金属的污染程度。要了解8种重金属元素在该城区的空间分布情况,直观而有效的方法是画图,让各种重金属元素的空间分布直观明了地显现出来。每种重金属元素对应一个图,画8个图将八种重金属元素在该城区的空间分布情况描绘出来。根据附录提供每个采样点的逻辑地理位置、功能区、各重金属元素实测值,再运用画图软件,是可以把重金属元素在城区的空间分布图画出来的。
对于评价重金属的污染程度,需要制定评价标准、建立模型、求解模型,得出的结果与制定的指标作对分析。这里选用经典综合评价方法和内梅罗指数法,为重金属加上一定的污染权重,再结合土壤的金属背景值,参考国家的环境质量标准值,可以比较精确的衡量该城区的污染程度。

2.2 问题(2)的分析

对于问题二,我们需要利用问题一的求解结果,了解各种重金属元素在该城区的空间分布,还有它们的污染指标。在此基础上,我们还需要调查污染土壤中各种污染物的影响因素。土壤重金属污染影响因素主要指产生重金属污染物的设备、位置、场所等污染源。这些污染源产生的重金属污染有的直接进入土壤,有的则是通过大气和水体再进入土壤,造成城市土壤的重金属污染。
土壤重金属污染源主要分为工业污染源、交通污染源、生活污染源农药和肥料等。土壤的重金属污染原因众多,我们只能依靠题目提供的采用数据,分析数据中包含的各种影响因素,包含海拔高度,功能区分布等,做到全面的分析。

2.3 问题(3)的分析

该问题要求建立模型 分析重金属污染物的传播特征,确定污染源的位置。土壤并非是一个均质体,而是一个具有空间连续性的变异体,具有高度的空间异质性。这种空间异质性包括土壤的水分特性、物理特性、化学特性、土壤重金属及其他元素的性质随着空间位置不同而发生的变异。除此之外,人类活动也同时影响着土壤重金属的空间变化,从而导致其时空属性数据的复杂化。虽重金属空间分布复杂,但其在土壤中的分布趋于空间相关性,能否利用重金属在区域存在空间相关性,估计出重金属污染源位置,是解决这位问题的关键。采用克里格法进行空间插值方法,有助于我们获取更多的循环遍历、分析的数据。城区上除了实地测试污染点外,还有克里格内插估计值点,有着丰富可靠的数据点后,我们在定量分析这些数据点,就能确定污染源的位置。

2.4 问题(4)的分析

对于问题四,我们要分析对比前面关于土壤重金属污染分布所建立的模型,找到这些模型的优缺点,在数据有限的情况下,我们很难分析预测该城市地质环境的演变情况。我们为更好地研究城市地质环境的演变模式,还应收集更多的信息,如人口的数量级,产业部门类型,城区生活垃圾填埋场,城区地理方位,城区流体的空间位置与流向,重金属传输机理等。在此基础上,我们可以建立模型来预测城市地质环境的演变。首先要确立各种影响因素的指标,如人口数量达到一定等级会产生多少级别的污染。生活区所排放的重金属的含量比例与各种产业部门所排放的重金属的含量比例都有一定的数据可以参考,调查它们的分布比例有利于模型的完善。

3、模型假设与符号说明

3.1 模型假设

(1) 假设问题中所给出的数据能客观的反映现实情况,值得相信;
(2) 假设土壤的PH值在6.5~7.5,采用环境质量国家二级标准值。

3.2 符号说明

4、模型的建立与求解

4.1 问题(1)的模型建立与求解

4.1.1 模型准备

通过采样的数据,我们使用MATLAB进行描点,显示出城区的五类功能区的分布:



通过上图,可以清晰的看到功能区的分布情况(因为不确定实际的方位,不考虑东西南北分布),山区主要分布在右上角,工业区主要分布在左上角,有利于我们接下来的问题分析。
利用附件2的数据,我们得到城区8种金属元素的浓度分布情况:




通过上图,我们得到初步结论,x在[1000,3000],y在[2000,4000]的空间范围内重金属的含量比较大。我们可以很清晰的了解到8种金属元素在该城区的浓度分布情况。在此基础上,我们建立下面两个模型,计算出各种金属元素的污染指数和综合污染情况。

4.1.2 模型一(经典综合评价方法)


通过上面公式,我们对每个采样点的每种金属进行无量纲化,处理好的数据如下(这里取前5个数据,详见附录3):



(2) 确定权重,这里使用的是定向加权,其中权重的确定参考了《环境科学与技术》2008年2月第2期第31中的《潜在生态危害指数法评价中重金属毒性系数计算》文章中的重金属毒性系数反映的权重(表4-1),原因是不同金属对环境的污染程度不同,毒性系数可以反映重金属在土壤污染中的剧烈度。
表4-1 权重对照表



注:权重应该是介于0-1之间的,此处我们为计算简便,就直接使用上述数值为权重值,综合数值的确定没有本质差别。
(3) 综合评价

通过上面公式,我们对每个采样点的综合污染指数进行计算,得到的数据如下(这里取前5个数据,详见附录3):



我们将计算好的综合污染指数使用MATLAB进行绘图,得到综合指标评价的分布图:

从图中,我们可以对比各区域相对的污染程度,我们很清晰的得到如下结论:该城区的污染主要集中在三个小区域(图中白色的区域),这三个区域的污染程度比其它地方要严重。
虽然模型一统计出采样点综合污染指数,客观上反应出城区五大功能区的相对污染程度。但模型一没有一个可以衡量的标准,我们无法确定出土壤综合污染程度的级别,从而不能更好的分析该城区内不同区域重金属的污染程度;模型一的数据处理只是进行简单的无量纲化,没有考虑土壤中金属元素的自然背景值,因此不能区分外来因素的作用。为了完善这两个不足,接下来选用更优的模型。

4.1.3 模型二(内梅罗指数法)

内梅罗指数法是当前国内外进行综合污染指数计算的最常用的方法之一。该方法先求出各因子的分指数(超标倍数),然后求出个分指数的平均值,取最大分指数和平均值计算。
(1)单因子指数法:
通过单因子评价,可以确定主要的重金属污染物及其危害程度。一般以污染指数来表示,以重金属含量实测值和评价标准相比除去量纲来计算污染指数:


表4-2 土壤环境质量标准值(mg/kg)


通过该修正公式,可以得到更符合现实因素的金属污染指数,如下(这里取前5个数据,详见附录4):

使用MATLAB对上面求得的数据进行描绘,分布情况如下:


对比前面图4-2所描绘的八种金属元素的浓度分布,发现它们有很大的相似性。除了砷(As)以外,x在[1000,3000],y在[2000,4000]的空间范围内的其它金属的污染程度比较大。由于对金属的实际值加工过,加入关联的背景值,还有国家的标准值,使得它们能够更好的衡量金属在城市区域的分布。在此基础上,我们可以计算出所有点的综合污染指数。

(2) 综合指数法
单因子指数只能反映各个重金属元素的污染程度,不能全面地反映土壤的污染状况,而综合污染指数兼顾了单因子污染指数平均值和最高值,可以突出污染较重的重金属污染物的作用。综合污染指数计算方法如下:



我们将计算好的综合污染指数使用MATLAB进行绘图,得到内梅罗综合指数的分布图:

从图中,我们可以知道该城市各个区域的污染级别,图中白色的几个小区域是污染严重的地方,由图中重污染与中污染的区域是比较少的,初步可以锁定污染源在白色区域。

4.1.4 小结

使用上面模型二的内梅罗指数法,我们得到了一些比较有用的数据(附录4),再进行统计,得出城区内不同区域重金属的污染程度:




通过分析八种金属污染指数直方图,得出该城区内不同区域重金属的污染程度。
生活区:只有重金属Cd、Zn指数值为0.8,污染程度处于警戒线,污染水平处于尚清洁状态,其它六种重金属元素指数值均小于0.5,污染程度处于安全,污染水平处于清洁状态。综合指数值为2.2,污染程度处于中污染,土壤和城区污染明显。
工业区:重金属Cd、Cu、Hg、Zn指数值均介于1~2,污染程度处于轻污染,污染物超过起初污染值、城区开始污染,其它四种重金属元素指数均小于0.5,污染程度处于安全,污染水平处于清洁状态。综合指数值为4.3,污染程度处于重污染,土壤和城市污染严重。
山区:八种重金属元素指数值均小于0.2,污染程度处于安全,污染水平处于清洁状态。综合指数值为4.9,污染程度处于安全,污染水平处于清洁状态。
公园绿地区:重金属Cd指数值为0.9,污染程度处于警戒线,污染水平处于尚清洁状态,Zn元素指数值为0.5,污染程度处于安全,污染水平处于清洁状态,其它六种重金属元素指数值均小于0.2,污染程度处于安全,污染水平处于清洁状态。综合指数值为1.6,污染程度处于轻污染,污染物超过起初污染值、城区开始污染。
交通区:重金属Cd指数值为1.3,污染程度处于轻污染,污染物超过起初污染值、城区开始污染,Hg、Zn元素指数值均介于0.7~1,污染程度处于警戒线,污染水平处于尚清洁状态,其它重金属元素指数值均小于0.7,污染程度处于安全,污染水平处于清洁状态,综合指数值为3.2,污染程度处于安全,污染水平处于清洁状态。

4.2 问题(2)的模型建立与求解

按重金属污染物产生的部门,土壤重金属污染源主要分为工业污染源、交通污染源、生活污染源农药和肥料等。工业污染按工业类型可分为:冶金工业、化学工业、造纸工业、制革工业、纺织工业、印染工业、动力工业等。重金属污染物随工业废气、废水及废物(俗称工业“三废”)排放,经过大气和水体最终进入土壤,使土壤中这些重金属含量明显增加或引起污染。除此之外,交通运输也是土壤重金属的重要来源。机动车尾气作为环境污染源,是土壤化学污染的一个重要来源。而城镇居民聚集处也产生大量生活废水、废物,导致重金属最终沉积在土壤中,造成污染。水系作为污染传播的一个载体,其分布广、范围大,对区域内重金属的污染影响不可忽视。
虽然造成重金属污染的原因众多,但从题目有限条件上看,我们只能假设有工业污染、汽车尾气污染、生活污染。中国土壤重金属的主要来源如下表4-7:
表4-7 中国土壤重金属的主要来源[7]



利用问题一中建立模型的解,知道了每种重金属元素各个测试点的单因子指数,结合“土壤单项污染程度分级标准表”(见表4-4),使用该分级标准得出每个测试点的每种重金属元素的污染级别,如下表(详见附录5):
表4-8 每种重金属元素的污染级别



通过观察附录5,结合问题一中的八种金属元素的功能区分布图(图4-6),发现重金属AS、Pb 仅有一两处出现轻级污染状态,其余测试点都非污染状态,这反映该城区不存在重金属AS、Pb的污染。对照中国土壤重金属的主要来源表(表4-7),汽车尾气只排放重金属Pb,而该城区又不存在重金属Pb的污染,所以可以断定汽车尾气不是该城区重金属污染的原因。
观察附录5中观察标号4(即交通区)测试点,发现很多个测试点受各类重金属不同程度的污染,前面的结论知道其污染不是来自汽车尾气,那只能来自工业污染、生活污染。根据城区海拔图4-7.与问题一中的图4-1,交通区污染程度较重的测试点,多是分布在地势较低的地方,主要的污染重金属是Cd、Zn、Cu。对照中国土壤重金属的主要来源表(表4-7),造成重金属Cd、Zn、Cu污染可能来之电镀工业废水、电子工业排放的废水,而交通区污染程度较重的点的上游或附近分布着工业区,观察附录5的工业区测试点,污染程度较高的重金属也是Cd、Zn、Cu,所以有理由推断交通区的重金属污染是由上游或附近工业区通过水质带来的,从而可以确定工业污染是该城区重金属污染的原因。不排除生活区导致的重金属污染。观察附录5的生活区测试点,多个测试点出现不同程度的,说明生活污染是该城区重金属污染的原因。

4.3 问题(3)的模型建立与求解

4.3.1 重金属污染物的传播特征

(1) 大气中重金属沉降
大气中的重金属主要来源于工业生产、汽车尾气排放及汽车轮胎磨损产生的大量含重金属的有害气体和粉尘等。它们主要分布在工矿的周围和公路、铁路的两侧。大气中的大多数重金属是经自然沉降和雨淋沉降进入土壤的。
(2) 农药、化肥和塑料薄膜使用
施用含有铅、汞、镉、砷等的农药和不合理地施用化肥,都可以导致土壤中重金属的污染。一般过磷酸盐中含有较多的重金属Hg、Cd、As、Zn、Pb,磷肥次之,,氮肥和钾肥含量较低,但氮肥中铅含量较高,其中As和Cd污染严重。
(3) 污水灌溉
污水灌溉一般指使用经过一定处理的城市污水灌溉农田、森林和草地。城市污水包括生活污水、商业污水和工业废水。
(4) 污泥施肥
污泥中含有大量的有机质和氮、磷、钾等营养元素,但同时污泥中也含有大量的重金属,随着大量的市政污泥进入农田,使农田中的重金属的含量在不断增高。
(5) 含重金属废弃物堆积
含重金属废弃物种类繁多,不同种类其危害方式和污染程度都不一样。污染的范围一般以废弃堆为中心向四周扩散。
(6) 金属矿山酸性废水污染
金属矿山的开采、冶炼、重金属尾矿、冶炼废渣和矿渣堆放等,可以被酸溶出含重金属离子的矿山酸性废水,随着矿山排水和降雨使之带入水环境(如河流等)或直接进入土壤,都可以间接或直接地造成土壤重金属污染。

4.3.2 确定污染源



(5)根据上表,计算出峰值数据,得到峰值点在如下5个采样点:
采样点编号 : 8 95 182 257 31
第8号采样点峰值周边数据:



第95号采样点峰值周边数据

第182号采样点峰值周边数据



第257号采样点峰值周边数据

第310号采样点峰值周边数据

(6)根据峰值点及峰值点上下左右的海拔高度和污染值的平均值对污染源进行分析:
第8号峰值周边数据分析:
从第八号峰值的来峰值点的海拔比他的前后左右点都要高,当然峰值的污染指数也是最大,左边由于海拔相对高所有污染相对也小,从此可以知道这是一个在相对海拔比较高的污染源向四周扩散的模型,由于采样点距离比较远,从而确定污染源在峰值点附近。
第95号峰值周边数据:

在峰值周边的污染指数都相差不大,但是从海拔中可以看出峰值点所在位置应该是相对低的位置,而且第95号位置属于山地,这说明这里不是污染源,而它产生高污染指标的原因是由于周边的结合综合污染指数图和可以知道这里的污染时周一周边的交通造成,峰值点并不是污染源,如果要找出污染源可以用kriging算法估计周边的污染值并把求得相关点的半径缩小,在取出周边的峰值进行比较找出污染源。
第182号峰值周边数据:
在峰值点的右边和下边的污染指数相对高,而且海拔也相对高,这样的话很有可能是污染源从右下方向下转移污染物,而且峰值的海拔高度都要比右边和下边要低,而从第182号的污染指数中可以知道他的主要污染物时Hg和Ge从内梅罗综合指数图中可以知道在第182号的右下方有一个工厂,从重金属的种类来看很有可能这是一类生产电池工厂,从而产生重金属转移到第182号采样点形成第182号峰值,所有污染源应该在第182号采样的右下方的工厂中,即185号采样点。
第257号峰值周边数据:
该峰值点在周边中海拔最低,而去周边的污染差不多,而去从内梅罗综合指数图可以看出在它周边工厂相对比较多,该采集点是交通区,可能是重要的交通枢纽,该采集点的污染很有可能是周边的工厂排污所造成,如果要找出污染源可以用kriging算法估计周边的更多污染值并把求得相关点的半径缩小,在取出周边的峰值进行比较找出污染源。
第310号峰值周边数据:
在该峰值点周围分布有几个工厂,再对照一下周边的污染值可以发现他的右方向相对海拔高度相对比较高但是污染的值却不下,而他的下的海拔相对比较低污染值也大,从中可以知道,该峰值的造成有可能是有高处转移下了,还有本身也受到周围工厂的影响,所以应该至少有一个污染源在该采集点的右方向,有可能该峰值点也是一个污染源因为它比他周边的海拔相差不大,但是污染指数却比较大。要确定污染源还是要用kriging算法估计周边的更多污染值并把求得相关点的半径缩小,在取出周边的峰值进行比较找出污染源。
统计出的数据如下表:


4.4 问题(4)的模型建立与求解

4.4.1 收集信息

收集信息:城区生活垃圾填埋场,城区地理方位,城区流体的空间位置与流向,重金属传输机理,土质。
我们可以建立模型来预测城市地质环境的演变。首先要确立各种影响因素的指标,如人口数量达到一定等级会产生多少级别的污染。生活区所排放的重金属的含量比例与各种产业部门所排放的重金属的含量比例都有一定的数据可以参考,调查它们的分布比例有利于模型的完善。由于采集的信息涉及重金属在土壤中的迁移形式中的物理迁移、化学迁移和生物迁移。所以选有两个模型,相互弥补不足。一种是以污染源为对象的扩散模型 , 另一种是以污染区域为对象的受体模型。

4.4.2 扩散模型

对于扩散模型,判定土壤是否受特定污染源影响。判定环境是否受到污染时, 通常的做法是选择某一特定的区域(远离污染源)作为背景值,据此与环境介质中污染元素总量进行对比来确定。实际上未受人类影响的、原始清洁的自然背景含量已不可能取到。如果考虑到多数由于人类工业活动所排放的重金属污染物不稳定, 可下渗到下部土壤甚至地下水中, 仅利用土壤中重金属浓度来评价它在土壤中的环境影响是不够的。
而我们针对问题一所使用的模型也是基于背景值做的,确实存在一定的局限性,只能在假设所收集到的数据是客观真实的,才能求出满意的解。若在此基础上,考虑重金属在各种类型的土壤中的扩散速度,则可以更加准确的描述土壤中重金属的污染情况。这方面,在收集足够的关于重金属扩散的数据后,可以制定出一套指标,根据该套指标,再调查核实地区受污染的时间,可以更精确的还原到污染源最初的排污情况。

4.4.3 受体模型

受体模型又称承接模式或受体定位模型,是一种识别与解析受体处大气污染物不同来源及其贡献率的数字模式与方法。受体模型的基本思想是受体与源之间的污染物呈质量平衡的关系,因为污染物从发生源排出后,经扩散混合,在大气中比较均匀分部的(此点是本模型假设中与实际情况差异较大之处)。基于这一思想,可将受体处大气颗粒物及其中元素的来源和质量,认为都是由周围不同污染源输送过来叠加的结果,所以可用简单的数字表达式来表示。



在模型的实际应用中的实现可有许多不同的方法,但基本上可以分为两大类,即显微镜法和化学法。显微镜法只要是根据颗粒物的外貌、颗粒大小(颗粒分布、比表面)、颜色、密度、电磁性质等物理化学的特性,可用光学的、扫描电镜等工具来鉴别它们的来源;通过大量颗粒物样品的测定,可获得定量或半定量的结果。化学法主要是根据和环境中颗粒物的化学性质,如有机的和无机的化学组成、不同元素、化学物种的存在状态等,按照颗粒物与元素质量在受体处的加和模型,通过各种数学处理的计算方法,如富集因子法、聚类分析、多变量分析——化学元素平衡法、因子分析、主成分分析、目标变换因子分析、类型识别技术、空间系列分析和时间系列分析等,可识别受体处颗粒物的不同来源及各来发生源对其贡献的大小(即源对受体的贡献率,或污染的分担率)。受体模型是从受体处发出来的求得各发生源对其贡献量,而物理扩散模式则是从各发生源出发,来求得对受体的贡献量。两者的出发点不同。
若采用此模型,则所需要分析的内容更加复杂,重金属在土壤中的扩散速度还可以比较精确的衡量,若考虑重金属漂浮在空气中,通过空气传播,聚集沉淀,这方面要探测的信息特别复杂,但若在此方面掌握的信息有所突破,则能够将研究城市地质环境的演变的模型改进的更加完善。

5、模型的评价

5.1 模型的优点

(1)在问题一中,选用两个模型说明城区内不同区域重金属的污染程度,相互弥补模型各自的不足。两个模型都使用权重进行衡量,不盲目进行运算。模型二使用了土壤中金属的自然背景值,也使用了国家规定的土壤环境质量标准值,比较符合实际情况。
(2)在问题三中,我们建立的模型,主要通过计算机编程来完成求解,这样减少公式计算,提高了解题效率。

5.2 模型的缺点

(1)在问题一的内梅罗模型中,综合指数过分突出污染指数最大的重金属污染物对环境质量的影响和作用,在评价时可能会人为地夸大或缩小一些因子的影响作用,使其对环境质量评价的灵敏性不够高,在某些情况下,它的计算结果难以区分土壤环境污染程度的差别。
(2)在问题三中,由于没有考虑到城区流体、气流等因素对土壤影响,故模型依靠各采样点寻找污染源,可靠性不强。

6、参考文献

[1] 同济大学应用数学系. 高等数学第五版. 高等教育出版社,2002
[2] 周开利. MATLAB基础及应用教程. 北京:北京大学出版社,2007
[3] 吉奥丹诺. 数学建模(原书第3版). 北京:机械工业出版社,2006
[4] 王正林等. MATLAB科学计算. 北京:电子工业出版社,2007
[5] 冯锦霞.基于GIS与地统计学的土壤重金属元素空问变异分析[硕士学位论文].长沙:中南大学,2007
[6] Swaine D.J.Why trace elements are
important[J].Fuel Processing technology,2000,(65-66):2 1-33
[7] 陈怀满.土壤中化学物质的行为与环境质量[M]. 北京:科学出版社,2002

7、附录

附录1:

%实现内梅罗指数法的MATLAB代码
function p = pollution(A, b, s, w)
p=[];
if(size(A,2)==length(b)&&size(A,2)==length(s)&&size(A,2)==length(w))
    lth = size(A, 1);
else
    disp('维数不相等!');
    return;
end
for(j=1 : lth)
   p2 = pollution2(A(j, :), b, s, w);
   sump = 0;
   for(k=1 : length(p2))
      sump = sump + p2(k);
   end
   p(end+1) = sqrt((sump^2 + max(p2)^2) / 2)
end

function p2 = pollution2(c, b, s, w)
p2=[];p3=[];
lth2 = length(c);
for(i=1 : lth2)
    p3(end+1) = (c(i)-b(i)) / (s(i)-b(i));
end
w2 = 0;wp = 0;
for(k=1 : length(p3))
    for(k=1 : length(p3))
       wp = wp + w(k)*p3(k);
       w2 = w2 + w(k);
    end
    p2(end+1) = wp / w2;
end

附录2:

//计算所有峰值点周围集合的C#代码
using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication3 {
    class Program {
        static void Main(string[] args) {
            proc p = new proc();
            p.initdata();
        }
    }
    public struct Point {
        public int x;
        public int y;
        public int NO;
        public float pollutionindex;
        public int hight;
    };
    public struct AGV {
        public float Avghigt;
        public float Avgcollution;

    };
    public struct AGVPoint {
        public AGV X;
        public AGV Y;
        public AGV x;
        public AGV y;
        public Point p;
    };
    public class proc {
        const double definedistance = 25000000;//设定影响半径
        /// 
        /// 找出污染最高的点
        /// 
        ///  采样点数据
        /// 
        List findpollutioni(List points) {
            int i = 1;
            double distance;
            List pollution = new List();
            List nearPoints = new List();
            foreach (Point p in points) {
                i = 1;
                nearPoints.Clear();
                foreach (Point pi in points) {
                    distance = (p.x - pi.x) * (p.x - pi.x) + (p.y - pi.y) * (p.y - pi.y);
                    if (distance < definedistance) {
                        nearPoints.Add(pi);
                    }
                }
                foreach (Point pp in nearPoints) {
                    if (p.pollutionindex < pp.pollutionindex) {
                        i = 0;
                        break;
                    }
                }
                if (i == 1) {
                    pollution.Add(p);
                }
            }
            return pollution;
        }
        /// 
        /// 输出数据点
        /// 
        void printfPointdata(List points) {
            List pollution = findpollutioni(points);
            if (pollution.Count > 0) {
                foreach (Point p in points) {
                    Console.Write(p.NO + "  ");
                }
            }
            Console.WriteLine("------");
        }
        /// 
        /// 转换数据
        /// 
        List changedata(int[] x, int[] y, int[] higt, int[] no, float[] pollutionindex) {
            List points = new List();
            for (int i = 0; i < x.Length; i++) {
                Point p = new Point();
                p.x = x[i];
                p.y = y[i];
                p.hight = higt[i];
                p.NO = no[i];
                p.pollutionindex = pollutionindex[i];
                points.Add(p);
            }
            return points;
        }
        /// 
        /// 从txt文件中读取数据
        /// 
        public float[] readdatafloat(string s) {
            float[] data = new float[319];
            string[] Lines = System.IO.File.ReadAllLines(s);
            for (int i = 0; i < Lines.Length; i++) {
                data[i] = Convert.ToSingle(Lines[i]);
            }
            return data;
        }
        /// 
        /// 从txt文件中读取数据
        /// 
        public int[] readdataint(string s) {
            int[] data = new int[319];
            string[] Lines = System.IO.File.ReadAllLines(s);
            for (int i = 0; i < Lines.Length; i++) {
                data[i] = Convert.ToInt32(Lines[i]);
            }
            return data;
        }
        /// 
        /// 初始化数据
        /// 
        public void initdata() {
            List ps = new List();
            List ps1 = new List();
            List ps2 = new List();
            string data, x, y, no, h;
            data = @"E:\data\data.txt";
            x = @"E:\data\x.txt";
            y = @"E:\data\y.txt";
            no = @"E:\data\No.txt";
            h = @"E:\data\hight.txt";
            int[] xs = readdataint(x);
            int[] ys = readdataint(y);
            int[] higts = readdataint(h);
            int[] nos = readdataint(no);
            float[] datas = readdatafloat(data);
            List ap = new List();
            ps = changedata(xs, ys, higts, nos, datas);
            ps1 = findpollutioni(ps);
            printfPointdata(ps1);
            foreach (Point p in ps1) {
                ps2.Clear();
                ap.Clear();
                ps2 = GetnearPoint(p, ps);
                ap.Add(getvegcoll(p, ps2));
                printfAGVPoint(ap);
            }
            Console.ReadLine();
        }
        public void printfAGVPoint(List ap) {
            string s;
            string s1;
            string s2;
            string s3;
            string s4;
            foreach (AGVPoint a in ap) {
                s = "中心点" + a.p.NO + " 的高:" + a.p.hight + "污染指数" + a.p.pollutionindex + "\r\n";
                s1 = "上方的高:" + a.X.Avghigt + "上方的污染指数:" + a.X.Avgcollution + "\r\n";
                s2 = "下方的高:" + a.x.Avghigt + "下方的污染指数:" + a.x.Avgcollution + "\r\n";
                s3 = "右方的高:" + a.Y.Avghigt + "右方的污染指数:" + a.Y.Avgcollution + "\r\n";
                s4 = "左方的高:" + a.y.Avghigt + "左方的污染指数:" + a.y.Avgcollution + "\r\n";
                Console.WriteLine(s);
                Console.WriteLine(s1);
                Console.WriteLine(s2);
                Console.WriteLine(s3);
                Console.WriteLine(s4);
                Console.WriteLine("**************************************");
                System.IO.File.AppendAllText(@"E:/fenxin.txt", s + s1 + s2 + s3 + s4 + "**************************************\r\n");
            }
        }
        /// 
        /// 获取p点周围的点
        /// 
        public List GetnearPoint(Point p, List points) {
            double distance;
            List nearPoints = new List();
            foreach (Point pi in points) {
                distance = (p.x - pi.x) * (p.x - pi.x) + (p.y - pi.y) * (p.y - pi.y);
                if (distance < definedistance) {
                    nearPoints.Add(pi);
                }
            }
            return nearPoints;
        }
        /// 
        ///获取p前后左右的的污染指数平局值和高度平均值
        /// 
        public AGVPoint getvegcoll(Point p, List points) {
            List X = new List();
            List x = new List();
            List Y = new List();
            List y = new List();
            List gt = new List();
            AGVPoint Ap = new AGVPoint();
            for (int i = 0; i < points.Count; i++) {
                if (p.x > points[i].x) {
                    x.Add(points[i]);
                }
                else {
                    X.Add(points[i]);
                }
                if (p.y > points[i].y) {
                    y.Add(points[i]);
                }
                else {
                    Y.Add(points[i]);
                }
            }
            Ap.X = getoneavt(X);
            Ap.x = getoneavt(x);
            Ap.y = getoneavt(y);
            Ap.Y = getoneavt(Y);
            Ap.p = p;
            return Ap;
        }
        /// 
        /// 获取一个方向的高和污染的平均值
        /// 
        public AGV getoneavt(List points) {
            AGV a = new AGV();
            a.Avgcollution = 0;
            a.Avghigt = 0;
            float higt = 0;
            float collution = 0;
            for (int i = 0; i < points.Count; i++) {
                higt += points[i].hight;
                collution += points[i].pollutionindex;
            }
            a.Avgcollution = collution / points.Count;
            a.Avghigt = higt / points.Count;
            return a;
        }
    }
}

附录3:
经典综合评价方法求出的污染指数表(20个)



附录4:
内梅罗指数法求出的污染指数表(100个)







附录5:
污染分级表









你可能感兴趣的:(城市表层土壤重金属污染分析)