关于小班从上到下,从左到右自动编号问题
关于这个问题,本人看了不少帖子都是先求算小班中心点(或左上角)X和Y坐标,以Y坐标降序,X坐标升序组合排序后,然后从第一行连续编号。
貌似解决了问题,还赢得了不少喝彩,就是不知实践过没有,真的解决了问题吗?
以Y、X坐标组合排序的原理是,先以Y值排序,如果Y值相同,以X值排序。实际上,小班Y值相等的情况极少,那么这种排序方法实际上就是以Y值排序,X值在其中几乎不起作用。这样的结果在编号工作中没有实际意义。
那么如何解决这个问题呢?首先我们回想一下手工是如何编号的?如何将手工编号原理在数据操作上体现出来?
面对一张小班图,我们手工编号时,心中实际上默认了一行的高度,从1号开始横向编号,到图的右边结束,又从上一行的下边开始从左向右编号(相当于电脑中的换行)。这种编号的原理就是将所有小班按照一定距离分割成多个横带,在横带中从左到右编号,下一横带依此连续编号。
如何将手工编号原理在数据操作上体现出来呢?关键是要首先确定横带的高度,手工编号时这个高度是根据小班分布情况可调的,在ARCGIS中自动编号需要一个固定的高度,这个高度根据小班情况确定,一般取所有小班的平均高度。本人所在工作部门制图时取100米比较合适。
下面进入正题:
1、在ARCMAP中,右键点击小班图层,打开属性表(已有X和Y字段、小班号字段),新建一个字段:带号,数据类型为短整形。右建点击属性表的“带号”字段,点击字段计算器,输入:“int(‘Y’/100)”。即以100米距离将小班分带。
2、将属性表导出(DBF格式),若是EXCEL2003可直接打开编辑,另存为EXCEL文件。或者使用VFP另存为EXCEL文件。
最后说明:实践出真知,本方法本人在实际工作中采用,完全可媲美手工编号。关键之处在于确定分带的高度,可多试几次找出最合适的数值。
貌似解决了问题,还赢得了不少喝彩,就是不知实践过没有,真的解决了问题吗?
以Y、X坐标组合排序的原理是,先以Y值排序,如果Y值相同,以X值排序。实际上,小班Y值相等的情况极少,那么这种排序方法实际上就是以Y值排序,X值在其中几乎不起作用。这样的结果在编号工作中没有实际意义。
那么如何解决这个问题呢?首先我们回想一下手工是如何编号的?如何将手工编号原理在数据操作上体现出来?
面对一张小班图,我们手工编号时,心中实际上默认了一行的高度,从1号开始横向编号,到图的右边结束,又从上一行的下边开始从左向右编号(相当于电脑中的换行)。这种编号的原理就是将所有小班按照一定距离分割成多个横带,在横带中从左到右编号,下一横带依此连续编号。
如何将手工编号原理在数据操作上体现出来呢?关键是要首先确定横带的高度,手工编号时这个高度是根据小班分布情况可调的,在ARCGIS中自动编号需要一个固定的高度,这个高度根据小班情况确定,一般取所有小班的平均高度。本人所在工作部门制图时取100米比较合适。
下面进入正题:
1、在ARCMAP中,右键点击小班图层,打开属性表(已有X和Y字段、小班号字段),新建一个字段:带号,数据类型为短整形。右建点击属性表的“带号”字段,点击字段计算器,输入:“int(‘Y’/100)”。即以100米距离将小班分带。
2、将属性表导出(DBF格式),若是EXCEL2003可直接打开编辑,另存为EXCEL文件。或者使用VFP另存为EXCEL文件。
3、在EXCEL中,以带号(降序)、X(升序)排序。然后在第一个小班填上起始小班号,向下连续填充。保存退出。
4、在ARCMAP中,打开属性表,连接刚才这个EXCEL表,右键点击小班号,在下接菜单中点击字段计算器,用EXCEL表的小班号替换属性表的小班号,选择EXCEL表中的“小班号”双击,点击确定即可。
最后说明:实践出真知,本方法本人在实际工作中采用,完全可媲美手工编号。关键之处在于确定分带的高度,可多试几次找出最合适的数值。