ArcGIS|一文彻底搞懂GIS图斑编号

news2024/12/29 1:46:22

实际工作中,经常会有对各类图斑进行编号的需求。数据中图斑数比较少时,我们可以手动进行编号,但数据量较大时就必须得想办法自动实现图斑编号。今天,将分享几种常见的图斑自动编号方式,主要包括:图斑顺序编号、按字段属性分类编号、按图斑四至位置编号、分级编号、指定位数编号、加前缀编号等多种编号方法。

由于将要介绍的方法大多数都用到ArcGIS属性表中的【字段计算器】,因此先对【字段计算器】做一简单介绍。

一、字段计算器介绍

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

打开【字段计算器】后页面如下图所示:

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

二、图斑编号

1.按图斑顺序编号

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

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

      接下来,我们通过编写简易代码的方式来实现编号。同样打开字段计算器,切换到Python语言,显示代码块,在里面编写编号函数,然后在下面进行函数调用,同样可以实现上面的效果。

完整编号函数代码如下,在字段计算器代码块里面输入时要注意空格,否则容易报错。温馨提示:可以通过点击【保存】按钮将当前函数保存成.cal的函数文件,下次使用时点击【加载】按钮便可直接调用。

 1 rec=0
 2 def 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代码:

UniqueDict = {}
def isDuplicateIndex(inValue):
    UniqueDict.setdefault(inValue,0)
    UniqueDict[inValue] += 1
    return UniqueDict[inValue]

计算后结果如下:

3按图斑四至编号

有时候,为了工作方便我们需要按照图斑四至位置,按照从左到右、从上到下的顺序给图斑进行编号。按照四至位置编号,首先需要按照上述排序方式对图斑进行重新排序,然后依次编号即可。

首先,需要给大家简单介绍一下几个字段计算器中常用的Python语法:

!shape.area!:图斑要素面积;
!shape.length!:图斑要素周长。
!shape.extent.Xmin!:图斑要素最小外包矩形的左上角X坐标;
!shape.extent.XMax!:图斑要素最小外包矩形的右下角X坐标;
!shape.extent.Ymax!:图斑要素最小外包矩形的左上角Y坐标;
!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,以此类推。

完整的函数代码如下:

def bianhao(value):
  bh = ""
  if value <= 2000:
    bh = 1
  elif 2000 < value <= 3000:
    bh = 2
  elif 3000 < value <= 4000:
    bh = 3
  elif 4000 < value <= 5000:
    bh = 4
  else:
    bh = 5
  return str(bh).zfill(3)

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

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

以上。如有问题,欢迎关注我的G*Z*H:爬虫与地理信息。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/437360.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Mysql 触发器(复习)

今天考虑一个删除记录回收站的时候&#xff0c;突然想到了触发器这个东西&#xff0c;基本上之前也很少使用。废话不不多说&#xff0c;先看它的解释&#xff1a; 在MySQL中&#xff0c;触发器&#xff08;Trigger&#xff09;是一种特殊的存储过程&#xff0c;它会在指定的事…

[java/初学者]java常用API(2)——字符串

前言 所谓的字符串其实就是一串连续的字符&#xff0c;它是由许多单个字符连接而成的。如多个英文字母所组成的一个英文单词。字符串中可以包含任意字符&#xff0c;这些字符必须包含在一对双引号之内&#xff0c;例如“Dufeng”。 而与字符串相关的类都放在java.lang包中&…

Nuitka打包PyQt项目快速上手

之前用pyinstaller打包python程序&#xff0c;听说Nuitka比较快&#xff0c;用它打包PyQt的程序练练手。 Nuitka 问了问chatGPT&#xff0c;总结几点&#xff1a;将python编译成C/C&#xff0c;提高速率、跨平台、编译后程序直接运行&#xff08;不需要python解释器&#xff0…

【云原生】Kubernetes集群升级

【云原生】Kubernetes集群升级指南 前言一、集群升级过程辅助命令二、升级master节点2.1、升级kubeadm。2.2、验证升级计划2.3、master节点升级 三、升级node节点总结 前言 本文演示kubernetes集群从v1.24.1升级到v1.25.5。 相关文档。 一、集群升级过程辅助命令 &#xff0…

linux系统中MongoDB数据库安装及分片集群搭建

史上最全的mongodb分片集群搭建&#xff0c;从介绍安装到集群搭建授权&#xff0c;你再也找不到比他更加详细的资料了&#xff0c;未经允许禁止转载&#xff01;&#xff01; 一、简介 MongoDB是一个便于开发和扩展设计的文档数据库&#xff0c;属于NoSQL数据库的一种。Mongo…

计算机笔试/面试常见逻辑题/智力题汇总

说明&#xff1a;按种类汇总&#xff0c;难度不分先后&#xff0c;做了分级罗列&#xff0c;方便后续扩充&#xff0c;大家有比较有意思的题目可以在讨论区讨论。 下面有的题题解相对复杂的直接参考了网上的一些解答&#xff0c;而有的题解我认为并不好的也做了补充&#xff0c…

2023年值得关注的3个品牌趋势,帮你弯道超车

2023年&#xff0c;大环境开放&#xff0c;压抑三年的消费蓄势待发&#xff0c;品牌如何唤醒消费者的、热情成了重中之重的大事。 春风和煦&#xff0c;万物生长。又到了各类品牌、各位营销人踌躇满志、斗志昂扬的时候了&#xff0c;浅析一下2023品牌宣传趋势&#xff0c;抓住…

OpenCV 图像处理学习手册:1~5

原文&#xff1a;Learning Image Processing with OpenCV 协议&#xff1a;CC BY-NC-SA 4.0 译者&#xff1a;飞龙 本文来自【ApacheCN 计算机视觉 译文集】&#xff0c;采用译后编辑&#xff08;MTPE&#xff09;流程来尽可能提升效率。 当别人说你没有底线的时候&#xff0c;…

Redis删除键命令: 入门用del,老手用unlink,有何区别?

在Redis中&#xff0c;删除键是一项常见操作。Redis提供了两种删除键的方式&#xff1a;del和unlink。这两种方式看似类似&#xff0c;但实际上它们之间存在着不同之处。在本文中&#xff0c;我们将深入探讨这两种删除键的区别以及它们在实际应用中的使用。 一、del命令 del…

【OpenCV技能树】——二值图像处理

前言&#xff1a; &#x1f60a;&#x1f60a;&#x1f60a;欢迎来到本博客&#x1f60a;&#x1f60a;&#x1f60a; 目前正在进行 OpenCV技能树的学习&#xff0c;OpenCV是学习图像处理理论知识比较好的一个途径&#xff0c;至少比看书本来得实在。本专栏文章主要记录学习Op…

SDUT操作系统课程(CATS)专题二+专题四(参考总结)

专题二+进程调度算法 RR q=1(含做题代码) 总结:到达时间一到对应进程进入,执行队首进程一次,对应的服务时间划一记号(推荐用正字),队首进程未执行到完成的话重新进入队尾,队首进程执行到完成的话出队,下一秒继续执行队首进程,当5个进程全部入队之后只要执行后两步操…

STM32-互补输出带死区和刹车断路笔记

互补输出带死区控制 比如说&#xff0c;高级控制定时器&#xff08;TIM1 和 TIM8&#xff09;可以输出两路互补信号&#xff0c;并管理输出的关断与接通瞬间。这段时间通常称为死区&#xff0c;由于硬件设备的延迟和一些设备转换的用时&#xff0c;这时候进行操作可能会导致比…

如何把Spring Boot的Jar包做成exe?生成自己的程序,超详细教程奉上

近期做了一个前后端合并的spring boot项目&#xff0c;但是要求达成exe文件&#xff0c;提供给不懂电脑的小白安装使用&#xff0c;就去研究了半天&#xff0c;踩了很多坑&#xff0c;写这篇文章&#xff0c;是想看到这篇文章的人&#xff0c;按照我的步骤走&#xff0c;能少踩…

神马转债,海顺转债,柳工转2,能辉转债上市价格预测

神马转债 基本信息 转债名称&#xff1a;神马转债&#xff0c;评级&#xff1a;AAA&#xff0c;发行规模&#xff1a;30.0亿元。 正股名称&#xff1a;神马股份&#xff0c;今日收盘价&#xff1a;7.83元&#xff0c;转股价格&#xff1a;8.38元。 当前转股价值 转债面值 / 转…

【cpolar 内网穿透】Openwrt 软路由实现内网穿透

cpolar 是一种安全的内网穿透云服务&#xff0c;它将内网下的本地服务器通过安全隧道暴露至公网。使得公网用户可以正常访问内网服务。 文章目录 前言一、上传 cpolar 安装包二、配置cpolar环境变量三、安装并配置 cpolar 服务3.1 安装 cpolar3.2 启动 cpolar3.3 进行其他配置 …

RabbitMQ (HelloWord 消息应答 持久化 不公平分发 预取值)

文章目录 HelloWord工作队列工作线程代码启动两个工作线程工作队列&#xff08;生产者代码&#xff09;工作队列&#xff08;结果成功&#xff09; 消息应答自动应答手动消息应答multiple的解释消息自动重新入队手动应答代码消息手动应答&#xff08;生产者&#xff09;消息手动…

网络编程之TCP

hi,大家好,今天为大家带来TCP协议的相关知识 这里写目录标题 认识TCP的相关方法实现TCP版本的回显服务器实现多线程版本的TCP回显服务器实现线程池版本的TCP回显服务器 认识TCP方法 认识TCP的相关方法 实现TCP版本的回显服务器 实现多线程版本的TCP回显服务器 实现线程池版…

尚硅谷大数据技术Hadoop教程-笔记06【Hadoop-生产调优手册】

视频地址&#xff1a;尚硅谷大数据Hadoop教程&#xff08;Hadoop 3.x安装搭建到集群调优&#xff09; 尚硅谷大数据技术Hadoop教程-笔记01【大数据概论】尚硅谷大数据技术Hadoop教程-笔记02【Hadoop-入门】尚硅谷大数据技术Hadoop教程-笔记03【Hadoop-HDFS】尚硅谷大数据技术Ha…

轻松管理和保障容器应用程序:Docker Swarm安全之道

✅创作者&#xff1a;陈书予 &#x1f389;个人主页&#xff1a;陈书予的个人主页 &#x1f341;陈书予的个人社区&#xff0c;欢迎你的加入: 陈书予的社区 文章目录 一、 介绍Docker Swarm 安全1. 什么是Docker Swarm2. 为什么要使用Docker Swarm3. Docker Swarm的安全特性 二…

sql语法:详解DDL

Mysql版本&#xff1a;8.0.26 可视化客户端&#xff1a;sql yog 目录 一、DDL是什么&#xff1f;二、和数据库相关的DDL2.1 创建数据库2.2 删除数据库2.3 查看所有的数据库&#xff0c;当前用户登录后&#xff0c;可以看到哪些数据库2.4 查看某个数据库的详细定义2.5 修改数据库…