基于ArcGIS与高分影像进行绿地变化分析
1. 需求
现在有某区域的高分影像和对应范围的土地利用现状数据,现在的耕地面积比二调大了很多,需要把没有备案的土地清查出来。简单的说就是要找出哪些绿地是新增的或者由其他用地类型转化而来的。
2.总体技术路线
(1)对影像采用遥感的分类方法进行分类
在ArcGIS中采用监督分类的方法,先对不同用地类型进行采样,然后对分类器进行训练,最后对影像进行分类。也可以在Envi软件中进行分类,经测试ArcGIS中做绿地提取的效果也不错,同时为了在同一软件中完成所有工作,因此选择在ArcGIS中进行影像分类。
通过遥感方法进行自动分类的结果一般都会存在误差,这种误差和影像质量、采样样本、分类方法都有很大关系。这属于遥感专业范畴,本文就不详细说明了。
(2) 重分类
重分类的作用主要是进行二值化,把重点关注的绿地值赋为1,其余用地类型的值赋为0。
也可以跳过重分类,只要在转成矢量之后,把所有绿地按属性提取出来,再合并成一个图层也可以。
(3)栅格转矢量
为了对比分析,需要把重分类的结果转化为矢量数据。之后,把其中的绿地作为一个图层单独提取出来。
(4)绿地变化分析
变化分析分为两种,一种是分析绿地扩大的部分;另一种是可以分析绿地减少的部分,也就是违法建筑占用掉的绿地。
用现状中的绿地擦除掉影像中提取出来的绿地,就是扩大的部分;反之,用影像中的绿地擦除掉现状中的绿地,就是减少的部分。本次进行前者分析即可。
(5)分析绿地的变化性质
将分析出来的扩大的绿地和整体的现状数据进行相交分析,就可以得到扩大的绿地是由哪些用地类型转化而来的了。
3.具体实现
3.1 高分影像分类
3.1.1分类前预处理
由于拿到的影像格式是Grid格式,为了便于拷贝和操作,先将影像输出为tif格式。具体操作:
在ArcMap中打开12-2影像:
在影像上右键,选择“Data——Export Data”:
指定输出的文件夹路径以及影像名称即可。
3.1.2 分类采样
在ArcMap中打开1221.tif,在ArcMap菜单上的空白处右键,勾选Image Classification工具条:
可以看到该工具条已经添加出来:
分类工具条由于分类前的采样对分类结果影响比较大,所以要针对影像进行具体分析。
对于这幅影像我们为了更好的区分出绿地与其他地类,对影像按照建筑用地、水域、绿地这三类进行分类,建筑物再按蓝色屋顶、白色屋顶、红色屋顶,绿地按照深绿色、亮绿色以及浅绿色进行采样。具体解译标识示例如下:
用地类型采样分类示例
建筑用地蓝色屋顶
白色屋顶
红色屋顶
绿地深色绿地
亮色绿地
浅色绿地
水域水域
确定好解译标识后,就开始进行采样。点击Image Classification中的训练样本管理器:
现在就可以开始采样了,点击Image Classification中的绘制多边形:
采样管理器然后对着蓝色屋顶的建筑物区域进行绘制:
绘制完后可以在训练样本管理器中看到已经采到的样本。可以对样本的Class Name进行修改,这里就改为buildingblue。然后可以继续采一些蓝色屋顶的建筑物。
接着再采红色屋顶、白色屋顶的样本:
继续重复以上步骤,完成水域和绿地的采样。最后训练样本管理器中的样本显示如下:
此时,可以相同类的样本合并到一起,比如蓝色屋顶的合并为一类,红色屋顶建筑合并为一类等等。
将样本管理器中同类的样本选中,然后点击“合并训练样本”:
就把同类的样本合并成一类了,全部合并完之后结果如下:
采样管理器结果最后点击训练样本管理器中的保存,将样本数据保存到自定义的指定位置。
保存结果可以是shapefile数据,也可以存到GDB当中。我这里存成trainsample2.shp。至此样本数据就采集完成。
3.1.3定义最大似然发分类器
通过Train Maximum likelihood Classifier工具创建用于分类的分类器。该工具位于“Spatial Anaylst Tools——Segmentation and Classification——Train Maximum likelihood Classifier”:
Input Raster:选择要分类的影像数据1221.tif
Input Training Sample File: 选择上一步的采样结果:transample2.shp
最后指定训练器定义文件的输出路径及名称。
点击OK,完成计算。
3.1.4影像分类
采用栅格分类工具对影像进行分类:
Input Raster:要分类的影像
Input Classifier
Definition File:刚才上一步创建的分类器定义文件。
最后指定分类结果的存储位置及名称。点击OK开始分类。
分类结果如下:
可以看到分出来的结果很破碎,需要对分类结果进行聚合,采用聚合工具进行数据处理:
其中Cell factor就是聚合的栅格单元大小,值必须大于1,如果太大,分类结果就会比较粗略,这个数据我测了两次,感觉设成9比较合适。Aggregation technique就是聚合时选择哪个值作为聚合之后的值,这里选择MEDIAN,就是排序之后位于中间的那个值。
至此,影像分类及后处理就完成了,我们可以将其他用地类型颜色不显示,只显示分出来的绿地,看看结果是否满意。
可以使用Effects工具条,对结果和原始影像使用“卷帘”工具进行对比查看。分类结果整体比较满意,绿地都分出来了。
3.1.5重分类
将分类结果二值化为0和1两类,也就是非绿地和绿地两类。打开Reclassify工具:
Old values就是分类结果聚合后栅格数据的旧值,如果这里显示的类别不全,是因为显示的时候符号系统里没有显示全,在图层上的符号系统设置里,把所有值的符号都显示出来即可。
New Value就是要设置的新值。
这里要先清除旧值里哪些值对应的是绿地,比如我这个结果中0、1、2对应的绿地,则把这几个的新值改为1,其余的改为0。要根据自己的结果进行修改。
3.2 栅格转矢量
采用Conversion Tools中的Raster to Polygon工具将栅格结果转化为矢量数据。
转换完后在arcmap里把value值为1的绿地图层提取出来。打开转换后的矢量图层的属性表:
在属性表左上方点击“表选项”按钮:
选择按属性选择(Select by Attribute):
双击gridcode字段,该字段就自动被填充到下面的框里,然后点击等于号,再点击Get Unique Value,就可以获取到该字段的所有值。使得输入框中的表达式为“gridcode=1”,然后点击Apply。就把所有绿地选择出来了。关掉当前这个选择窗口。可以看到选中的结果:
在用地图层上右键,将选中的结果导出:
结果如下:
3.3 绿地变化分析
影像中提取出来的绿地中擦除掉现状中的绿地,剩下的就是扩大的绿地了。
由于现状数据中包含了绿地、建筑用地、水域用地等多种地类,所以要先从现状数据中把所有绿地提取出来。在ArcMap中加载现状数据,加载的时候提示没有坐标系:
要先给现状数据定义坐标系。选择Data Management Tools中的Projection and Transformations——Define Projection:
点击右侧的按钮,弹出坐标系选择窗口:
点击Layers,列出的是当前ArcMap中所有图层的坐标系,因为已经打开了1221.tif,这个栅格图层的坐标系就是xian1980 29N坐标系,直接选择这个坐标系,点击OK,完成坐标系定义。
打开现状数据的属性表,打开按属性选择窗口:
按照用地类型的属性编码,把属于绿地类型的水浇地、林地、果园等都选择出来。输入框中的内容为:"DLBM" IN( '012' , '021' , '031' , '032' , '033' , '043' )
点击Apply,关闭当前窗口,在现状数据上右键,选择Data——export data。将现状中的绿地数据输出:
使用Analysis Tools——Overlay——Erase工具进行绿地的变化分析:
Input Feature是被擦除的要素,也就是从影像上提取出来的绿地数据;
Erase Feature是用来擦除其他要素的数据。也就是现状中的绿地数据。
指定输出和名称之后,点击OK运行工具。得到的结果为所有扩大的绿地。
3.4 变化性质分析
用扩大的绿地数据与整体现状数据进行相交分析,扩大的绿地就有了原来用地性质的属性。使用Analysis Tools——Overlay——Intersect工具:
如果不关注建设用地、村庄、水域中的绿地,可以通过Erase工具,利用这些用地数据把扩大的绿地中的数据擦除掉。