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

相关文章

C#借助Spire.XLS for .NET实现在Excel中添加文档属性

《C#借助Spire.XLSfor.NET实现在Excel中添加文档属性》在日常的数据处理和项目管理中,Excel文档扮演着举足轻重的角色,本文将深入探讨如何在C#中借助强大的第三方库Spire.... 目录为什么需要程序化添加Excel文档属性使用Spire.XLS for .NET库实现文档属性管理Sp

Go异常处理、泛型和文件操作实例代码

《Go异常处理、泛型和文件操作实例代码》Go语言的异常处理机制与传统的面向对象语言(如Java、C#)所使用的try-catch结构有所不同,它采用了自己独特的设计理念和方法,:本文主要介绍Go异... 目录一:异常处理常见的异常处理向上抛中断程序恢复程序二:泛型泛型函数泛型结构体泛型切片泛型 map三:文

JavaWeb项目创建、部署、连接数据库保姆级教程(tomcat)

《JavaWeb项目创建、部署、连接数据库保姆级教程(tomcat)》:本文主要介绍如何在IntelliJIDEA2020.1中创建和部署一个JavaWeb项目,包括创建项目、配置Tomcat服务... 目录简介:一、创建项目二、tomcat部署1、将tomcat解压在一个自己找得到路径2、在idea中添加

Python + Streamlit项目部署方案超详细教程(非Docker版)

《Python+Streamlit项目部署方案超详细教程(非Docker版)》Streamlit是一款强大的Python框架,专为机器学习及数据可视化打造,:本文主要介绍Python+St... 目录一、针对 Alibaba Cloud linux/Centos 系统的完整部署方案1. 服务器基础配置(阿里

Python+wxPython开发一个文件属性比对工具

《Python+wxPython开发一个文件属性比对工具》在日常的文件管理工作中,我们经常会遇到同一个文件存在多个版本,或者需要验证备份文件与源文件是否一致,下面我们就来看看如何使用wxPython模... 目录引言项目背景与需求应用场景核心需求运行结果技术选型程序设计界面布局核心功能模块关键代码解析文件大

MySQL基本表查询操作汇总之单表查询+多表操作大全

《MySQL基本表查询操作汇总之单表查询+多表操作大全》本文全面介绍了MySQL单表查询与多表操作的关键技术,包括基本语法、高级查询、表别名使用、多表连接及子查询等,并提供了丰富的实例,感兴趣的朋友跟... 目录一、单表查询整合(一)通用模版展示(二)举例说明(三)注意事项(四)Mapper简单举例简单查询

C++多线程开发环境配置方法

《C++多线程开发环境配置方法》文章详细介绍了如何在Windows上安装MinGW-w64和VSCode,并配置环境变量和编译任务,使用VSCode创建一个C++多线程测试项目,并通过配置tasks.... 目录下载安装 MinGW-w64下载安装VS code创建测试项目配置编译任务创建 tasks.js

Nginx概念、架构、配置与虚拟主机实战操作指南

《Nginx概念、架构、配置与虚拟主机实战操作指南》Nginx是一个高性能的HTTP服务器、反向代理服务器、负载均衡器和IMAP/POP3/SMTP代理服务器,它支持高并发连接,资源占用低,功能全面且... 目录Nginx 深度解析:概念、架构、配置与虚拟主机实战一、Nginx 的概念二、Nginx 的特点

Spring IOC核心原理详解与运用实战教程

《SpringIOC核心原理详解与运用实战教程》本文详细解析了SpringIOC容器的核心原理,包括BeanFactory体系、依赖注入机制、循环依赖解决和三级缓存机制,同时,介绍了SpringBo... 目录1. Spring IOC核心原理深度解析1.1 BeanFactory体系与内部结构1.1.1

SpringBoot集成iText快速生成PDF教程

《SpringBoot集成iText快速生成PDF教程》本文介绍了如何在SpringBoot项目中集成iText9.4.0生成PDF文档,包括新特性的介绍、环境准备、Service层实现、Contro... 目录SpringBoot集成iText 9.4.0生成PDF一、iText 9新特性与架构变革二、环