地理空间信息GEOSPATIALINFORMATION2018年7月第16卷第7期Jul.,2018Vol.16,No.7收稿日期:2017-04-17。项目来源:国家自然科学基金资助项目(51378099)。基于FME的图斑净面积计算方法胡明星1,虞 刚1(1.东南大学,江苏 南京 210096)摘 要:通过分析图斑净面积的计算公式,在图斑编码的基础上,运用FME实现了图斑净面积量算工作的流程化和自动化。与其他方法相比,基于FME的图斑净面积计算方法具有操作简单、易于实现和不用编程的特点。关键词:FME;图斑编号;图斑净面积;线状地物中图分类号:P208 文献标志码:B 文章编号:1672-4623(2018)07-0092-04第二次土地调查全面查清了全国土地利用状况,掌握了真实土地数据,建立了各级土地利用数据库和地籍管理信息系统,实现了全国土地的信息化和网格化管理,为国土资源管理部门提供了土地利用现状数据。这些成果已广泛应用于土地利用规划编制、土地利用动态监测、耕地保护和建设用地报批等相关工作中。在编制土地利用规划时,需依据第二次土地调查的现状土地利用数据库计算基期图斑要素层中每个图斑的净面积,同时需根据规划编制成果计算规划后图斑要素层中每个图斑的净面积,图斑净面积是必备字段,是图斑多边形要素层的重要属性。随着地理国情监测工作的开展,农业生产领域需要精确调查土地种类、计算土地面积,因此图斑净面积量算同样十分重要和不可或缺[1]。图斑净面积的计算公式较简单,但在各类GIS软件平台进行计算时,过程较复杂。净面积计算方法多样,一般都是借助专门的建库软件来完成,但建库软件是依据国标来编制的,而各地实际情况不一,使得建库软件的适应性不佳。通常,利用ArcGIS的空间分析功能和VBA的开发环境,通过编程或图解建模的方式来实现图斑净面积的量算[2-7],但由于图斑面积计算需求取椭球面积,而ArcGIS缺少椭球面积计算功能,导致该方法计算得到的图斑净面积精度不高。FME具有很强的灵活性,可根据各地的不同情况对构建的模版进行有针对性的修改,能快速和精确地计算图斑净面积。针对国土部门常用的MapGIS软件数据格式,开发了FME读取MapGIS数据的插件,无需进行数据格式转换即可读取和处理MapGIS数据,提高了数据处理的效率。1图斑净面积计算公式图斑净面积在数据库中对应的字段名称为图斑地类面积,字段代码为TBDLMJ,在建立土地利用数据库时必须计算图斑要素层中每个图斑的净面积。其计算公式为:图斑净面积=图斑毛面积-线状地物面积-零星地物面积-田坎面积式中,线状地物面积=线状地物长度×线状地物宽度×线状地物扣除比例;图斑毛面积为图斑多边形要素的椭球面积,要求输入多边形要素的空间参考为1980西安坐标系;田坎面积=(图斑毛面积—线状地物面积—零星地物面积)×田坎系数,田坎系数为田坎面积与耕地图斑面积的比例,在建库时已确定。1.1线状地物扣除比例的确定计算过程中的难点主要在于线状地物面积的确定,一个多边形图斑内可能有多条线状地物或多个零星地物,其中线状地物扣除比例是由线状地物与图斑的关系决定的。线状地物主要分为位于图斑内和与图斑界线共线两种。若线状地物位于图斑的边界上,则扣除一半,扣除比例取0.5;若线状地物位于图斑内则全扣。1.2 净面积的计算步骤由图斑净面积的计算公式可知,计算图斑净面积时需要图斑多边形要素层、线状地物线状要素层、零星地物点状要素层3个要素层,净面积计算的具体步骤为:1)线状地物的数据处理。线状地物要素在进行图斑净面积计算前需构建拓扑结构和确定线状地物扣除比例。建立线状地物的拓扑结构,若线状地物跨越图斑边界,则需在与图斑边界的交点处断开,重新计算线状地物面积;再根据线状地物与图斑边界的空间关系判断线状地物是否位于图斑内,将完全落在图斑内以及与图斑界线共线的线状地物分离到两个不同线状要素图层中,以确定线状地物面积是全扣还是半扣。2)各类扣除面积的计算。计算图斑的零星地物扣doi:10.3969/j.issn.1672-4623.2018.07.029·93·第16卷第7期除面积、线状地物扣除面积、田坎面积,零星地物面积的扣除较简单,根据零星地物与图斑的空间关系,位于图斑内,则全扣除。3)图斑净面积的计算。计算得到各类扣除面积后,按照图斑净面积计算公式计算图斑净面积,并将有关面积填到对应字段中。2图斑多边形要素的规则编号与图斑椭球面积计算2.1图斑多边形要素的规则编号图斑多边形要素一般都需要编号,以便识别以及与相关属性数据进行关联,如全国第二次土地调查基本农田数据在建库时需对基本农田图斑进行编号,编号规则为图斑自上而下、从左到右排序,在此基础上的编排顺序号为8位,不够8位的向前补零。目前对图斑多边形的编号包括两种方法:①按质心点来排序,但易出现编号顺序与多边形要素实际位置不相符的情况;②按每个图斑的最小外包矩形左上角的坐标来排序,该方法基本符合要求。本文运用FME实现图斑多边形的编号,首先生成每个图斑的最小外包矩形,并获得最小外包矩形的坐标;然后根据图斑自上而下、从左到右排序编号的要求,对最小外包矩形左上角的坐标进行排序,先对Y坐标进行降序排序,以保证其从上到下的顺序,再对X坐标进行升序排序,保证其从左到右的顺序,从而实现对图斑多边形要素的规则编号[8]。其具体步骤为:利用AttributeRemover函数删除图斑不必要的属性字段;利用BoundsExtractor函数获得每个图斑外接矩形的坐标数据;利用Sorter函数对ymax、xmin进行排序,先按ymax降序排列,再按xmin升序排列,将得到图斑要素的FID按要求进行排序;利用Counter函数进行编号,编号从1开始,并将排序编号值赋值给多边形属性表中一个新的属性字段TBBH,由于地类编号为8位,需使用StringFormatter函数,将排序完成的编号转换成8位,其中不足8位的向前补零。2.2图斑椭球面积的计算《第二次全国土地调查技术规程》和《土地利用规划》要求图斑面积采用1980西安坐标系的椭球面积计算公式,并将计算结果存放到字段名称为图斑面积的属性字段中(字段代码为TBMJ,小数位数为2位)。首先运用CoordinateSystemSetter函数对图斑要素层进行1980西安坐标系的设定,再利用EllipsoidAreaCalculator函数计算椭球面积,然后运用AttributeRenamer函数将属性字段重新命名为TBMJ,并设定所计算图斑椭球面积的小数位数为2。3线状地物面积计算1)提取位于图斑内部、图斑内边界线以及图斑外边界线的线状地物。在计算线状地物面积时,首先需判定线状地物是位于图斑的边界上还是图斑内部,以确定线状地物扣除比例;当线状地物跨越图斑边界时,需在与图斑边界的交点处断开,重新计算线状地物长度,获得各新的线状地物面积。为确定线状地物扣除比例,需对图斑面状要素层进行处理,在图斑编号的基础上,运用GeometryCoercer函数获得图斑的线性边界线,再利用Buffer函数对线性边界线进行缓冲分析,得到缓冲多边形,考虑到数据处理精度以及生成缓冲多边形与线状地物叠加时断开的精度要求,将缓冲多边形的缓冲距离设定为0.00001m(图1、2)。图1图斑多边形要素层图2图斑边界线所生成的缓冲多边形利用LineOnAreaOverlayer函数将线状地物要素层xzdw(图3)与缓冲多边形进行叠加,不仅能判定线状地物是否位于图斑边界线上,而且能断开与图斑边界相交处的线状地物;再利用LengthCalculator函数重新计算线状地物的长度,并通过Tester函数判定叠加次数变量_overlaps,若_overlaps=0,表明线状地物位于图斑内(图4),若_overlaps0,则说明线状地物位于图斑边界线上(图5)。对于位于图斑边界线上的线状地物,还需将其分为位于图斑内边界线上与位于图斑外边界线上的线状地物,以便准确核算扣除面积。运用Dissolver函数将整胡明星等:基于FME的图斑净面积计算方法地理空间信息·94·第16卷第7期个图斑多边形合成一个多边形,使用GeometryCoercer函数获得图斑外边界线,再运用Buffer函数对图斑外边界线进行缓冲分析(图6),得到缓冲多边形,将缓冲多边形的距离设定为0.00001m。图3线状地物图4位于图斑内的线状地物图5位于图斑边界上的线状地物图6图斑外边界线缓冲多边形利用LineOnAreaOverlayer函数将位于图斑边界线上的线状地物要素层(图7)与Buffer函数生成的缓冲多边形进行叠加,判定线状地物是否位于图斑外边界线上,再通过Tester函数判定叠加次数变量_overlaps,若_overlaps=0,表明线状地物位于图斑内边界线上(图7),若_overlaps0,则说明线状地物位于图斑外边界线上(图8)。经过上述处理,即可确定位于图斑内的线状地物扣除比例。2)计算位于图斑内的线状地物面积。首先利用AttributeManager函数计算经过交点处断开的线状地物面积(扣除比例为1);再利用LineOnAreaOverlayer函数将线状地物与图斑进行线面叠加,运用ListSummer函数统计每个图斑中所有线状地物的总面积,运用AttributeKeeper函数删除无关的属性,仅保留图斑编号和每个图斑内线状地物的总面积。图7位于图斑内边界线上的线状地物图8位于图斑外边界线上的线状地物3)计算位于图斑边界线上的线状地物面积。利用Counter函数对位于图斑边界线上的线状地物进行编号,AttributeKeeper函数仅保留线状地物宽度字段KD以及线状地物编号Line_ID,Bufferer函数以0.001m的距离生成线状地物的缓冲多边形。利用AreaOnAreaOverlayer函数叠加缓冲多边形与图斑多边形,利用Tester函数判断两个多边形相交的部分,利用AttributeManager函数计算相交于图斑的线状地物的长度及其面积(扣除比例为0.5),StatisticsCalculator函数以图斑编号统计各图斑边界线上的线状地物总面积,并根据图斑编号通过FeatureMerger函数将各图斑边界线上的线状地物总面积与图斑多边形要素进行链接,成为图斑要素的一个新的属性。4位于图斑内的零星地物面积计算计算位于图斑内的零星地物面积时,首先利用AttributeKeeper函数消除无关属性,仅保留零星地物的面积属性字段MJ,再利用PointOnAreaOverlayer函数将零星地物的点状要素层与图斑多边形要素层进行叠加,然后利用ListSummer函数统计每个图斑中所有零星地物的总面积,最后利用AttributeKeeper函数删除无关属性,仅保留图斑编号以及每个图斑内零星地物的总面积。·95·第16卷第7期5田坎面积和图斑净面积的计算根据图斑编号通过FeatureMerger函数将每个图斑内零星地物的总面积属性字段、位于图斑边界线上的线状地物总面积属性字段、位于图斑内的线状地物总面积属性字段进行链接,在计算各图斑面积的基础上,运用AttributeManager函数计算田坎面积和图斑净面积,从而获得每个图斑多边形的净面积。6结 语本文在分析图斑净面积计算公式的基础上,利用FME的相关函数,无需借助专门建库软件和编程方法实现了图斑净面积的计算,且操作简单、易于实现,计算过程流程化,便于理解和应用推广;同时能根据不同的实际情况,对整个流程模板进行修改,具有较强的适应性,能很好地解决图斑净面积计算的实际问题。参考文献[1]李建松,洪亮,史晓明,等.对地理国情监测若干问题的认识[J].地理空间信息,2013,11(5):1-3[2]王昀昀,朱勤东,黎飞明.一种计算图斑净面积的新方法[J].测绘与空间地理信息,2012,35(7):32-34[3]郭铭成,冯家强.基于ArcGISModelBuilder构建图斑