Arcpy基础入门-6、arcpy要素属性操作
空间数据具有三大特征:空间特征、属性特征和时间特征,同样组成一个几何要素的对象也包括空间几何、属性以及时间表达.
这一节我们以一个实例来说一下arcpy对几何对象属性的操作,属性的操作和数据库的操作基本相同,包括查询、添加、更改和删除,添加和删除主要是针对整个属性添加或者删除一个字段,查询和更改是针对一个要素的属性进行操作,我们来先看一个实例:
import time,os
import arcpy
print '程序开始:' + str(time.ctime())
arcpy.env.workspace = r"C:\Users\ljb\Desktop\高程数据"
#输入要素
inFeatures = "TERLK_LN.shp"
#添加一个字段用来标记高程是否可以整除10
fieldName1 = "Mark"
fieldPrecision = 2
fieldAlias = "整除10标记"
#列出所有字段
fieldObjList = arcpy.ListFields(inFeatures)
# Create an empty list that will be populated with field names
fieldNameList = []
# For each field in the object list, add the field name to the
# name list. If the field is required, exclude it, to prevent errors
for field in fieldObjList:
if not field.required:
fieldNameList.append(field.name)
print fieldNameList
if fieldName1 in fieldNameList:
arcpy.DeleteField_management(inFeatures, fieldName1)
print"删除已有字段"
#添加字段函数
arcpy.AddField_management(inFeatures, fieldName1, "LONG", fieldPrecision, "", "",
fieldAlias, "NULLABLE")
field1 = "Elev"
field2 = "Mark"
#更新查询
cursor = arcpy.UpdateCursor(inFeatures)
for row in cursor:
# field2 will be equal to field1 multiplied by 3.0
if((int)(row.getValue(field1))%10 == 0):
row.setValue(field2, 1)
else:
row.setValue(field2, 0)
cursor.updateRow(row)
print '程序结束:' + str(time.ctime())
添加和删除就是简单的功能函数的问题,其中删除的时候要判断一下现有的字段中是否已经存在。最为关键的是查询,arcpy包括了两种方式的查询,一种是arcpy包里自带的三种游标InsertCursor、SearchCursor、UpdateCursor,另外一种是arcpy数据获取模块也就是arcpy.da模块里带的InsertCursor、SearchCursor、UpdateCursor。两种的主要区别:
1、arcpy.insertcursor只能对表进行插入,不能插入相应的几何要素;而arcpy.da.insertCursor即可以插入表,也可以插入几何要素(如点、线、面);
2、arcpy.updateCursor只能通过row.setValue(字段名,值)和row.getValue(字段名)这两个函数对要素的值进行获取和更改,而arcpy.da.updateCursor可以功过下标的方式对要素的值进行获取和更新如row[0],而且可以查询出要素的坐标、M、Z以及面积长度等等;
3、arcpy.da.SearchCursor可以通过属性字段设置的方式查询要素的坐标、M、Z以及面积长度等,还可以通过下标进行值得获取,arcpy.SearchCursor只能进行普通的属性进行查询,不能使用下标;
至于两者的性能区别,我们后面再说,这里先简单的进行一个入门。
转载自:https://blog.csdn.net/sprintwater/article/details/48858427