在使用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

Arcpy基础入门-4、arcpy工具进阶相关推荐

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

    接着说arcpy的使用.地理处理工具是arcgis的核心所在.Arcgis桌面版软件围绕地理处理构建了一个完整的可扩展的地理处理框架:arctoolbox.Modelbuilder.Commend l ...

  2. 五万字15张导图Java自学路线,小白零基础入门,程序员进阶,收藏这篇就够了

    本文收录于<技术专家修炼> 文中配套资料合集 路线导图高清源文件 点击跳转到文末点击底部卡片回复「资料」领取 哈喽,大家好,我是一条~ 最近粉丝问我有没有Java自学路线,有了方向才能按图 ...

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

    教程1中我们简单的说了arcpy的使用方法,这应该特符合中国的国情吧,先会用再说.我们这一节还是讲arcpy的使用.说一下arcpy的批处理功能. ArcGIS作为世界领先的平台GIS软件,其应用的广 ...

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

    空间数据具有三大特征:空间特征.属性特征和时间特征,同样组成一个几何要素的对象也包括空间几何.属性以及时间表达. 这一节我们以一个实例来说一下arcpy对几何对象属性的操作,属性的操作和数据库的操作基 ...

  5. 2023最新网络安全书单推荐——助你从零基础入门到成为网络安全工程师到进阶首席安全官

    零基础入门网络安全工程师到进阶首席安全官-2023最新网络安全书单推荐 前言 开门见山,各位从零基础入门网络安全时,一定要有阅读书籍的习惯,因为你在学习时看的视频只会让你的知识体系浮于表面,而书籍的作 ...

  6. bigdecimal判断大于零_Python零基础入门(七):运算符

    点击蓝字 一起划水 Review: Python零基础入门(一):对Python的简单认识 Python零基础入门(二):字符串基础 Python零基础入门(三):字符串进阶 Python零基础入门( ...

  7. java进阶 2018_Java Web基础入门2018版

    步骤1: Java Web基础入门 本步骤带领大家进入Java Web的世界,除了介绍JSP和Servlet以外,还会介绍开发工具IntelliJ IDEA的使用,以及什么是XML.最后会学习MVC模 ...

  8. 渗透测试工具集(非常详细),从零基础入门到精通,看完这一篇就够了(附安装)

    写在前面:这段时间由于发布了很多关于黑客工具教程的文章,后台经常会受到很多初学安全朋友的私信"初学者如何入门安全"."要去哪里找学习资料"等等.想起当初自己学安 ...

  9. 视频教程-Kali Linux渗透测试基础入门到进阶实战全程课-渗透测试

    Kali Linux渗透测试基础入门到进阶实战全程课 本人有多年的服务器高级运维与开发经验,擅长计算机与服务器攻防及网络攻防技术!对网络安全领域有持续的关注和研究! 林晓炜 ¥499.00 立即订阅 ...

最新文章

  1. Linux下最简单的修改文件名后缀的命令行技巧
  2. for循环利用可迭代对象与迭代器完成工作的本质
  3. linux 上管理mysql_Linux下管理MySql
  4. 百度历年笔试面试150题
  5. find(),find_if(),以及巧妙的函数对象,函数适配器
  6. 超宽带 DWM1000模块 引脚连接
  7. 下载m3u8加密视频
  8. 移动互联网APP测试流程及测试点
  9. 马化腾:谈谈我创办腾讯这些年
  10. 初探摩根大通的企业级以太坊区块链解决方案—Quorum
  11. ERROR in ./node_modules/element-plus/es/components/menu-item-group/style/css2.mjs 2:0-54
  12. 计算机网络笔记——概述、物理层、链路层(方老师408课程)
  13. 让我摘下星星送给你_摘下星星送给你摘下月亮送给你是哪首歌的歌词
  14. 使用Python 训练OpenCV Cascade分类器 - 1
  15. P1423 小玉在游泳 NOIP python题解
  16. 代码人生之《掌控习惯》分享
  17. 三子棋(N子棋)游戏的保姆级超详细教程(C语言)
  18. 4824: [Cqoi2017]老C的键盘3167: [Heoi2013]Sao
  19. 《用友ERP-U8(8.72版)标准财务模拟实训》——1.4 系统管理注册和导入演示账套...
  20. echarts占比环形图

热门文章

  1. 【网络安全】文件上传漏洞 详解
  2. web前端开发和岗位职责
  3. 服务器域名绑定公网IP地址
  4. 1037u支持64位linux吗,英特尔® 赛扬® 处理器 1037U
  5. 计算机的字长一定是字节的整数倍,大学计算机应用基础选择题一.doc
  6. cookie的简单介绍
  7. python几行代码实现邮件解析
  8. 【备忘】真.护眼色 数值
  9. Webpack是什么?(webpack初学简单易理解)
  10. GaussDB - 浅析华为高斯GaussDB