APP下载

基于林地“一张图”的小班自动编号探究

2021-03-10普绍林

林业调查规划 2021年1期
关键词:一张图纵坐标横坐标

普绍林

(易门县十街乡林业工作站,云南 易门 651100)

ArcGIS软件已广泛应用于林业行业,在绘制好林业调查面层矢量数据后,一般按照从上到下,从左到右进行小班编号。现阶段小班编号的方法较多,也有许多小班编号工具,但对于极少数小班周界横坐标最小值与纵坐标最大值相等时或者纵坐标相等时会产生小班编号错误,目前对小班编号不准确的研究相对较少。本文针对小班编号不准确问题结合小班排序编号实例进行探究,以某县林地一张图(Shapefile格式,以下简称一张图)为数据,以ArcGIS 10.2浮动版为平台,用Python语言编写简单的语句,求算小班周界折点横坐标最小值与纵坐标最大值,利用查找相同的工具制作表比较横坐标最小值、纵坐标最大值是否相等,采用Excel 2010函数countif自动进行小班编号,以VBScript语言编写字符串函数left表达式格式化小班号进行探究。

1 查找相同的记录工具的定义及用法

如果选定的输入字段值与这些记录值相同,则这些记录为相同记录。可对输入数据集中多个字段的值进行比较。如果指定了多个字段,则记录将首先按第一个字段中的值进行匹配,然后按第二个字段的值进行匹配,依此类推。

如果在输出表中仅需要重复的记录,则选中仅输出重复记录参数。如果未选中此参数(默认),则输出的记录数与输入数据集的记录数相同。

输出表含有2个字段:IN_FID 和 FEAT_SEQ。注意输出表只能保存在地理数据库中。

IN_FID 字段可用于将输出表的记录连接到输入数据集。

相同的记录具有相同的 FEAT_SEQ 值,而不相同的记录具有顺序值。FEAT_SEQ 值与输入记录 ID 无关。

2 Excel 2010函数countif的定义及用法

countif(要计数的单元格范围,计算条件):对区域中满足某个指定条件的单元格进行计数。计算条件,其形式可以是数字、条件或文本。

用图层属性表Excel进行小班编号时,用Excel函数countif可实现按林班分组自动编小班号,编完一个林班再编另一个林班。在编号前按林班号升序、y降序、x升序、顺序值升序等排序。小班自动编号时在编号(小班号)所在列第二单元格输入公式:“=countif (c$2:c2,c2)”。输入引号中的内容,回车。双击或下拉复制公式,统计第几次重复次数,即为编号(小班号)自动编号的值。式中c$2为林班号所在列第2单元格,相对行引用,c2,c2为林班号所在列第2单元格。

华觉明:在国内,有一种将工艺美术代替传统工艺的倾向。其实,工艺美术只是传统工艺的一部分,在传统工艺的十五个部类中,有八类是工艺美术。在陶瓷行业中,生产得更多的是日用品,土布生产出来在日常生活中使用,这些都不是艺术品。一直以来,由工艺美术行业代表中国参加国际手工艺理事会,这种情况应当有所改变。工艺美术行业制作的是带有艺术性的产品,但不是手工艺产品的全部。

3 小班编号原理

面层小班按从上到下、从左到右编号,可按面层小班周界(折点)横坐标最小值及纵坐标最大值排序编号。在Arcmap字段计算器窗口中用Python语言分别输入x=“!Shape.extent.xmin!”,y=“!Shape.extent.ymax!”语句(引号中内容),分别求算小班周界折点的横坐标最小值(x)和纵坐标最大值(y),再用查找相同的工具制作表查看表中是否存在横坐标最小值与纵坐标最大值相等的情况。存在3种情况:(1)横坐标最小值与纵坐标最大值不相等;(2)相邻小班横坐标最小值与纵坐标最大值相等;(3)不相邻小班横坐标最小值与纵坐标最大值相等。

横坐标最小值与纵坐标最大值相等的相邻小班是用同一个折点求算的横坐标最小值、纵坐标最大值,横坐标最小值与纵坐标最大值相等的不相邻小班不是用同一个折点求算的。如果表中存在横坐标最小值与纵坐标最大值相等的情况,排序时按横坐标最小值、纵坐标最大值等排序,小班编号时相邻几个小班可能不会严格按照从左到右的顺序编号。相邻小班横坐标最小值与纵坐标最大值相等时,可将图层与表连接(连接字段选择FID与IN_FID),在横坐标最小值与纵坐标最大值相等的相邻小班属性表顺序值字段中输入从左到右顺序值,如1、2、3等,排序时用横坐标最小值、纵坐标最大值、顺序值字段等参与排序,再编小班号,可以解决极少数小班号编号未严格按照从左到右、从上到下编号的问题。不相邻小班横坐标最小值与纵坐标最大值相等时和不存在横坐标最小值与纵坐标最大值相等时,不需要将图层与表连接,不需要在顺序值字段输入顺序值。

小班编号可采用导出图层属性表,将图层属性表排序后,用Excel函数countif将图层属性表Excel按林班自动分组编小班号,编完一个林班再编另一个林班,再将编好小班号的图层属性表Excel用FID与图层(FID字段)连接,用这种方式编小班号字段类型为长整型,小班号如“1”,“10”,“100”等,可用VBScript 语言“字段计算器”中字符串函数left格式化小班号,如“00001”,“00010”,“00100”等。由于横坐标最小值与纵坐标最大值相等的情况极少,也可以用横坐标最小值、纵坐标最大值参与排序,在编好小班号后,用查找相同的工具制作表,打开表查看是否存在横坐标最小值与纵坐标最大值相等的情况,如果存在横坐标最小值与纵坐标最大值相等的情况(表中IN_FID与图层中FID值相等),打开图层属性表,很快可以找到横坐标最小值与纵坐标最大值相等的相邻小班,可标注好小班号后再手动修改小班号。

4 操作步骤

1)新建字段

打开Arcmap,加载一张图,添加x(双精度型,默认)字段,y(双精度型,默认)字段,顺序值(长整型,默认)字段,编号(长整型,默认)字段,原已有小班号(字符串)字段。

2)计算横坐标最小值、纵坐标最大值

打开图层属性表,右键单击x字段,打开字段计算器窗口,单击选择字段计算器,勾选Python,勾选整型,英文状态输入!Shape.extent.xmin!,确定,计算小班周界横坐标最小值(图1)。

同理,右键单击y字段,输入!Shape.extent.ymax!,计算小班周界纵坐标最大值。

3)用查找相同的工具制作表查看横坐标最小值、纵坐标最大值是否相等

在数据管理工具常规中打开查找相同的工具,输入数据集选择一张图,输出数据集保存在地理数据库中,选择x、y字段,选择仅输出重复记录(图2)。

在内容列表中右键单击查找相同的工具生成的表,选择打开,查看是否存在横坐标最小值与纵坐标最大值相等的情况(图3,图4)。

4)一张图与表连接,顺序值字段赋值

相邻小班横坐标最小值与纵坐标最大值相等时,用一张图(FID字段)与用查找相同的工具生成的表(IN_FID字段)连接,再导出图层。在导出的一张图横坐标最小值与纵坐标最大值相等的相邻小班属性表顺序值字段中输入顺序值,在横坐标最小值与纵坐标最大值相等的不相邻小班属性表顺序值字段中不输入顺序值。

图1 计算小班周界横坐标最小值界面

图2 查找相同的工具制作表界面

图3 横坐标最小值与纵坐标最大值不相等界面

图4 横坐标最小值与纵坐标最大值相等界面

5)在一张图属性表Excel表中用Excel 函数countif自动进行小班编号。

导出一张图属性表Excel,先排序,再用Excel 函数countif自动进行小班编号。

6)一张图与一张图属性表Excel连接

用导出的一张图(FID字段)与一张图属性表Excel(FID字段)连接,字段计器,林地一张图.编号= [林地一张图_TableToExcel$.编号]。

7)格式化小班号

本操作步骤中编号格式为“1”,“10”,“100”等,而实际林业调查小班号为文本型,如果小班号的固定位数是5位,那么小班号应为“00001”,“00010”,“00100”等。序号前面补的“0”位数是变化的。可用VBScript语言 “字段计算器”中字符串函数left实现,即可用字段计算器格式化小班号。其表达式为小班号=left("00000",5-len([编号]))& ([编号]),式中编号(长整型),小班号(字符串)(图5)。

8)手动修改小班号错误

由于小班号错误的情况极少,可手动修改小班号错误。可用横坐标最小值、纵坐标最大值参与排序编小班号。编好小班号后,标注小班号,用查找相同的工具制作表查看是否存在横坐标最小值与纵坐标最大值相等,如果存在相等,横坐标最小值与纵坐标最大值相等的相邻小班编号可能会出现错误,根据表IN_FID值和图层FID值在图层属性表中选中,根据小班号标注判断小班编号是否错误,再手动修改编号错误的小班号。

5 结论

用ArcGIS10.2 Python简单的语句求算面层小班周界横坐标最小值、纵坐标最大值,在查找相同的工具制作表中,图层与表连接,在横坐标最小值与纵坐标最大值相等的相邻小班顺序值字段中输入从左到右顺序值用于排序,导出图层属性表,用Excel函数countif自动进行小班编号,图层与Excel表连接,用VBScript字符串函数left表达式格式化小班号,对横坐标最小值与纵坐标最大值相等出现错误的小班编号,手动修改小班号错误。其操作简单,容易理解,实用,可解决极少数小班号编号不准确的问题,使小班自动编号准确,符合林业调查规划小班编号规则,在实际工作中是实用的办法。

图5 格式化小班号界面

6 讨论

1)在Python窗口中输入语法时,要注意空格缩进及字母大小写等语法格式。

2)在小班数量超过7万个时,用Excel编小班号容易造成Excel卡死。

3)要实现更快更便利操作,需进一步对Python软件进行研讨。

猜你喜欢

一张图纵坐标横坐标
更正
勘 误
不可轻用的位似形坐标规律
以一次函数图象为载体的规律探究题
平面直角坐标系中的特殊点
例谈二次函数的顶点横坐标x=-b/2a的简单应用
“平面直角坐标系”解题秘籍
浅议“林地一张图”在森林资源可持续经营中的利用
辽宁建成警务指挥“一张图”
西咸新区国土资源“一张图”平台建设初探