陈欣 郑刚
(江苏省森林资源监测中心 江苏南京 210036)
森林资源管理“一张图”年度更新,是在林地保护利用规划林地落界生成的林地“一张图”基础上,利用地理信息系统和遥感等技术手段,对发现的改变林地用途和采伐林木等变化图斑,通过核对档案资料、现地验证等方法,完成更新期间发生的林地范围、林地利用状况(地类)、林地管理属性和林木资源等变化情况的调查,形成最新的森林资源管理“一张图”成果数据[1-2]。2012年,江苏省完成了全省林地保护利用规划林地落界并初步构建了全省林地“一张图”数据库;2012年底和2013年,分别开展了两次年度更新县级试点工作;2014年,开展了年度更新全省试点工作;2016年,完成了全省更新基础数据调整工作;2017年起,全省逐年开展更新工作,实现了更新工作常态化。由于历史的原因,数据中存在大量“毛刺”,如何快速检测“毛刺”是提高效率的有效途径。
在分析森林资源管理“一张图”图形毛刺产生原因的基础上,提出了基于Model Builder模型构造器的森林资源管理“一张图”数据毛刺检测技术方法。
2012年全省林地保护利用规划林地落界是以当时全省最新的森林资源二类调查数据即2007-2009年全省森林资源二类调查数据为基础,开展林地“一张图”林地边界确认工作。全省2007-2009年森林资源二类调查为非全覆盖调查,未对非林地进行勾绘和调查,只勾绘和调查了林地小班;而全省林地落界工作要求对全省范围所有国土进行全覆盖调查,即全省范围内所有地块(包括林地和非林地)都需要作为小班进行勾绘和调查,生成全省范围全覆盖调查的“一张图”数据[3]。
面是由线构成,线是由点构成。毛刺主要是指矢量数据中线上存在的空间逻辑性错误,即组成线的相邻节点出现急剧回折,如线打折出现回头、线突然出现一处冒尖、线上存在重复节点等现象。由于县级林业部门技术力量、技术水平和软件平台等原因,各县森林资源二类调查普遍存在相邻林地小班存在缝隙和边界处林地小班与行政界线之间不吻合等情况,利用GIS软件生成的全覆盖数据存在大量的细碎和毛刺,若对所有小班逐一过堂识别并修改毛刺小班的话,工作量特别大。
图1为林地保护利用规划林地落界过程中产生的毛刺。
图1 林地保护利用规划林地落界过程中产生的毛刺
(a.非全覆盖调查,网格线区域为二类调查林地小班,黑粗线为行政界线;b.全覆盖调查,网格区域为二类调查林地小班,灰色区域为非林地小班,黑粗线为行政界线,标识点位置为毛刺;c.几种可能出现的毛刺类型)
森林资源管理“一张图”年度更新任务是在前期“一张图”数据基础上,利用更新年度内的植树造林、森林采伐、规划调整、占用征收林地、毁林开垦和森林灾害等森林资源档案资料,将“一张图”数据库时点调整到更新年度的12月31 日。国家林草局发布的《林地变更调查工作规则》中也强调要建立森林资源档案制度,建立林地变更调查工作图和林地管理档案信息系统,并加强日常林地等森林资源档案管理和及时更新,实现常态化林地变更监管。江苏各县级单位虽然逐步重视日常林业档案资料建立,但是档案建立程序不规范,特别是植树造林和森林采伐的档案资料,未以森林资源管理“一张图”为底图进行区划调查勾绘,仅根据影像在新建图层上调查勾绘,与前期年度“一张图”成果更新叠加后,又会产生新的毛刺。
同时,自2016年度更新起,年度更新成果要与国土部门土地调查及其变更调查数据有效叠加衔接,对“一张图”上所有小班进行图形叠加并备注其在国土调查数据中的地类,填写林地管理类型,区分林业部门和非林业部门管理。由于国土部门土地调查与森林资源管理“一张图”年度更新执行的规范标准不一致,其图斑界线与“一张图”小班界线存在明显差别,叠加衔接后将会产生大量新的毛刺。据统计,2012年全省林地落界小班数量为105 万组,全省现有的与国土调查数据叠加衔接后的“一张图”小班数量约为319 万组,小班数量增加了两倍多。
模型构造器(Model Builder)是ArcGIS用来创建、编辑和管理模型的应用程序。通过模型构建器创建模型并将其共享为工具能够扩展ArcGIS 功能,其创建的工具可在Python脚本和其他模型中使用[4]。模型构造器能将ArcToolbox 中的多种空间分析工具在模型图表中串联,模型运行时工具将按照顺序流程执行,从而实现流程化和自动化,实现多用户共享,极大提高数据处理效率[5-6]。因此,利用Model Builder 进行毛刺检测技术流程设计,将大大减少逐个小班检查的工作量,并能重复使用流程化的操作步骤,大大提高工作质量和工作效率。
根据毛刺特点和江苏省历次年度更新成果数据,拟采用角度分析法进行毛刺小班检测筛选。通过大量数据分析,毛刺点公共边夹角基本小于3度,故通过分析和检测每个多边形小班的所有的相邻边界的夹角,并筛选出小于3度的夹角的折点作为毛刺点。按照模块化和流程化的设计原则,利用模型构造器,分以下步骤进行毛刺检测技术流程路线设计:
(1)小班统一编号。将需要进行毛刺检测的所有小班合并后,存储为shp、mdb或gdb格式,并对所有面状多边形小班统一编制唯一识别号。
(2)计算小班边界方位角。计算所有多边形小班所有折边的方位角。
(3)生成小班折点并赋值。提取所有多边形小班的边界折点,将所有多边形小班每个相邻两条边界的方位角值存储到两条边界相交折点属性表相应的字段中。
(4)边界夹角计算。计算相邻边界的夹角,并将夹角值存储到相邻边界相交的节折点属性表相应的字段中。
(5)毛刺点筛选。筛选出小于3度的夹角的折点作为毛刺点,并存储为shp、mdb或gdb格式。
图2为基于ModelBuilder的毛刺小班检测筛选技术路线。
图2 基于ModelBuilder 的毛刺小班检测筛选技术路线
2.3.1 数据准备
合并需要进行毛刺检测的小班,并为小班赋唯一编号值。具体步骤为:
(1)利用“合并”(Merge)工具将所有需要进行毛刺检查的小班合并为shp格式的矢量文件。
(2)在合并后的小班文件中,新建长整型的字段,字段命名为“唯一编号”,并利用属性计算器,将shp图形的“FID”字段值赋予该字段,对小班赋唯一编号值。
2.3.2 计算边界线方位角
分别计算每个小班边界折线的起始-结束方位角。方位角值范围介于0-360°之间,其中,正北为0°。具体步骤为:
(1)利用“面转线”(Polygon To Line)工具(“识别和存储面邻域信息”不勾选),将所有小班从面状多边形转为线状多边形,转换后原面状小班数量等于线状多边形数量。
(2)利用“在折点处分割线”(Split Line At Vertices)工具将上一步生成的线状多边形在折点处分割为边界折线,分割后的边界折线将保留“唯一编号”字段和字段值,用于识别该边界折线隶属哪个小班。
(3)利用“添加几何属性”(Add Geometry Attributes)工具,勾选“线的起始-结束方位角”(LINE-BEARING)选项,在上一步分割后的边界折线属性表中自动添加“BEARING”(方位角)字段,并自动计算该折线的方位角。
2.3.3 生成小班折点
利用“要素折点转点”(Feature Vertices To Points)工具,点类型分别选择“起点”(START)和“终点”(START)将前上一步分割后的含方位角的边界折线的折点转换为点,最终生成两个shp格式点文件:带有“唯一编号”和“BEARING”(方位角)字段的“起点”shp格式点文件,以及带有“唯一编号”和“BEARING”(方位角)字段的“终点”shp格式点文件。
2.3.4 新建存储夹角值的点文件
利用“创建要素类”(Create Feature Class)工具,创建点要素,利用“添加字段”(Add Field)工具,分别添加“唯一编号”“唯一编号_1”“BEARING”“BEARING_1”和“夹角”等字段,作为存储夹角值的点文件。
2.3.5 小班所有边界夹角计算
前步生成的小班“起点”和“终点”点文件分别包含了两条相交折线的方位角值,因此可以利用Model Builder的迭代功能(遍历所有小班唯一编号值),通过“唯一编号”字段值逐一选择某个小班对应的所有“起点”和“终点”,利用“标识”(Identity)工具、属性计算器和“追加”(Append)工具,完成一次迭代流程,生成某个小班的所有折线夹角点。具体步骤为:
(1)利用ModelBuilder的“迭代要素选择”(Iterate Feature Selection)迭代器,将“起点”点文件中的“唯一编号”字段作为迭代字段,每迭代一次,输出“起点”点文件中的一个“唯一编号”值和该“唯一编号”值对应的所有起点要素,利用“选择”(Select)工具,选出“终点”点文件相同“唯一编号”值对应的终点要素。通过这个步骤,即可选择同一小班所有的“起点”和“终点”。
(2)利用“标识”(Identity)工具,用上步选择的“终点”标识上步选择的“起点”,在“起点”属性表中将自动增加“唯一编号_1”和“BEARING_1”(方位角)字段,这两个字段为“终点”对应的字段和值。通过该步骤,一个折点上具有了相交于该点的、与小班编号值相对应的两个折线的方位角。
(3)利用“计算字段”(Calculate Field)工具,计算上述生成的点文件中“夹角”字段,在“夹角”字段中输入“ABS(ABS([BEARING]-[BEARING_1])-180)”表达式,即可计算相交于该点的两条折线的夹角。
(4)通过“追加”(Append)工具将上述步骤生成的某个小班对应的夹角点文件追加到存储夹角值的点文件。
2.3.6 毛刺点检测
利用查询构造器,选择存储夹角值的点文件中“夹角”字段值小于3的所有点,就是毛刺点。
图3 为基于ModelBuilder 的毛刺检测技术流程。
利用ModelBuilder模型构造器的特点,构建毛刺检测自动化工具,将繁琐的重复操作步骤进行集成化和流程化,实现自动检测,提高了工作效率,便于基层林业工作者快速掌握,为“一张图”数据毛刺检查和毛刺修改提供了快捷的操作手段,也为ModelBuilder用于森林资源管理“一张图”年度更新工作提供了示范。
由于ModelBuilder也存在一定的局限性,利用ModelBuilder构建的毛刺检测自动化工具不能单独由一个模型而是由于几个模型共同完成,因此,后续可以借助Python脚本将基于ModelBuilder的毛刺检测自动化工具优化成一个脚本工具;同时,还可利用ModelBuilder构建毛刺自动化修改工具。