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

2024-04-26 23:48

本文主要是介绍ArcPy高级开发教程—属性表字段操作,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

今天,将介绍使用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的官方文档

这篇关于ArcPy高级开发教程—属性表字段操作的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/939000

相关文章

Python中你不知道的gzip高级用法分享

《Python中你不知道的gzip高级用法分享》在当今大数据时代,数据存储和传输成本已成为每个开发者必须考虑的问题,Python内置的gzip模块提供了一种简单高效的解决方案,下面小编就来和大家详细讲... 目录前言:为什么数据压缩如此重要1. gzip 模块基础介绍2. 基本压缩与解压缩操作2.1 压缩文

Python实现对阿里云OSS对象存储的操作详解

《Python实现对阿里云OSS对象存储的操作详解》这篇文章主要为大家详细介绍了Python实现对阿里云OSS对象存储的操作相关知识,包括连接,上传,下载,列举等功能,感兴趣的小伙伴可以了解下... 目录一、直接使用代码二、详细使用1. 环境准备2. 初始化配置3. bucket配置创建4. 文件上传到os

mysql表操作与查询功能详解

《mysql表操作与查询功能详解》本文系统讲解MySQL表操作与查询,涵盖创建、修改、复制表语法,基本查询结构及WHERE、GROUPBY等子句,本文结合实例代码给大家介绍的非常详细,感兴趣的朋友跟随... 目录01.表的操作1.1表操作概览1.2创建表1.3修改表1.4复制表02.基本查询操作2.1 SE

python删除xml中的w:ascii属性的步骤

《python删除xml中的w:ascii属性的步骤》使用xml.etree.ElementTree删除WordXML中w:ascii属性,需注册命名空间并定位rFonts元素,通过del操作删除属... 可以使用python的XML.etree.ElementTree模块通过以下步骤删除XML中的w:as

c++中的set容器介绍及操作大全

《c++中的set容器介绍及操作大全》:本文主要介绍c++中的set容器介绍及操作大全,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录​​一、核心特性​​️ ​​二、基本操作​​​​1. 初始化与赋值​​​​2. 增删查操作​​​​3. 遍历方

MySQL追踪数据库表更新操作来源的全面指南

《MySQL追踪数据库表更新操作来源的全面指南》本文将以一个具体问题为例,如何监测哪个IP来源对数据库表statistics_test进行了UPDATE操作,文内探讨了多种方法,并提供了详细的代码... 目录引言1. 为什么需要监控数据库更新操作2. 方法1:启用数据库审计日志(1)mysql/mariad

springboot如何通过http动态操作xxl-job任务

《springboot如何通过http动态操作xxl-job任务》:本文主要介绍springboot如何通过http动态操作xxl-job任务的问题,具有很好的参考价值,希望对大家有所帮助,如有错... 目录springboot通过http动态操作xxl-job任务一、maven依赖二、配置文件三、xxl-

Java中的for循环高级用法

《Java中的for循环高级用法》本文系统解析Java中传统、增强型for循环、StreamAPI及并行流的实现原理与性能差异,并通过大量代码示例展示实际开发中的最佳实践,感兴趣的朋友一起看看吧... 目录前言一、基础篇:传统for循环1.1 标准语法结构1.2 典型应用场景二、进阶篇:增强型for循环2.

深度解析Spring AOP @Aspect 原理、实战与最佳实践教程

《深度解析SpringAOP@Aspect原理、实战与最佳实践教程》文章系统讲解了SpringAOP核心概念、实现方式及原理,涵盖横切关注点分离、代理机制(JDK/CGLIB)、切入点类型、性能... 目录1. @ASPect 核心概念1.1 AOP 编程范式1.2 @Aspect 关键特性2. 完整代码实

SpringBoot开发中十大常见陷阱深度解析与避坑指南

《SpringBoot开发中十大常见陷阱深度解析与避坑指南》在SpringBoot的开发过程中,即使是经验丰富的开发者也难免会遇到各种棘手的问题,本文将针对SpringBoot开发中十大常见的“坑... 目录引言一、配置总出错?是不是同时用了.properties和.yml?二、换个位置配置就失效?搞清楚加