对于属性表——"查找",很有用处,很多情况下都要查找一些特定XX。这里给大家总结整理一下常用的"查找"。
-
查找属性表重复或者相同项
GIS中专门有一个工具就是频数工具。该工具主要功能就是读取属性表中的某一组字段,并且创建一个包含唯一字段值以及各唯一字段值所出现次数的新表。(特别强调一下输出的表只能放在数据库)
2.查找属性表中长度大于/小于/等于XXX的要素
例如:查询属性表中要素记录长度小于4的要素,语句我们写成CHAR_LENGTH( NAME ) <4。
3.查找属性表某字段里属性带XX的所有要素
例如:查询属性表中名称中所有带有州字的要素,语句我们写成NAME LIKE'%州%'。
也可以加上其他的限制来进行更多的定义查询,例如查询属性表中名称中所有带有**字的要素,而且面积大于或者小于**的,那么语句我们就写成NAME LIKE'%**%'AND "Shape_Area" >**。
4.属性表中图斑自动编号
例如:属性表中的“NAME”行政单位进行自动编号,存在省名称重复的情况,例如:X县有多次重复,那就按X0001、X0002自动编号,每个省名称都从0001开始编号,解析程序为:Python
预逻辑脚本代码:
UniqueDict = {}
def isDuplicateIndex(inValue):
UniqueDict.setdefault(inValue,0)
UniqueDict[inValue] += 1
return str(UniqueDict[inValue])
排序:
!NAME! +isDuplicateIndex( !NAME! ).zfill(4)
5.属性表进行递增编号
(1)基于FID进行无间断递增排序
新建序号字段(文本型)→右击→字段计算器→Python
预逻辑脚本代码:
rec=-1
def autoIncrement():
global rec
pStart = 1 #起始值为1,可修改
pInterval = 1 #间隔值为1,可修改
if (rec ==-1):
rec = pStart
else:
rec = rec + pInterval
return rec
排序:
autoIncrement()
(2)基于FID递增排序
新建序号字段(文本型)→右击→字段计算器→VB脚本→[FID]+1。
6.根据属性表中字段属性值进行分类导出
例如:现有一图层,需要对其面积进行分段求和,0-0.5w、0.5w-1w、1w-5w,其分段面积和分别是多少。
对于数据量较小的数据来说可以通过属性查询,通过表达式:Shape_Area >0 AND ACRES <=1w将该分段范围的要素类全部选择,将选中的要素导出,导出之后右击Shape_Area字段,使用统计功能得出该分段之内的面积总和。
7.属性表快速提取
(1)提取文本类型前几位:字段=Left(某字段,n)
(2)提取文本类型后几位:字段=right(某字段,n)
(3)提取文本类型中间几位:字段=Mid( 某字段,n,n )
8.条件标注
采用的的是arcgis文本格式化标签:"<CLR red = '255' blue=0 green=0 >" + "Text"+ "</CLR>",解析方式为Python
在表达式高级中贴上解析码:def FindLabel ( [NAME] , [Shape_Area] ):
return "<CLR red = '255'>" + [NAME] + "</CLR>"+u"面积:"+"<CLR blue = '255'>" + [Shape_Area] +"</CLR>"+u"㎡"
备注:[NAME], [Shape_Area] 分别为输入字段,u"面积:"和u"㎡"为输入文本,文本必须在前面加u解码。
9.统计工具
很多时候都需要统计大量类型数据,例如面积、坡度等等,还需要分行政区域,GIS有一个工具挺好用,汇总统计数据工具。