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

相关文章

Django开发时如何避免频繁发送短信验证码(python图文代码)

《Django开发时如何避免频繁发送短信验证码(python图文代码)》Django开发时,为防止频繁发送验证码,后端需用Redis限制请求频率,结合管道技术提升效率,通过生产者消费者模式解耦业务逻辑... 目录避免频繁发送 验证码1. www.chinasem.cn避免频繁发送 验证码逻辑分析2. 避免频繁

python panda库从基础到高级操作分析

《pythonpanda库从基础到高级操作分析》本文介绍了Pandas库的核心功能,包括处理结构化数据的Series和DataFrame数据结构,数据读取、清洗、分组聚合、合并、时间序列分析及大数据... 目录1. Pandas 概述2. 基本操作:数据读取与查看3. 索引操作:精准定位数据4. Group

Python pandas库自学超详细教程

《Pythonpandas库自学超详细教程》文章介绍了Pandas库的基本功能、安装方法及核心操作,涵盖数据导入(CSV/Excel等)、数据结构(Series、DataFrame)、数据清洗、转换... 目录一、什么是Pandas库(1)、Pandas 应用(2)、Pandas 功能(3)、数据结构二、安

Spring Boot集成/输出/日志级别控制/持久化开发实践

《SpringBoot集成/输出/日志级别控制/持久化开发实践》SpringBoot默认集成Logback,支持灵活日志级别配置(INFO/DEBUG等),输出包含时间戳、级别、类名等信息,并可通过... 目录一、日志概述1.1、Spring Boot日志简介1.2、日志框架与默认配置1.3、日志的核心作用

Python操作PDF文档的主流库使用指南

《Python操作PDF文档的主流库使用指南》PDF因其跨平台、格式固定的特性成为文档交换的标准,然而,由于其复杂的内部结构,程序化操作PDF一直是个挑战,本文主要为大家整理了Python操作PD... 目录一、 基础操作1.PyPDF2 (及其继任者 pypdf)2.PyMuPDF / fitz3.Fre

Python对接支付宝支付之使用AliPay实现的详细操作指南

《Python对接支付宝支付之使用AliPay实现的详细操作指南》支付宝没有提供PythonSDK,但是强大的github就有提供python-alipay-sdk,封装里很多复杂操作,使用这个我们就... 目录一、引言二、准备工作2.1 支付宝开放平台入驻与应用创建2.2 密钥生成与配置2.3 安装ali

PyQt5 GUI 开发的基础知识

《PyQt5GUI开发的基础知识》Qt是一个跨平台的C++图形用户界面开发框架,支持GUI和非GUI程序开发,本文介绍了使用PyQt5进行界面开发的基础知识,包括创建简单窗口、常用控件、窗口属性设... 目录简介第一个PyQt程序最常用的三个功能模块控件QPushButton(按钮)控件QLable(纯文本

MySQL 强制使用特定索引的操作

《MySQL强制使用特定索引的操作》MySQL可通过FORCEINDEX、USEINDEX等语法强制查询使用特定索引,但优化器可能不采纳,需结合EXPLAIN分析执行计划,避免性能下降,注意版本差异... 目录1. 使用FORCE INDEX语法2. 使用USE INDEX语法3. 使用IGNORE IND

2025版mysql8.0.41 winx64 手动安装详细教程

《2025版mysql8.0.41winx64手动安装详细教程》本文指导Windows系统下MySQL安装配置,包含解压、设置环境变量、my.ini配置、初始化密码获取、服务安装与手动启动等步骤,... 目录一、下载安装包二、配置环境变量三、安装配置四、启动 mysql 服务,修改密码一、下载安装包安装地

电脑提示d3dx11_43.dll缺失怎么办? DLL文件丢失的多种修复教程

《电脑提示d3dx11_43.dll缺失怎么办?DLL文件丢失的多种修复教程》在使用电脑玩游戏或运行某些图形处理软件时,有时会遇到系统提示“d3dx11_43.dll缺失”的错误,下面我们就来分享超... 在计算机使用过程中,我们可能会遇到一些错误提示,其中之一就是缺失某个dll文件。其中,d3dx11_4