Arcpy基础入门-4、arcpy工具进阶

在使用arcmap工具箱里的工具的时候,如果已经加载相应的图层或者数据,就可以使用下拉列表的方式进行选择,也就是说工具会自动加载这些图层只需要选择即可。这一节就说下如何自动化的选择图层和数据。

1、 设置参数类型为相应的Featurelayer、RasterLayer等带Layer的参数

看一个实例代码:

import arcpy

#获取图层

fc = arcpy.GetParameter(0)

arcpy.RepairGeometry_management(fc)

按照教程三创建arcpy工具,设置参数时候如下进行设置:

就可以实现图层的自动选择,如下图:

2、 通过代码自动获得图层或者数据

看一个实例代码:

import arcpy, os

#Read parameters from dialog

mxdPath = arcpy.GetParameterAsText(0)

dfName = arcpy.GetParameterAsText(1)

layerName = arcpy.GetParameterAsText(2)

layerFile = arcpy.GetParameterAsText(3)

outMXD = arcpy.GetParameterAsText(4)

#Update layer symbology

mxd = arcpy.mapping.MapDocument(mxdPath)

df = arcpy.mapping.ListDataFrames(mxd,dfName)[0]

updateLayer = arcpy.mapping.ListLayers(mxd,layerName)[0]

sourceLayer =arcpy.mapping.Layer(layerFile)

arcpy.mapping.UpdateLayer(df, updateLayer,sourceLayer, True)

#Save changes to new MXD and automaticallyopen

mxd.saveACopy(outMXD)

os.startfile(outMXD)

del mxd, sourceLayer

其工具参数如下设置:

参数设置后面有个Validation

通过下面的Edit按钮可以对里面的代码进行编辑,编辑之后,点击保存,并点击下面的应用按钮即可。粘贴代码如下:

class ToolValidator:

"""Class for validating a tool‘s parameter values andcontrolling

thebehavior of the tool‘s dialog."""

def__init__(self):

"""Setup the Geoprocessor and the list of toolparameters."""

import arcpy

self.params = arcpy.GetParameterInfo()

definitializeParameters(self):

"""Refine the properties of a tool‘s parameters.  This method is

called when the tool is opened."""

return

defupdateParameters(self):

"""Modify the values and properties of parameters beforeinternal

validation is performed.  Thismethod is called whenever a parmater

has been changed."""

import arcpy

#Update Data Frames list

if self.params[0].value:

mxd = arcpy.mapping.MapDocument(self.params[0].value.value)

dataFrames = arcpy.mapping.ListDataFrames(mxd)

dfList = []

for df in dataFrames:

dfList.append(df.name)

dfList.sort()

if not self.params[1].altered:

self.params[1].filter.list = dfList

#Update Layer list (in selected data frame)

if self.params[1].value:

df = arcpy.mapping.ListDataFrames(mxd, (self.params[1].value))[0]

lyrs = arcpy.mapping.ListLayers(mxd, "", df)

layerList = []

for lyr in lyrs:

layerList.append(lyr.name)

layerList.sort()

if not self.params[2].altered:

self.params[2].filter.list = layerList

return

defupdateMessages(self):

"""Modify the messages created by internal validation foreach tool

parameter.  This method is calledafter internal validation."""

return

时间: 2024-11-07 11:38:00

Arcpy基础入门-4、arcpy工具进阶的相关文章

Arcpy基础入门-3、arcpy创建地理处理工具

接着说arcpy的使用.地理处理工具是arcgis的核心所在.Arcgis桌面版软件围绕地理处理构建了一个完整的可扩展的地理处理框架:arctoolbox.Modelbuilder.Commend line.arcpy.这四类地理处理方式是可以相互转换的.平常我们用的最多的就是arctoolbox,每一个工具箱里面都包含着若干的地理处理工具. 本节我们就说下如何利用arcpy创建地理处理工具. 看一个示例代码: import sys reload(sys) sys.setdefaultencod

Arcpy基础入门-1、如何使用arcpy

记得自己当初学习arcpy脚本的时候,没有人带自己,自己摸索了得有好长时间吧,不知道怎么使用arcpy脚本,看帮助文档看的也不怎么明白,一直到有一天把,自己终于摸索出如何在IDLE(arcgis安装时自带的python编译环境)里使用arcpy,才豁然开朗.这里权为那些苦苦摸索arcpy而不能入门的童鞋写个入门级的教程吧. 记得学习编程的时候总有个"hello,world".这里也先不讲arcpy到底是干嘛的,先说如何使用arcpy. 安装arcgis之后,自动安装的有相对应的pyth

Arcpy基础入门-2、arcpy的批处理功能

教程1中我们简单的说了arcpy的使用方法,这应该特符合中国的国情吧,先会用再说.我们这一节还是讲arcpy的使用.说一下arcpy的批处理功能. ArcGIS作为世界领先的平台GIS软件,其应用的广泛性和良好的用户体验已经毋庸置疑.ArcGIS从地理数据库.地理处理框架.地理数据可视化三个方面构架起整个平台.同许多平台一样,arcgis有效的对其核心代码进行了封装,并提供了对功能的定制.这也算是许多平台软件都提供的功能,像CAD提供的宏命令. 来个示例代码看下: import arcpy ar

ArcPy学习入门(六):导入Arcpy

在导入 ArcPy 之后,可以运行随 ArcGIS 安装的标准工具箱中的所有地理处理工具: >>>import arcpy 1.导入整个模块 模块通常是一个包含函数和类的 Python 文件. ArcPy 包括数据访问模块 (arcpy.da).制图模块 (arcpy.mapping).ArcGIS Spatial Analyst 扩展模块模块 (arcpy.sa) 和 ArcGIS Network Analyst 扩展模块模块 (arcpy.na). import arcpy.mapp

Android基础入门教程——8.3.1 三个绘图工具类详解

Android基础入门教程--8.3.1 三个绘图工具类详解 标签(空格分隔): Android基础入门教程 本节引言: 上两小节我们学习了Drawable以及Bitmap,都是加载好图片的,而本节我们要学习的绘图相关的 一些API,他们分别是Canvas(画布),Paint(画笔),Path(路径)!本节非常重要,同时也是我们 自定义View的基础哦~好的,话不多说开始本节内容~ 官方API文档:Canvas:Paint:Path: 1.相关方法详解 1)Paint(画笔): 就是画笔,用于设

Android基础入门教程——4.2.2 Service进阶

Android基础入门教程--4.2.2 Service进阶 标签(空格分隔): Android基础入门教程 本节引言 上节我们学习了Service的生命周期,以及两种启动Service的两种方法, 本节继续来深入了解Service中的IntentService,Service的使用实例: 前台服务与轮询的实现! 1.IntentService的使用 在上一节后我们已经知道了如何去定义和启动Service,但是如果我们直接把 耗时线程放到Service中的onStart()方法中,虽然可以这样做

2015年最新Android基础入门教程目录(完结版)

2015年最新Android基础入门教程目录(完结版) 标签(空格分隔): Android基础入门教程 前言: 关于<2015年最新Android基础入门教程目录>终于在今天落下了帷幕,全套教程 共148节已编写完毕,附上目录,关于教程的由来,笔者的情况和自学心得,资源分享 以及一些疑问等可戳:<2015最新Android基础入门教程>完结散花~ 下面是本系列教程的完整目录: 第一章:环境搭建与开发相关(已完结 10/10) Android基础入门教程--1.1 背景相关与系统架构

《2015最新Android基础入门教程》完结散花~

<2015最新Android基础入门教程>完结散花~ 标签(空格分隔): 反思小结 引言: 从六月底就开始编写这套教程,历时将近五个多月,今天终于写完了,全套教程正文部分148篇, 十大章,从基本UI控件到四大组件,Intent,Fragment,事件处理,数据存储,网络编程,绘图与动画, 多媒体,系统服务等都进行了详细的讲解!代码都是都是在Android Studio上进行编写的,全文 采用Markdown,行文结构清晰,还结合了实际开发中一些常见的问题进行了剖析-由于个人能力的局限, 虽然

Android基础入门教程——8.3.16 Canvas API详解(Part 1)

Android基础入门教程--8.3.16 Canvas API详解(Part 1) 标签(空格分隔): Android基础入门教程 本节引言: 前面我们花了13小节详细地讲解了Android中Paint类大部分常用的API,本节开始我们来讲解 Canvas(画板)的一些常用API,我们在Android基础入门教程--8.3.1 三个绘图工具类详解 中已经列出了我们可供调用的一些方法,我们分下类: drawXxx方法族:以一定的坐标值在当前画图区域画图,另外图层会叠加, 即后面绘画的图层会覆盖前