在ArcGIS上使用python(arcpy包)的入门教程
1.why arcpy?
如果简单将arcgis理解成绘图与分析两大功能的话(由于本人对arcgis使用十分局限,该分类仅为个人使用范畴内的一个总结),arcpy包在arcgis的分析功能上有很大的帮助。其主要功能是利用代码行取代传统的手动点击。其应用在解决以下几大场景下的问题中十分有效:
- 操作步骤较多,并且希望自己的操作之后可以被重复实现。
- 操作步骤选项繁复,难以绝对保证每个步骤选项设置无误。
- 论文发表需要提交各数据处理过程的代码,但是在arcGIS上的点击操作无法给出代码。
- 简单的操作但是需要重复多次,极其费时(最重要的功能)
2.如何使用arcpy?
arcpy和python的各种包其实本质上无太多区别。理论上如果将该包安装至pip内,可以同常用的python包一样进行调用。但是在实际操作中经过笔者尝试,并不能利用pip或conda进行arcpy包的安装,只能在ArcMap环境中的python窗口进行运行。(理论上似乎可以手动将arcGIS环境下的python中的arcpy复制到常用python环境中,这样就可以完全脱离ArcMap进行地理计算了,不过可能存在版权问题)。
Arcgis中的python窗口如图,点击上方工具栏的python即可出现下方窗口。ArcMap中内置版本是python2.7,部分语法跟我们常用的python3有些区别,容易出现一些编码方面的问题。在Arcgis pro中内置python版本似乎是python3,不过笔者没有具体使用过。
3.arcpy的具体功能
下面利用几个代码实例介绍一下arcpy的具体应用
(1)利用arcpy替代手动调用ArctoolBox
引入包(个人习惯,似乎不引也可以…)
import arcpy
设置工作路径(也可以不用设置,后期利用绝对路径进行引用)
arcpy.env.workspace="H:\桌面\数据\地块地铁匹配工作目录"
将地铁线路设置一万米的缓冲区(若不设置工作路径则函数中使用绝对路径)
arcpy.Buffer_analysis("地铁数据.shp", "buffer_10000M", "10000 METERS")
将住宅用地数据合并至商服用地数据中
arcpy.Append_management(["住宅用地_clip"],"商服用地_clip")
以上展示了简单的制作缓冲区,数据合并功能。实际上任何Arctoolbox内的工具均对应有python函数。具体的函数可以在ArcMap官网描述文档查询即可。官网上一般附带sample,上手难度很低。
(2)利用arcpy替代手动修改属性表
属性表操作相较于Arctoolbox内工具箱稍微麻烦一些,需要是利用游标(cursor)来进行操作。这里引用简书上muyan大佬的一张图片来进行解释游标的本质。
游标是一种可迭代对象,通过创建一个指针对象调用指针的next方法。通过不断循环调用next来实现对属性表内每个条属性的访问。游标总共有以下三类:
函数 | 游标对象 |
---|---|
SearchCursor() | 查找游标,只能读不能写 |
InsertCursor() | 插入游标,只能写,创建新的行 |
UpdateCursor | 更新游标,只能写,修改当前行或者删除当前行 |
下文仅就更新游标对其基本功能做一个展示,关于三个游标更多内容(比如调取各行的地理信息等)同样可以参考官网游标帮助文档(这个好像没有中文版的)。
以下是网络上一个利用游标进行属性表拆分的case,出处于注释所示。源代码中存在缺少注释以及代码缩进问题,本人进行了部分修改。
#code source: https://www.cnblogs.com/yzhyingcool/ QQ:975601416
# in_feature:待拆分要素类
# out_folderpath:输出路径,注意最后加“/”以与字段名拼接出输出文件路径
# split_field:拆分标准字段
import arcpy
in_feature="C:/Users/yang/Desktop/中国行政区矢量图/省级行政区域.shp"
out_folderpath="C:/Users/yang/Desktop/1/"
#这个split_field比较关键,是指你所想研究的in_feature这样一个shp中具体对哪些字段进行研究。比如本代码中只想对shp里的Name字段进行研究。
split_field="NAME"
field_data_list=[]
#利用SearchCursor()生成可迭代对象cursor
with arcpy.da.SearchCursor(in_feature,split_field) as cursor:
#利用for循环进行遍历,row代表是当前行for row in cursor:
#row[0]存储的是row中第一个字段的信息。这个“第一”指的是你在split_field中所有字段中的排序。由于本代码中只引入了NAME一个字段,所有通过row[0]进行调用if row[0] not in field_data_list: field_data_list.append(row[0])
#通过上述游标操作将行的信息保存在了field_data_list中,在配合arcpy中的select_analysis函数完成属性表的拆分功能。for select_data in field_data_list:arcpy.Select_analysis(in_feature,\out_folderpath+select_data+'.shp',\split_field+"="+"'"+select_data+"'")
在ArcGIS上使用python(arcpy包)的入门教程相关推荐
- 笔记本电脑下载python视频教程-Python的Jupyter Notebook入门教程
适用于Python的Jupyter Notebook入门教程 在下面的教程中,将指导您完成安装Jupyter Notebook的过程.同时,我们将探索Jupyter Notebook的基本功能,通过尝 ...
- qpython3可视图形界面_PySide——Python图形化界面入门教程(三)
PySide--Python图形化界面入门教程(三) --使用内建新号和槽 --Using Built-In Signals and Slots 上一个教程中,我们学习了如何创建和建立交互widget ...
- qpython3绘图_比Excel制图更强大,Python可视化工具Altair入门教程
比 Excel 制图更强大,Python 可视化工具 Altair 入门教程 数据转化成更直观的图片,对于理解数据背后的真相很有帮助.如果你有这方面的需求,而且还在使用 Python,那么强烈推荐你试 ...
- Python+Opencv图像处理新手入门教程(四):视频内容的读取与导出
一步一步来吧 上一节: Python+Opencv图像处理新手入门教程(三):阈值与二值化 1.Intro 今天这节我们主要看怎么利用opencv读取并处理视频中的内容. 2.VideoCapture ...
- Python+Opencv图像处理新手入门教程(三):阈值与二值化
一步一步来吧 上一节: Python+Opencv图像处理新手入门教程(二):颜色空间转换,图像大小调整,灰度直方图 1.Intro 今天这节我们主要研究利用阈值处理图像.例如对于输入图像: 如何做一 ...
- Python+Opencv图像处理新手入门教程(二):颜色空间转换,图像大小调整,灰度直方图
一步一步来吧 上一节:Python+Opencv图像处理新手入门教程(一):介绍,安装与起步 1.什么是图像 对于计算机而言,图像的本质是一个由像素点构成的矩阵. 例如我们用肉眼很容易分辨一辆汽车的后 ...
- Charles网络抓包新手入门教程-(二)软件配置与环境安装(ios14-IOS系统安装配置)
目录 一.环境配置 二.开启电脑代理设置 三.给IPhone手机设置代理服务器 四.Iphone手机下载并信任证书 五.Charles抓取手机数据包 六.总结 一.环境配置 1.Win10系统 2.C ...
- python图形用户界面pyside_PySide——Python图形化界面入门教程(一)
标签: PySide--Python图形化界面入门教程(一) --基本部件和HelloWorld 原文链接:http://pythoncentral.io/intro-to-pysidepyqt-ba ...
- arcgis怎么运行python_在arcgis上用python脚本(arcpy)做数据批处理
arcgis软件是测绘地理信息行业空间数据处理与数据分析比较普及的一套软件系统,具有良好的扩展功能,其提供的基于python的开发包arcpy为数据的批处理提供了很好的基础.本文就是介绍在arcgis ...
最新文章
- 一档博士40万年薪+70万房补!引进224人!​这所大学2021年公开招聘专任教师公告...
- AI“双子星”同日联动:DeepMind加速编程自动化,OpenAI新方法解开2道国际奥数题...
- Linux wildcard
- 轻松搭建Google ADK开发环境
- python判断字典,列表,元组为空的方法。
- 【报告分享】2020大中华区人工智能成熟度调研:解码2020,展望数字未来.pdf(附下载链接)...
- 如何在spring框架中解决多数据源的问题[转]
- 长沙县北部新城:“湖湘生态”蓝图已绘就,“右岸经济”起飞正当时
- [Xcelsius]从Xcelsius中导出Excel表格
- 网易微专业——Java Web开发工程师学习笔记(1):HTTP
- 【codeforces 417D】Cunning Gena
- Windows10资源管理器使用
- 数据库管理系统MFC实现
- 文本相似度 Text Similarity
- Unity基础(10)—— 修改场景的天空盒(Skybox)
- 转贴:粒子在施瓦西黑洞内部是如何运动的?
- 泰坦尼克号乘客生存情况分析第一部分
- 手机无线鼠标服务器.zip,无线鼠标遥控器_Remote Mouse 1.0双版 用手机遥控你的电脑...
- 13-cmake语法-路径设置
- Openstack 安装之 Swift