查看原文
其他

ArcGIS污染程度空间深度分析(附练习数据下载)

GIS探索 GIS前沿 2023-01-12



数据准备:


(1)数据1:研究区功能区分类标准



(2)数据2:污染程度等级划分标准(按照地积累指数划分):



(3)数据3:污染监测点数据(包括功能区编号字段和地积累指数字段),如果点数据没有该类数据可以先添加相应的功能区编号和地累积的excel表到图层中再右键点数据根据公共字段进行连接,然后添加字段通过计算字段复制过来。


文末有数据下载链接。


分析过程:


(1)首先根据数据1(function)和数据2(累积)在数据3中添加两个字段,分别是功能区和污染度(都选择文本类型,长度中一个中文要两个字节)。



(2)添加完字段后右键功能区列头,选择计算字段,参数设计如下,先选择解析程序语言为Python语言,在最下面的“功能区=”输入框输入一个方法:方法名(字段名)。



首先我解释一下方法名:方法名自己定义,只要是英文字母就行了,怎么简单怎么来啦,我直接用大写的A,这个没有什么要求,学过计算机语言的应该很清楚嗯哈哈哈啊啊啊啊啊啊啊,注意方法名后面的括号一定是英文输入法下的括号!!!!所有计算字段除了双引号里面的字符串外都要英文输入!!!


接下来是字段名,这个直接在第一个大框框(字段:)里面点击字段名,旁边的双引号就自己加上了。


勾选显示代码块,在预逻辑脚本代码添加如下代码(注意严格缩进):


def A(a): if(a==1): return "生活区" if(a==2): return "工业区" if(a==3): return "山区" if(a==4): return "交通区" if(a==5): return "公园绿地区"


(3)右键污染度列头,选择计算字段,参数设计如下:



勾选显示代码块,在预逻辑脚本代码添加如下代码(注意严格缩进):


def A(a): if(a<=0): return "无污染" if(a>5): return "极严重污染" if(a>4): return "强-极严重污染" if(a>3): return "强污染" if(a>2): return "中等-强污染" if(a>1): return "中等污染" if(a>0): return "轻度-中等污染"


(4)计算完两个字段后,我们可以通过属性表查看某个功能区对应什么程度的污染情况,非常方便。



根据地累积指数划分污染等级,得到不同功能区的污染程度:但是都是点形式,无法通过面来直观分析污染情况,于是考虑使用点生成泰森多边形来生成面来展示污染情况的空间分布。



(5)右键得到的泰森多边形属性,在符号系统的显示(S)框下面选择数量—分级色彩,如下图所示:



再选择分类按钮进入分类设置,选择分类方法为手动,类别选择7,在右边的中断值输入数据2对应的污染程度等级划分标准,如下图所示:

  


(6)点击确定返回上一界面选择自己喜欢的渐变颜色,在标注栏输入对应的分类等级,如下图所示:



(7)在属性中选择标注栏,设置相关参数,再点击放置属性,勾选相关参数,如下图所示:



(9)经过出图得到污染程度空间分布图如下:


污染程度空间分布图


污染程度空间分析文末已经得到了污染程度空间分布图,本文根据已有数据进行更深层度的分析,从而找出污染源。


(1)右键泰森多边形,通过统计不同污染程度的功能区数量,得到如下污染程度数量分布图:

 

污染程度数量分布图


由污染程度空间分布图可以知道该城区污染物主要分布在西南地区以及中部局部地区,自西南向东北递减,极值在西南角地区,并且污染严重地区功能区主要是交通区和工业区,东部地区大部分都是无污染地区,由此可知污染源范围就锁定在西南地区以及中部局部地区。


由污染程度数量分布图可以知道该城区无污染地区占50%左右,轻度污染和中等污染占40%,强污染地区占不到1%,没有地区污染程度达到强-极严重污染和极严重污染程度。


(2)对地累积指数进行反距离权重空间插值,字段选择地累积污染指数,得到地累积指数空间插值图,对图层按照污染程度分成5类,因为由污染程度数量分布图可以知道该城区没有地区污染程度达到强-极严重污染和极严重污染程度。(那为什么选择反距离权重插值方法,不选用其他插值方法呢?因为小编后面要找到污染源,而反距离权重法插值它以插值点与样本点间的距离为权重进行加权平均,离插值点越近的样本点赋予的权重越大,所以结果相比较于其他插值方法可以更直观呈现出那些点值更突出,污染源更为明显 )


 

地累积指数空间插值图


(3)那么问题来了,这么多个测量点,那个才是污染源呢?很明显,点所在的地区颜色越深,作为污染源的可能性越大,那直接选中导出数据可以吗?老实说,额,确实可以,就像是遥感中的目视解译,但是如果我研究的地区很大,测量点更多,那这种方法就不可取了,所以我们要使用焦点统计工具求出一定范围内的最大值Max,然后用原始插值数据减去最大值Max等于0的那个栅格就是该地区灰度值(像元值)最大的栅格,也就是污染指数最大的栅格(即污染源),最后将栅格转换成矢量的点数据即可。


在焦点统计中的邻域分析中我选择圆形,半径选择30个像元,这个要视具体情况而定,统计类型选择MAXIMUM,整个设置下来的意思就是说,在半径为30个栅格的圆内(对于边缘栅格,如果该像元中心是在该邻域内,则将其包括)找到灰度值(像元值)最大的那个栅格作为圆心那个栅格的灰度值。

 


焦点统计结果如下:会发现除了圆的边缘,圆内的颜色都差不多,这是因为某一个最值都被附近的领域包括在内作为了最大值,一人独大!!哈哈哈哈哈哈。

 

Max:焦点统计图


(4)接下来就是计算地累积指数插值结果减去Max数据等于0的栅格,得到地累积指数空间分布的多个极值,即可认为这是污染源的待选点。那问题又来了,怎么计算呢?矢量数据的计算有字段计算器,栅格数据的计算有栅格计算器!!


接下来是语法教学,其实很简单,就是在图层和变量框里面双击选择反距离权重插值出来的数据和Max数据,在二者中间输入减号,两个前后位置无所谓(因为最后都是等于0嘛)最后在末尾输入“==0”!!!(注意是两个等于号,而且你会发现运算符那个框里面没有只有一个等于号的给你选,因为在计算机语言里面“==”就是我们数学上所理解的等于号“=”),写完简单的减法表达式后选择输出路径点确定就行了。


 

通过观察计算结果可以知道图层只有两种颜色(黑白色我是为了对比明显才故意搞的,白点我差点以为是电脑屏幕上的灰尘.........),一种颜色代表一个值,值只有0和1,相信学过计算机的小伙伴都知道,计算机计算都是二进制的0和1,1代表是,0代表不是,图上的白点是1,代表刚才的计算结果,即地累积指数插值结果减去Max数据等于0的结果,其他黑色的都是背景值为0,通过查看属性表可以知道像元值为1的栅格有20个,并且分布比较分散。不同的像元统计会导致栅格计算结果不一样。

 


(5)栅格出来了,但是它不能改变大小形状,而且不方便删除不合格的栅格(污染源待选点),于是可以考虑转化成矢量点数据,这样方便删除不合适的点并且可以符号化污染源,让其空间分布更加直观形象。但是在转矢量之前要先重分类,因为栅格计算结果有0的背景值,我们需要把它划分成无数据(Nodata),相关参数如下,只要将旧值的0修改成Nodata就行啦!!!!


 

得到的栅格数据只有值为1的那20个最值栅格,值为0的背景值已经不见啦,然后就可以直接转化成矢量点数据了(栅格数据的灰度值就是Value字段,跟栅格数据有关的字段99%都是选择这个字段!)。


 

(6)对矢量点进行符号化,然后对比地累积指数空间插值图。

 

待选点和探测点对比图


由前面分析可知污染源范围就锁定在西南地区以及中部局部地区。由对比图分析可知,在测量点范围外的地区产生的污染源待选点明显不符合条件,故删除,属于或者靠近无污染地区和轻度-中等污染区的待选点只能作为传播过程的显著点,经过考虑后也要删除。


最终我选取了8个点作为污染源。



数据下载
进入本公众号后台
发送数字
1771
获取下载链接
文件名:污染分析练习数据


- END -


全国12.5m DEM免费下载!
开源软件,谷歌影像免费下载!
色差大调色难?实操讲解如何去除谷歌影像色差
ArcGIS,CC,Global Mapper,ENVI....工作中常用软件的汉化包都在这,随你下载
GIS制图 | 复刻《这里是中国》(附DEM、全国遥感影像练习数据下载)


戳原文,更有料!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存