几个Arcpy代码应用案例

news2025/1/13 13:16:44

5ee084c1f56a05b19089ce081573f42e.png

1

案例一

删除特定记录

使用 arcpy 从 ArcGIS 中的图层中删除特定记录。可以使用更新游标(UpdateSursor)和 SQL 查询来识别和删除所需的记录。以下是如何删除特定图层记录的示例

import arcpy          
         
selectedParcels='selectedParcels'          
expression = "project = '{}'".format(projectName)          
         
arcpy.MakeFeatureLayer_management(EasementsLyr.url,selectedParcels)          
arcpy.SelectLayerByAttribute_management(selectedParcels,"NEW_SELECTION",expression)          
         
if int(arcpy.GetCount_management(selectedParcels)[0]) > 0:          
   arcpy.DeleteRows_management(selectedParcels)

代码解释:

        1. 导入arcpy模块,这是用于使用 ArcGIS 的 Python 站点包。

        2. 定义了一个变量selectedParcels来存储将要创建的临时要素图层的名称。

        3. 根据变量的值构造 SQL 表达式projectName。

        4. 创建一个selectedParcels使用MakeFeatureLayer_management函数命名的要素层。要素图层是从EasementsLyr图层创建的,该图层假定为 ArcGIS 环境中预先存在的图层。

        5. selectedParcels使用函数根据属性表达式选择图层中的要素SelectLayerByAttribute_management。

        6. 使用函数检查所选特征的数量GetCount_management。该int()函数用于将结果转换为整数。

        7. 如果所选要素的计数大于零,则表明存在匹配的地块,则继续下一步。

        8. selectedParcels使用函数从图层中删除选定的行DeleteRows_management。

更多python操作arcpy的教程,请参考下面这本书

代码selectedParcels根据指定的属性表达式从图层中选择和删除行。它假定存在一个名为的要素图层EasementsLyr,并对该图层执行选择和删除操作。

2

案例二:

创建缓冲区

a9c4373d774e2d59ce1150d51049ce0b.png

缓冲区是地理信息系统 (GIS) 中用于定义沿特定路线或中心线的线性区域的空间概念。它表示路线周围的一个区域,其中可以包括用于分析和可视化目的的附加要素或属性。缓冲区通常用于交通规划、公用事业管理和环境研究。

#Buffer Analysis on Centerline          
expression = “Project = ‘{}’”.format(projectName)          
arcpy.SelectLayerByAttribute_management(selectedCenterLine,”NEW_SELECTION”,expression)          
         
matchcount = int(arcpy.GetCount_management(selectedCenterLine)[0])          
#Match count of Project CenterLine Parcels          
if matchcount > 0:          
arcpy.Buffer_analysis(selectedCenterLine, outFile, bufferValue+" Feet", "FULL", "ROUND", "LIST")          


with arcpy.da.SearchCursor(outFile,tempFields) as tempCursor:          
  for row in tempCursor:          
    insertCursor.insertRow(('Corridor',projectName,row[1],state,county,bufferValue,'Active'))          
         
#Delete Insert Cursor          
del insertCursor

代码解释:

    1. ‍该代码首先定义一个基于projectName变量的表达式,然后使用 来选择与该表达式匹配的特定中心线特征SelectLayerByAttribute_management。

    2. 它计算使用的选定中心线特征的数量GetCount_management并将结果存储在matchcount变量中。

    3. 如果有选定的特征 ( matchcount > 0),代码将继续使用 对选定的中心线特征执行缓冲区分析Buffer_analysis。生成的缓冲区保存在outFile要素类中。

    4. 搜索游标用于迭代缓冲要素 ( tempCursor) 并使用插入游标 ( ) 将信息插入另一个要素类insertCursor.insertRow。插入的信息包括缓冲区 、、、、、、projectName和“活动”等值row[1]。statecountybufferValue

    5. 最后,使用删除插入游标del insertCursor。

总之,代码根据特定项目选择中心线要素,对所选要素执行缓冲区分析以创建道路,并将有关道路的信息插入到要素类中。‍

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/679363.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

分子碰撞频率和自由程------从一个物理小问题解剖自己的数学思维

物理学12-8节中,关于分子平均碰撞的解说如下: (一)分子碰撞自由程公式 第一个公式中,lamda v / z中,v的单位是m/s, z的单位是A/s, 其中A是常数。那么lamda描述的结果是m/A, 这正是长度单位。 此公式lamda…

利用正弦定理证明两角和差公式

首先用正弦定理,证明sin(AB)sinAcosBcosAsinB。 另外,其它的两角和差公式,都可以用三角函数奇偶性、诱导公式等推导出来,无需再用正弦定理证明一遍。

耗时一个月!手撸博客系统,主打美观实用!

先附上博客链接RoCBlog 关于博客 关于博客 RoCBlog 完成耗时:20天 起初是想搭建自己的博客,看了网上许多开源框架,感觉没啥意思,于是决定自己写一套 纯手撸VueSpringboot 其实是个我一边学vue一边写出来的东西,前期…

团体程序设计天梯赛-练习集L1篇⑩

🚀欢迎来到本文🚀 🍉个人简介:Hello大家好呀,我是陈童学,一个与你一样正在慢慢前行的普通人。 🏀个人主页:陈童学哦CSDN 💡所属专栏:PTA 🎁希望各…

(贪心) 1221. 分割平衡字符串 ——【Leetcode每日一题】

❓ 1221. 分割平衡字符串 难度:简单 平衡字符串 中,L 和 R 字符的数量是相同的。 给你一个平衡字符串 s,请你将它分割成尽可能多的子字符串,并满足: 每个子字符串都是平衡字符串。 返回可以通过分割得到的平衡字符…

【JAVA反序列化】序列化与反序列化Java反射URLDNS链

文章目录 原生序列化与反序列化概述为什么需要序列化和反序列化?应用场景(涉及到将对象转换成二进制,序列化保证了能够成功读取到保存的对象)涉及的协议好处为什么会产生反序列化漏洞?可能反序列化的形式?代码演示 Java反射基础补…

Java try-catch块

Java的try块用于封装可能会抛出异常的代码。它必须在方法内部使用。 如果在try块中的特定语句处发生异常,后续的代码块将不会执行。因此,建议不要在try块中放置不会抛出异常的代码。 Java的try块必须后跟catch块或finally块。 Java try-catch语法 try…

JDBC ResultSet源码解读

通过Debug方式看下源码: 1.Debug程序,找到返回的 ResultSet 的引用 2. 查看ResultSet中的rowData 3. 查看 rows 我们可以看到rows是一个数组,里面存放了我们查询得到的数据(我的表中一共7条数据)。 4. 查看rows中的元…

【总结】网页状态码——200、302、304、400、404、405、500

200正常 500异常–服务器异常Java代码 细节:null和空,null调用方法会出现空指针异常 400异常----传参相关的异常 get方法长度限制 400异常,加了RequestParam(value “name”) 必须传值 400异常,后端类型是Integer&#xff0c…

c# 基于微信wechat_qrcode opencv插件,网络二维码图片批量识别(一)

一、基本概念 微信开源了其二维码的解码功能,并贡献给 OpenCV 社区。其开源的 wechat_qrcode 项目被收录到 OpenCV contrib 项目中。从 OpenCV 4.5.2 版本开始,就可以直接使用。 该项目 github 地址: https://github.com/opencv/opencv_contr…

中国电子学会2023年05月份青少年软件编程C++等级考试试卷二级真题(含答案)

一、编程题(共5题,共100分) 1. 数字放大 给定一个整数序列以及放大倍数x,将序列中每个整数放大x倍后输出。 时间限制:1000 内存限制:65536 【输入】 包含三行: 第一行为N,表示整数序列的长度(N ≤ 100)&a…

yandex地图js学习

由于百度地图在国外的某些寻路的场景不太完善,所以试用了一下俄罗斯的开源地图。同google地图一样,规划路线需要申请apikey,但无需绑定信用卡,每天的免费调用次数也非常够用。 yandex maps开发文档 申请apikey 只需要创建账号&…

5.5.4 从IPv4到IPv6过渡——双协议栈

5.5.4 从IPv4到IPv6过渡——双协议栈 与软件版本更新不同,IP协议版本的更新不可能在短时间内完成,只能够采用逐步演进的方法,也就是说在很长一段时间内,必须允许两种协议的网络并存,并且能够确保网络能够互联互通&…

C++11语法杂记(更新中)

文章目录 一. delctype二. default三. delete四. 可变参数模板五. emplace系列六. noexcept七. constexpr 一. delctype delctype和auto类似,也可以自动识别类型 举例如下: 与auto不同的是,auto只能用于定义变量类型,而decltyp…

查看ResultSet中的rowData

之前的dml语句都返回值都是int表示有改动的行数 那么Select可是要展示数据的 SELECT查询的结果 通过这个ResultSet遍历 然后通过next方法来一行行读取数据 类似于迭代器(肯定不是迭代器) 里面还包含获得的数据元素 相当于这个既包含元素,还能迭代自己的元素 具体你…

MySQL——DQL,DCL语言学习

作者简介:一名云计算网络运维人员、每天分享网络与运维的技术与干货。 座右铭:低头赶路,敬事如仪 个人主页:网络豆的主页​​​​​​ 前言 本章将会讲解MySQLDQL,DCL语言的学习。 一.DQL DQL 英文全称是 Data …

全志V3S嵌入式驱动开发(五种镜像烧入的方法)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 关于v3s的镜像烧入,大约有五种方法。前面陆陆续续已经介绍了三种方法,实际工作中具体使用哪一种,大家可以根据自…

SpringBoot 监控与管理的主要组件

SpringBoot 监控与管理的主要组件 SpringBoot作为一款开箱即用的Java Web开发框架,集成了很多方便开发者使用的组件。其中一个非常重要的组件就是监控与管理组件。在现代的分布式应用中,监控与管理已经成为了必不可少的一部分。SpringBoot提供了一些非常…

指针与数组--动态数组(1)[1、C程序的内存映像 2、动态内存分配]

目录 一、C程序的内存映像 二、动态内存分配 1、malloc()函数 2、calloc()函数 3、free()函数 4、realloc()函数 一、C程序的内存映像 一个编译后的C程序 获得并使用4块在逻辑上不…

vue+leaflet 使用js自定义封装动画marker样式点

效果图 1. 引入leaflet import L from leaflet2. 使用原生js实现 import L from leaflet; import ../assets/css/blinkmarker.css; L.blinkMarker (point, property) > {// 使用js标签,便于操作,这个temDivEle的作用是将divEle通过innerHTML的方式获取为字符串var temp…