ArcGIS属性表操作

目录

案例一:arcgis属性表某个字段自动编号。例如:从1开始往后自动编号。

案例二:对属性表中某一字段自动编号

案例三:arcmap或者arcgispro在某字段中生成随机数

案例四:查出省级行政区划名称(Chinese_Ch)为山开头,面积(Shape_Area)大于8000000的记录。

案例五:查询属性表相同项

案例六:查询属性表中要素记录的长度

案例七:对属性表中某一字段进行分段


本篇博客将平时对arcgis属性表的相关操作记录下来,防止忘记。此外,在技术摸索中参考了一些gis大牛的博客和技术分享,我在博客结尾也粘贴了他们的博客地址在此表示感谢。

案例一:arcgis属性表某个字段自动编号。例如:从1开始往后自动编号。

将下图中数据类型为文本型的typeid字段进行自动编号,数据记录从1开始往后递增。

在该字段上右键,进入字段计算器,勾选“Python”

在“预逻辑代码块”区域粘贴以下代码;

rec=-1
def autoIncrement():
 global rec
 pStart = 1 #起始值为1,可修改
 pInterval = 1 #间隔值为1,可修改
 if (rec ==-1): 
  rec = pStart 
 else: 
  rec = rec + pInterval 
 return rec

上述代码含义:首先初始化rec为-1;接着定义一个autoIncrement方法,在这个方法里定义了一个局部变量rec,初始化pStart为1,它也是起始值,如果想typeid起始值为其它值可以修改pStart的值即可,pInterrval是间隔值,即依次递增的数字之间的间隔是1,如果想依次递增的数字之间的间隔是2或者3...等,可以修改pInterrval的值;再接着就是一个if()else语句,最后将rec进行返回。
然后将autoIncrement()方法给typeid,最后点击“确定”运行。

注意将autoIncrement()方法给typeid时,autoIncrement()方法前不能有空格,否则会报错!!!

补充:

上述的案例是基于FID进行自动编号,如何根据其它字段进行自动编号呢?

思路:使用sort工具,基于某个字段进行编号,生成新的输出数据,然后基于新的输出数据使用案例1中的python代码进行自动编号。

参考资料

http://www.cnblogs.com/liweis/p/4153333.html       //使用Python给要素添加序号

案例二:对属性表中某一字段自动编号

例如:属性表中的“县级”行政单位进行自动编号,存在县名称重复的情况,例如:A县有多次重复,那就按A0001、A0002、A0003自动编号,每个县都从0001开始编号。

python代码如下:

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

字段中写:

isDuplicateIndex( !NAME! ).zfill(4)

 

案例三:arcmap或者arcgispro在某字段中生成随机数

例如:对整型字段随机生成8-12范围内的数字

如果是在arcmap中操作的话,可以使用下述脚本

参考资料:https://desktop.arcgis.com/zh-cn/arcmap/10.3/tools/data-management-toolbox/calculate-field.htm

def getnums():
    return arcgis.rand('Integer 8 12') 

由于

https://pro.arcgis.com/zh-cn/pro-app/tool-reference/modelbuilder-toolbox/calculate-value.htm

此时,如果要在arcgispro操作的话,可以考虑使用下述脚本

import random
def getnums():
    return random.randint(8, 12)

案例四:查出省级行政区划名称(Chinese_Ch)为开头,面积(Shape_Area)大于8000000的记录。

查询文本框输入:
"Chinese_Ch" LIKE '山%' AND "Shape_Area" >8000000 

一般查询过程是在字段名称选择区中双击字段名、再选运算符,建立查询条件,并用Like、
And、Or、Not将几个条件组合起来。在设置字段的查询条件时,可在取值区中用鼠标选取,也可直接键入属性值。
字符型字段还可使用通配符,如用“%”替代多个字符,用“_”替代一个字符。例如:
"NAME"LIKE'张%'表示查询NAME字段,第一个字符为"张",不管后续有几个字符。
"LANDUSE"LIKE'F_'表示查询LANDUSE字段,第一个字符"F",第二个字符任意,但后续只能有一个。
按属性选择记录会出现语法错误,软件提示不能完成操作,引号、括号不匹配是常见差错,以下是注意事项:
(1)字符型操作不能用等号代替LIKE;
(2)字段名自身带双引号,如"LANDUSE",字符型取值用单引号,如'C',数字型取值不带引号;
(3)单引号、双引号必须都用英文字符,不能用中英字符。
(4)多用鼠标,少用键盘,可避免语法差错;

案例五:查询属性表相同项

首先数据要求是存放在个人地理数据库(mdb)中,如果不是,需要先导入进去。这是因为个人地理数据库对子查询支持更好。
如果这个字段名叫name,表名叫area,SQL可类似如下写:
[name] in (select [name] from area group by [name] having count([name]) > 1)


参考资料:

http://zhihu.esrichina.com.cn/question/6606

文件地理数据库对子查询提供了有限的支持,而个人地理数据库和 ArcSDE 地理数据库则提供完全支持,详情见链接介绍:http://resources.arcgis.com/zh-cn/help/main/10.2/index.html#/na/00s500000033000000/

案例六:查询属性表中要素记录的长度

例如:查询属性表中要素记录长度大于6的要素

CHAR_LENGTH(string_exp)
例如:查询字段名为‘名称’的长度大于6的要素
CHAR_LENGTH( 名称 ) >=6


链接:http://resources.arcgis.com/zh-cn/help/main/10.2/index.html#/na/00s500000033000000/

案例七:对属性表中某一字段进行分段

情景一:如何把一个shp文件批量均分为n个?比如:一个shp文件属性表共有10000个行,我想分为50组,200为1组,请问除了按属性选择,是否有批量直接分的方法?

(1)字段计算器  int([字段]/200+1) 
(2)split-by-attributes,具体见链接:http://pro.arcgis.com/zh-cn/pro-app/tool-reference/analysis/split-by-attributes.htm

参考资料:http://zhihu.esrichina.com.cn/question/34781

情景二:对某一字段进行分段求和,现有一个矢量图层,其中ACRES字段记录了每一个面要素的面积,如何分段对该字段求和,如该字段数值在以下范围时0-50,50-300,300-1000,>4000,其面积分别是多少?

参考资料:http://zhihu.esrichina.com.cn/article/2785

 

更多gis方面的内容,请关注微信公众号:gislaozhang

 

### 回答1ArcGIS是一款由Esri开发的地理信息系统软件。在ArcGIS中,为了方便标识和管理各种地理数据、地图和图层等,可以使用顺序编号来对其进行命名。这样可以确保每个项目的命名是独一无二的,方便用户进行查找和识别。 ArcGIS顺序编号从00001开始,这是为了符合常见的编号规范,使得编号更加有序且易于辨识。从00001开始的顺序编号可以应用于各种元素,例如地图文档、要素类、图层、图像等。 通过顺序编号,用户可以快速定位和引用特定的地理数据或项目。例如,如果我需要查找编号为00024的地图文档,我只需要输入该编号即可迅速定位和打开相关文档。 在ArcGIS中,使用顺序编号可以提高工作效率,减少命名混乱和重复。同时,也可以更好地组织和管理大量的地理数据和项目。 总而言之,ArcGIS顺序编号00001开始是为了方便地理数据的命名和管理,使得每个项目都有一个独特的标识。这有助于提高工作效率,方便用户进行数据的查找和识别。 ### 回答2: ArcGIS是一款由美国Esri公司开发的地理信息系统软件。它主要用于地图制作、空间分析和数据管理等方面。在ArcGIS中,顺序编号是一种常见的数据属性,用于标识和区分不同的要素或对象。 顺序编号从00001开始,表示该编号是一个五位数,范围从00001到99999。这种编号方法可以确保每个要素都有唯一的标识,便于在地图制作和数据管理中进行识别和查询。 顺序编号ArcGIS中具有广泛的应用。例如,在地图制作中,可以使用顺序编号来标记不同的地物,如道路、建筑物或地名。这样可以更方便地查找和引用地图上的要素信息。 在空间分析中,顺序编号也可以用来标识不同的空间单元,如网格或班块,便于进行统计和分析。通过顺序编号,可以快速找出相邻或相似的要素,有助于研究地理现象的分布和关联关系。 此外,顺序编号还可以用于数据管理。在数据库中,可以将顺序编号作为主键或唯一标识符,确保数据的一致性和完整性。通过顺序编号,可以方便地对数据进行排序、筛选和检索,提高数据管理的效率和准确性。 总之,ArcGIS顺序编号从00001开始是一种常见的数据标识方法,适用于地图制作、空间分析和数据管理等多个领域。它具有唯一性和可识别性的特点,为用户的工作提供了便捷和高效的支持。 ### 回答3: ArcGIS是一种功能强大的地理信息系统软件,被广泛应用于地理空间数据的管理、分析和可视化。该软件提供了一套完整的工具和功能,可用于创建、编辑和分析地理数据,帮助用户更好地理解和解决与地理空间相关的问题。 ArcGIS顺序编号从00001开始,用于标识不同的地理数据或地理特征。这种编号系统可以方便用户进行数据的组织和查找,使得地理数据的管理更加高效和便捷。通过使用编号系统,用户可以快速地找到特定的地理数据并进行相关的空间分析。 以一个例子来说明:假设我们正在进行一项市区道路改建的规划工作,需要对每条道路进行编号以方便标识和管理。我们可以使用ArcGIS,从编号00001开始依次为每条道路进行顺序编号。例如,第一条改建的道路可以被标识为"00001",第二条道路可以是"00002",以此类推。 通过顺序编号,我们可以轻松查找和识别特定的道路,例如根据编号00005可以快速定位第五条改建的道路。此外,我们还可以使用ArcGIS的空间分析功能,对不同的道路进行分析,例如计算道路长度、规划交通路线等。 总之,ArcGIS顺序编号的使用可以帮助用户更好地管理和分析地理数据,提高工作效率和数据的可用性。通过合理利用此功能,我们可以更好地组织和管理地理空间数据,从而更好地理解和应对与地理空间相关的问题。
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值