服务粉丝

我们一直在努力
当前位置:首页 > 财经 >

一文彻底搞懂ArcGIS图斑编号

日期: 来源:GIS前沿收集编辑:我是药菌

实际工作中,经常会有对各类图斑进行编号的需求。数据中图斑数比较少时,我们可以手动进行编号,但数据量较大时就必须得想办法自动实现图斑编号。今天,将分享几种常见的图斑自动编号方式,主要包括:图斑顺序编号、按字段属性分类编号、按图斑四至位置编号、分级编号、指定位数编号、加前缀编号等多种编号方法。
由于将要介绍的方法大多数都用到ArcGIS属性表中的【字段计算器】,因此先对【字段计算器】做一简单介绍。
0

字段计算器介绍

在左侧菜单栏任一要素类或者表上右击【打开属性表】,再找到要计算的字段上右击【字段计算器】,即可打开字段计算器。

打开【字段计算器】后页面如下图所示:
1是选择脚本语言,默认是VB语言,可以改成Python语言;2是要素字段名,双击会在3和4的代码里显示;3是代码框,勾选【显示代码块】就会出现,用于编写多行的简单脚本。4主代码框,用于简单的代码或字段运算。右边是常用函数,双击即可使用,可用于字段属性字符串切片[:]、大小写转换.isupper()、字符串补齐.zfill()等。

1

按图斑顺序编号

最简单的编号就是按图斑顺序依次编号,一种是可以借助现有的编号字段,比如FID进行字段运算获得编号,另外一种便是通过编写简单代码的方式进行编号。先看第一种,我们添加一个BH字段,然后打开字段计算器,切换到Python语言,然后双击FID字段再加1(FID编号从0开始)。

计算完成后,BH字段里面就有了编号。

接下来,我们通过编写简易代码的方式来实现编号。同样打开字段计算器,切换到Python语言,显示代码块,在里面编写编号函数,然后在下面进行函数调用,同样可以实现上面的效果。
完整编号函数代码如下,在字段计算器代码块里面输入时要注意空格,否则容易报错。温馨提示:可以通过点击【保存】按钮将当前函数保存成.cal的函数文件,下次使用时点击【加载】按钮便可直接调用。
 1rec=0
2def autoIncrement():
3  global rec
4  pStart = 1 
5  pInterval = 1 
6  if (rec == 0): 
7    rec = pStart 
8  else: 
9    rec = rec + pInterval
10  return re
这样我们便实现了简单的顺序编号,但有时候我们需要编号数字位数保持一致,例如:0001、0299这样都是四位数。这就需要用到Python字符串函数.zfill(n)。函数功能:返回长度为n的字符串,原字符串右对齐,前面填充0。
下面,我们以生成5位数编号举例。在BH字段名称上右击打开字段计算器,切换到Python语言,先选择并双击BH字段,再选择并双击.zfill()函数,输入函数参数5,就形成!BH!.zfill(5)代码,表示BH字段字符串向左保留为5位。

点击确定,计算完成后生成的结果如下:

同样的,如果需要在编号前面再加其他字母等信息,直接在编号前面添加即可。比如5位编号前面加“SM”,为“SM00001”,代码为:"SM"+ !BH!,要注意为英文双引号。另外,也可以通过修改上面编号函数代码的方式实现。

2

按字段类型编号


有时候,我们在编号时需要按照图层中某一字段属性类型对要素进行编号。比如在卫片图斑中,我们需要按乡镇对图斑进行编号,每个乡镇都从0开始编号。同样可以在字段计算器中采取Python脚本的方式进行实现。我们定义一个isDuplicateIndex(inValue)函数,然后调用即可,同时让编号按3位数对齐。

完整Python代码:

1UniqueDict = {}
2def isDuplicateIndex(inValue):
3    UniqueDict.setdefault(inValue,0)
4    UniqueDict[inValue] += 1
5    return UniqueDict[inValue]
计算后结果如下:

3

按图斑四至编号

有时候,为了工作方便我们需要按照图斑四至位置,按照从左到右、从上到下的顺序给图斑进行编号。按照四至位置编号,首先需要按照上述排序方式对图斑进行重新排序,然后依次编号即可。
首先,需要给大家简单介绍一下几个字段计算器中常用的Python语法:

1!shape.area!:图斑要素面积;
2!shape.length!:图斑要素周长。
3!shape.extent.Xmin!:图斑要素最小外包矩形的左上角X坐标;
4!shape.extent.XMax!:图斑要素最小外包矩形的右下角X坐标;
5!shape.extent.Ymax!:图斑要素最小外包矩形的左上角Y坐标;
6!shape.extent.YMin!:图斑要素最小外包矩形的右下角Y坐标;

具体操作步骤如下:
第一步:给图层添加Xmin和Ymax两个字段。字段添加后,在字段计算器中基于Python语法:!shape.extent.Xmin!和!shape.extent.Ymax!分别计算出Xmin和Ymax坐标。

第二步:在【数据管理】模块下的【常规】工具集中找到【排序】工具进行图斑排序。

排序规则:从上到下排序意思就是沿纵轴从上到下排序,所以排序字段Ymax在前面降序排列,从左到右排序意思就是沿横轴从左到右排序,所以排序字段Xmin在后面升序排列,从而保证数据按从上到下,从左到右的顺序排列。

第三步:排序后会生成一个新的要素图层,给新图层添加编号字段,然后运用上面顺序编号的代码给图斑依次编号就可了。

计算完成后我们要的四至编号就成功实现了,如下图所示:

需要说明的是,这块没有使用质心坐标是因为图斑形状很长或很宽时,会因为质心的位置导致排序位置偏后。为了避免这种情况,采取Xmin和Ymax进行排序。
4

图斑分级别号

实际工作中,有时候需要根据某字段属性值大小划分不同的等级进行编号或赋值,所谓图斑分级编号。比如:按照图斑面积划分不同的等级,相同等级的图斑赋相同的编号或其他属性值。
我们以面积大小为例,采取自定义Python函数的方式演示一下如何进行分级编号。自定义编号函数:按照要素面积大小,将面积小于2000平方米的图斑编号为1,大于2000小于3000平方米的为2,以此类推。

完整的函数代码如下:

 1def bianhao(value):
2  bh = ""
3  if value <= 2000:
4    bh = 1
5  elif 2000 < value <= 3000:
6    bh = 2
7  elif 3000 < value <= 4000:
8    bh = 3
9  elif 4000 < value <= 5000:
10    bh = 4
11  else:
12    bh = 5
13  return str(bh).zfill(3)

函数调用字段为面积字段,计算后结果如下,图斑已经按照面积大小进行了编号。

另外,有种笨办法不用写代码也能实现分级编号。还是以面积为例:首先对面积进行升序或降序排序,然后手动选中面积小于2000平方米的所有图斑,再手动将编号赋值为1,以此类推。当然,数据量大时就不太方便了。
以上。如有问题,请在后台留言。

- END -


ArcGIS Python学习
ArcGIS Pro调用ArcMap的符号库
全球矢量任意下载!路网、建筑、水系...
CC、Pix4D、大疆智图、M3D...国内外常用实景三维建模软件电脑配置推荐
使用ArcPy批量导出PNG格式的图片

相关阅读

  • 基于Vue3 的可视化编辑器Everright-formEditor开源

  • 前言把技术转换成产品的能力,真好。本文由 @刘海峰投稿分享。正文从这开始~~编辑器介绍先来个图,有个初步的认识抱歉,原谅图有点模糊哈github: https://github.com/Liberty-liu/E
  • 一种新的流:为 Java 加入生成器(Generator)特性

  • 前言Aliware这篇文章不是工具推荐,也不是应用案例分享。其主题思想,是介绍一种全新的设计模式。它既拥有抽象的数学美感,仅仅从一个简单接口出发,就能推演出庞大的特性集合,引出
  • 人人都可用chatgpt开发小项目

  • chatgpt4.0,开发一个h5数独游戏。以下是沟通过程,全程菜鸟模式,提问者没有使用任何专业技术术语。**You:**用h5写个数独小游戏* * ***ChatGPT:**创建一个数独小游戏需要使用HTM
  • 一个简单实践理解栈空间转移

  • 本文为看雪论坛优秀文章看雪论坛作者ID:winsunxs1 whatstack pivoiting是一种栈空间转移技术。2 why有时候缓冲区有长度限制,不利于在栈上配置rop gadget(空间不够)!3 how3.1 p
  • CTFHUB-UnsortedBin Attack

  • 本文为看雪论坛优秀文章看雪论坛作者ID:LeaMov一程序分析1、IDA静态分析(1)伪代码分析main()函数:int __cdecl __noreturn main(int argc, const char **argv, const char **env
  • B端改版|一个简单的列表卡片优化分享

  • 今天正好在新一期B端学员群中,遇到一个学员的咨询,关于一个复杂的列表组件应该如何有效优化的问题。趁今天有时间就顺手自己做了一遍优化,在这边把内容和过程记录下来,供大家参

热门文章

  • “复活”半年后 京东拍拍二手杀入公益事业

  • 京东拍拍二手“复活”半年后,杀入公益事业,试图让企业捐的赠品、家庭闲置品变成实实在在的“爱心”。 把“闲置品”变爱心 6月12日,“益心一益·守护梦想每一步”2018年四
  • 美国对华2000亿关税清单,到底影响有多大?

  • 1 今天A股大跌,上证最大跌幅超过2%。直接导火索是美国证实计划对华2000亿美元产品加征25%关税。 听起来,2000亿美元数目巨大,我们来算笔账。 2000亿美元,按现在人民币汇率

最新文章

  • 一文彻底搞懂ArcGIS图斑编号

  • 实际工作中,经常会有对各类图斑进行编号的需求。数据中图斑数比较少时,我们可以手动进行编号,但数据量较大时就必须得想办法自动实现图斑编号。今天,将分享几种常见的图斑自动编
  • iOS 15.4.1 越狱,来自开发者的提醒

  • 说说 iOS 15.4.1 越狱,说说 Dopamine。Dopamine本期主要特点:支持 iOS 15.0 - iOS 15.4.1 系统。支持 A12 及以上全部设备。更新内容一,请勿使用第三方编译 Dopamine昨日,opa334
  • 考注册测绘师?2023注册测绘师零基础三科全程课

  • 今年还不准备考个注册测绘师?如果有打算来先看看自己是否符合今年的报考条件。工作年限(一)取得测绘类专业大学专科学历,从事测绘业务工作满4年。(二)取得测绘类专业大学本科学历,
  • 沉痛悼念国医大师吕仁和教授

  • 中国共产党优秀党员,第三届“国医大师”,中央保健局会诊专家,国务院政府特殊津贴专家,北京中医药大学第一临床医学院(东直门医院)主任医师、博士生导师吕仁和教授,因病医治无效,于20