ArcPy高级开发教程—属性表字段操作

本文介绍了如何利用Python的ArcPy模块对矢量数据属性表进行字段的查询、添加、删除和修改操作。通过示例代码展示了查询字段、添加新字段(如计算面积)、删除字段以及更改字段名称的方法。此外,还提到了对Layer对象进行字段操作的FieldInfo类。这些技巧在GIS数据处理中非常实用。
摘要由CSDN通过智能技术生成

今天,将介绍使用ArcPy对矢量数据的属性表的字段进行增删改查操作。

1. 属性表字段查询

import arcpyfields = arcpy.ListFields(shpPath)

shpPath是shpfile的路径,fields得到的是包含Field对象的列表,Field对象具有字段名称、别名、长度、精度等属性信息,例如,你只想得到属性表中包含的字段名称,那么可以直接获取Field对象的name属性

import arcpyfield_names = [f.name for f in arcpy.ListFields(shpPath)]

2. 添加字段

arcpy.AddField_management(shpPath,"tempID","SHORT")

上面代码给shpfile添加了一个整型的名字叫做tempID的字段。第二个参数是字段名称,第三个参数是字段类型,除了整型,还可以是TEXT, FLOAT, DOUBLE, DATE等。

另外一个比较常见的场景是我们需要添加一个字段area,来自动计算每个要素的面积,比如当前的shpfile是某土地分类,或者是提取的水体、林地、建筑物等面矢量,有两种推荐的做法:

方法一:

# -*- coding: UTF-8 -*-import arcpydef calArea(shpPath):    field_names = [f.name for f in arcpy.ListFields(shpPath)]    if 'area' not in field_names:        arcpy.AddField_management(shpPath, 'area', 'DOUBLE')      arcpy.CalculateField_management(shpPath, 'area', "!shape.geodesicArea@SQUAREMETERS!", 'PYTHON_9.3')

上面的代码做了三件事情,先判断原本的属性表中有没有area这个字段,没用的话就添加,然后使用字段计算的功能自动计算了每个要素的面积。CalculateField_management不仅可以计算面积,还可以计算范围、长度、中心点等信息。另外上面的代码计算的是测地线面积,如果你的shpfile是投影坐标,计算面积使用"!shape.area@SQUAREMETERS!"即可。

方法二:

ArcPy实际上提供了更为方便的直接添加几何属性的操作。

arcpy.AddGeometryAttributes_management(shpPath, ['AREA_GEODESIC'], '', 'SQUARE_METERS', '') //地理坐标arcpy.AddGeometryAttributes_management(input, ['AREA'], '', 'SQUARE_METERS', '') //投影坐标

运行以上代码会直接在原本的shpfile中增加一个计算了要素面积的AREA_GEO字段。同样的,添加几何属性这个函数还可以添加长度、周长、包含的点的数量等。

3. 删除字段

arcpy.DeleteField_management(shpPath, ["area", "tempID"])

上面的代码能够同时删除输入的shpfile中area和tempID两个字段。

4. 更改字段

arcpy.AlterField_management(shpPath, field, new_field)

field是原来的字段名称,new_field是更改的新名字,更改字段这个操作用的少,不推荐使用,容易出错。

扩展:

以上我们是直接对shpfile或者说是features的属性表进行操作,但有时候我们需要处理的对象是Layer,layer对象是arcpy中一个常用的对象,对矢量数据进行查询和分析时经常会用到这个对象,对layer的属性字段操作需要用到FieldInfo类。

FieldInfo属性:

count:field的数量

FieldInfo常用方法:

findFieldByName (field_name):返回field_name的索引getFieldName (index):返回索引index处字段名称removeField (index):删除索引index处字段...

更多信息可以参考ArcPy的官方文档

如果有疑问或者想了解更多相关,欢迎关注公众号 TechGIS

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

辣鸡博主已停更

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值