Arcpy基础入门-6、arcpy要素属性操作

2024-01-27 05:18

本文主要是介绍Arcpy基础入门-6、arcpy要素属性操作,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

空间数据具有三大特征:空间特征、属性特征和时间特征,同样组成一个几何要素的对象也包括空间几何、属性以及时间表达.

这一节我们以一个实例来说一下arcpy对几何对象属性的操作,属性的操作和数据库的操作基本相同,包括查询、添加、更改和删除,添加和删除主要是针对整个属性添加或者删除一个字段,查询和更改是针对一个要素的属性进行操作,我们来先看一个实例:

import time,os
import arcpyprint '程序开始:' + 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.0if((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只能进行普通的属性进行查询,不能使用下标;


至于两者的性能区别,我们后面再说,这里先简单的进行一个入门。

程序和实验数据

这篇关于Arcpy基础入门-6、arcpy要素属性操作的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Linux线程之线程的创建、属性、回收、退出、取消方式

《Linux线程之线程的创建、属性、回收、退出、取消方式》文章总结了线程管理核心知识:线程号唯一、创建方式、属性设置(如分离状态与栈大小)、回收机制(join/detach)、退出方法(返回/pthr... 目录1. 线程号2. 线程的创建3. 线程属性4. 线程的回收5. 线程的退出6. 线程的取消7.

Java操作Word文档的全面指南

《Java操作Word文档的全面指南》在Java开发中,操作Word文档是常见的业务需求,广泛应用于合同生成、报表输出、通知发布、法律文书生成、病历模板填写等场景,本文将全面介绍Java操作Word文... 目录简介段落页头与页脚页码表格图片批注文本框目录图表简介Word编程最重要的类是org.apach

从入门到精通MySQL联合查询

《从入门到精通MySQL联合查询》:本文主要介绍从入门到精通MySQL联合查询,本文通过实例代码给大家介绍的非常详细,需要的朋友可以参考下... 目录摘要1. 多表联合查询时mysql内部原理2. 内连接3. 外连接4. 自连接5. 子查询6. 合并查询7. 插入查询结果摘要前面我们学习了数据库设计时要满

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

从入门到精通C++11 <chrono> 库特性

《从入门到精通C++11<chrono>库特性》chrono库是C++11中一个非常强大和实用的库,它为时间处理提供了丰富的功能和类型安全的接口,通过本文的介绍,我们了解了chrono库的基本概念... 目录一、引言1.1 为什么需要<chrono>库1.2<chrono>库的基本概念二、时间段(Durat

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. 遍历方

解析C++11 static_assert及与Boost库的关联从入门到精通

《解析C++11static_assert及与Boost库的关联从入门到精通》static_assert是C++中强大的编译时验证工具,它能够在编译阶段拦截不符合预期的类型或值,增强代码的健壮性,通... 目录一、背景知识:传统断言方法的局限性1.1 assert宏1.2 #error指令1.3 第三方解决

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

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