ArcGIS 中创建自定义python工具箱

如果你觉得使用ArcGIS的Model Builder还无法满足你定制化的处理流程,可以考虑以下使用ArcGIS中带的python工具箱。通过它可以python代码的形式,调用ArcGIS 工具箱中的东西,也就是ArcPy,对于特殊的应用场景十分方便。开发人员可以将自己的逻辑,封装为一个工具,直接提供其他电脑上安装ArcGIS的人员使用。

创建Python工具箱

  1. 在ArcCatalog中我的工具箱上右键,选择新建——python工具箱
    在这里插入图片描述
  2. 在创建的工具箱上右键,选择编辑,在弹出的编辑框中,就可以输入编写代码了

Python工具箱代码

先提供一个案例

import arcpy
import os


class Toolbox(object):
    def __init__(self):
        """Define the toolbox (the name of the toolbox is the name of the
        .pyt file)."""
        self.label = "Toolbox"
        self.alias = ""

        # List of tool classes associated with this toolbox
        self.tools = [Tool]


class Tool(object):
    def __init__(self):
        """Define the tool (tool name is the name of the class)."""
        self.label = "验标出图工具"
        self.description = "验标出图工具"
        self.canRunInBackground = False

    def getParameterInfo(self):
        """Define parameter definitions"""
        # 定义工具面板上的参数形式
        param0 = arcpy.Parameter(displayName=u"地图模版",
                                 name="mxd_path",
                                 datatype="DEMapDocument",
                                 parameterType="Required",
                                 direction="Input")
        param1 = arcpy.Parameter(displayName=u"地块Shp文件",
                                 name="dk_layer",
                                 datatype="GPFeatureLayer",
                                 parameterType="Required",
                                 direction="Input")
        param2 = arcpy.Parameter(displayName=u"农户点Shp",
                                 name="nhd_layer",
                                 datatype="GPFeatureLayer",
                                 parameterType="Required",
                                 direction="Input")
        param3 = arcpy.Parameter(displayName=u"年份",
                                 name="nf",
                                 datatype="GPString",
                                 parameterType="Required",
                                 direction="Input")
        param3.filter.type = "ValueList"
        param3.filter.list = [
            '2018', '2019', '2020', '2021', '2022', '2023', '2024'
        ]
        param4 = arcpy.Parameter(displayName=u"结果输出目录",
                                 name="dst_dir",
                                 datatype="DEFolder",
                                 parameterType="Required",
                                 direction="Input")

        params = [param0, param1, param2, param3, param4]
        return params

    def isLicensed(self):
        """Set whether tool is licensed to execute."""
        return True

    def updateParameters(self, parameters):
        """Modify the values and properties of parameters before internal
        validation is performed.  This method is called whenever a parameter
        has been changed."""
        return

    def updateMessages(self, parameters):
        """Modify the messages created by internal validation for each tool
        parameter.  This method is called after internal validation."""
        return

    def execute(self, parameters, messages):
        """The source code of the tool."""
        # 取参数
        arcpy.env.workspace = r"in_memory"
        arcpy.env.scratchWorkspace = r"in_memory"
        arcpy.env.overwriteOutput = True
     
        mxd_path = parameters[0].valueAsText
        dk_layer_path = parameters[1].valueAsText
        nhd_layer_path = parameters[2].valueAsText
        nf = parameters[3].valueAsText
        dst_dir = parameters[4].valueAsText
        
        # 执行逻辑
        arcpy.AddMessage("all success")
        arcpy.AddMessage(mxd_path)
        arcpy.AddMessage(nf)
        arcpy.AddMessage(dst_dir)

        except arcpy.ExecuteError:
            arcpy.AddError(messages)
        except Exception:
            arcpy.AddError(messages)
        return

注意:

  1. getParameterInfo 中主要是用来定义面板的参数,
  2. execute中主要是,点击确定后的执行逻辑
  3. arcpy.AddMessagearcpy.AddError可以进行日志的打印

参数类型

数据类型datatype 关键字描述
地址定位器DEAddressLocator用于地理编码的数据集,存储地址属性、关联的索引以及用于定义将地点的非空间描述转换为空间数据这一过程的规则。
地址定位器样式GPAddressLocatorStyle用于创建新地址定位器的模板。
分析像元大小analysis_cell_size栅格工具使用的像元大小。
任何值GPType接受任何值的数据类型。
ArcMap 文档DEMapDocument包含一个地图、它的布局以及它的关联图层、表格、图表和报表的文件。
面积单位GPArealUnit面积单位类型和值,例如平方米或英亩。
布尔型GPBoolean布尔值。
CAD 工程图数据集DECadDrawingDataset包含多种要素类型和符号系统的矢量数据源。此数据集不适用于基于要素类的查询或分析。
计算器表达式GPCalculatorExpression计算器表达式。
目录根DECatalogRoot目录树中的顶级结点。
像元大小GPSACellSizeArcGIS Spatial Analyst 扩展模块 使用的像元大小。
像元大小 XYGPCellSizeXY定义栅格像元的两侧。
复合图层GPCompositeLayer对多个子图层的引用,包括符号系统和渲染属性。
压缩GPSAGDBEnvCompression指定用于栅格的压缩类型。
坐标系GPCoordinateSystem参考框架,例如 UTM 系统,由一组点、线和/或面,以及一组用于定义二维和三维空间中点的位置的规则组成。
坐标系文件夹DESpatialReferencesFolder磁盘上用于存储坐标系的文件夹。
覆盖范围DECoveragecoverage 数据集,用于存储地理要素,如点、弧线和面以及相关要素属性表的专有数据模型。
Coverage 要素类DECoverageFeatureClassescoverage 要素类,例如点、弧线、节点、路线、路线系统、弧段、面和区域。
数据元素DETypeArcCatalog 中可见的数据集。
数据文件GPDataFile数据文件。
数据库连接DERemoteDatabaseFolderArcCatalog 中的数据库连接文件夹。
数据集DEDatasetType相关数据的集合,通常被分组或存储在一起。
日期GPDate日期值。
dBase 表DEDbaseTable以 dBASE 格式存储的属性数据。
抽取GP3DADecimate指定 TIN 的节点子集,以创建该 TIN 的概化版本。
磁盘连接DEDiskConnection数据存储设备的访问路径。
双精度GPDouble所有浮点数将被存储为双精度 64 位值。
加密字符串GPEncryptedString密码加密的字符串。
EnvelopeGPEnvelope定义数据源所在的最小外接矩形的坐标对。
评估级别GPEvaluationScale加权叠加操作中应用于输入值的级别值范围和增量值。
范围GPExtent指定定义数据源的最小外接矩形的坐标对(x 最小值、y 最小值、x 最大值、y 最大值)。所有数据源的坐标都在此边界内。
提取值GPSAExtractValues提取值参数。
要素类DEFeatureClass形状类型相同的空间数据的集合:点、多点、折线和面。
要素数据集DEFeatureDataset共享公共的地理区域和相同的空间参考系统的要素类集合。
要素图层GPFeatureLayer对要素类的引用,包括符号系统和渲染属性。
要素集GPFeatureRecordSetLayer交互式要素;工具运行时绘制要素。
字段字段表中的列,用于存储单个属性的值。
字段信息GPFieldInfoFieldMap 中字段的详细信息。
字段映射GPFieldMapping一个或多个输入表中的字段集合。
文件DEFile磁盘上的文件。
文件夹DEFolder指定数据在磁盘上的存储位置。
格式化栅格GPRasterFormulated栅格表面,其像元值由公式或常量表示。
模糊函数GPSAFuzzyFunction模糊函数。
地理数据集DEGeodatasetType地理数据库中具有共同主题的数据集合。
GeoDataServerDEGeoDataServer引用地理数据库的粗粒度对象。
几何网络DEGeometricNetwork由拓扑连接的边和交汇点要素表示的线状网络。要素连通性以它们的几何重叠为基础。
地统计图层GPGALayer对地理统计数据源的引用,包括符号系统和渲染属性。
地理统计搜索邻域GPGASearchNeighborhood定义地统计图层的搜索邻域参数。
地理统计值表GPGALayer定义地统计图层的数据源和字段的集合。
GlobeServerDEGlobeServerGlobe 服务器。
GPServerDEGPServer地理处理服务器。
图表GPGraph图表。
图表数据表GPGraphDataTable图表数据表。
图层组GPGroupLayer显示为单个图层,并按照单个图层处理的图层集合。图层组使组织地图、指定高级绘制顺序选项和分享图层以用于其他地图变得更加容易。
水平系数GPSAHorizontalFactor水平成本系数和水平相对移动角度之间的关系。
影像服务DEImageServer影像服务。
索引索引用于加快在地理数据集和数据库中搜索记录的速度的数据结构。
INFO 表达式GPINFOExpression定义和操纵 INFO 表中数据的语法。
INFO 项目GPArcInfoItemINFO 表中的项目。
INFO 表DEArcInfoTableINFO 数据库中的表格。
LAS 数据集DELasDatasetLAS 数据集存储对磁盘上一个或多个 LAS 文件以及其他表面要素的引用。LAS 文件是一个二进制文件,专门用来存储机载激光雷达数据。
LAS 数据集图层GPLasDatasetLayer引用磁盘上的 LAS 数据集的图层。此图层可将过滤器应用于 LAS 数据集引用的雷达文件和表面约束。
LayerGPLayer对数据源的引用,例如 shapefile、coverage、地理数据库要素类或栅格,包括符号系统和渲染属性。
图层文件DELayer用于存储图层定义,包括符号系统和渲染属性,扩展名为 .lyr 的文件。
线GPLine由一系列相连的唯一 x,y 坐标对定义的直的或弯曲的形状。
线性单位GPLinearUnit线性单位类型和值,例如米或英尺。
经度GPLong一个整数值。
M 值域GPMDomainM 坐标的最低和最高可能值的范围。
MapServerDEMapServer地图服务器。
镶嵌数据集DEMosaicDataset栅格和影像数据的集合,可以存储、查看和查询数据。镶嵌数据集是地理数据库中的数据模型,用于管理一组以目录形式存储并以镶嵌影像方式查看的栅格数据集(影像)。
镶嵌图层GPMosaicLayer引用镶嵌数据集的图层。
邻近地区GPSANeighborhood用于计算统计数据的各像元周围区域的形状。
网络分析类 FieldMapNAClassFieldMap在网络分析图层(如中转点、设施点和事故点)和点要素类中的位置属性之间建立映射。
网络分析等级设置GPNAHierarchySettings使用两个整数将网络数据集的等级值分成三组的等级属性。第一个整数,high_rank_ends,设置第一组的结束值;第二个数值,low_rank_begin,设置第三组的起始值。
网络分析图层GPNALayer用于表达和解决网络路径问题的特殊图层组。Network Analyst 图层中存储的各子图层代表路径问题和解决方案的某些方面。
网络数据集DENetworkDataset拓扑连接网络元素的集合(边、交汇点和转弯),源于网络源并与网络属性的集合相关联。
网络数据集图层GPNetworkDatasetLayer对网络数据集的引用,包括符号系统和渲染属性。
宗地结构DECadastralFabric宗地结构是存储、维护和编辑相连宗地或宗地网络的连续表面的数据集。
宗地结构图层GPCadastralFabricLayer引用磁盘上宗地结构的图层。此图层作为图层组,将一组相关图层组织到单个图层下。
GPPointx,y 坐标对。
GPPolygon一系列相连的 x,y 坐标对,其中,第一个坐标对和最后一个坐标对相同。
投影文件DEPrjFile存储空间数据的坐标系统信息的文件。
金字塔GPSAGDBEnvPyramid构建金字塔时指定。
半径GPSARadius指定用于插值的周围点。
随机数生成器GPRandomNumberGenerator指定创建随机值时使用的种子和生成器。
栅格波段DERasterBand栅格数据集中的图层。
栅格计算器表达式GPRasterCalculatorExpression栅格计算器表达式。
栅格目录DERasterCatalog在表中定义的栅格数据集的集合;每个表记录定义目录中的一个单独栅格数据集。
栅格目录图层GPRasterCatalogLayer对栅格目录的引用,包括符号系统和渲染属性。
栅格数据图层GPRasterDataLayer栅格数据图层。
栅格数据集DERasterDataset根据一个或多个栅格构建的单个数据集。
栅格图层GPRasterLayer对栅格的引用,包括符号系统和渲染属性。
栅格统计GPSAGDBEnvStatistics构建栅格统计时指定。
栅格数据类型GPRasterBuilder栅格数据是通过指定栅格类型的方式添加到镶嵌数据集中的。栅格类型可与栅格格式一起识别元数据,例如地理配准、采集日期和传感器类型。
记录集GPRecordSet交互表;工具运行时输入表值。
关系类DERelationshipClass地理数据库中对象间关系的详细信息。
重映射GPSARemap定义栅格像元值重分类方法的表。
路径测量事件属性GPRouteMeasureEventProperties在表中指定一个字段来描述由线性参考路径系统测量的事件。
逻辑示意图数据集DESchematicDataset逻辑示意图数据集中包含同一应用领域(例如水网或电网)中的逻辑示意图模板和逻辑示意图要素类的集合。逻辑示意图数据集可位于个人地理数据库、文件地理数据库或 ArcSDE 地理数据库中。
逻辑示意图DESchematicDiagram逻辑示意图。
逻辑示意图文件夹/Schematic 文件夹DESchematicFolder逻辑示意图文件夹。
逻辑示意图图层GPSchematicLayer逻辑示意图图层是复合图层,由基于与创建逻辑示意图时使用的模板相关联的逻辑示意图要素类的要素图层组成。
半变异函数GPSASemiVariogram指定用于量化自相关的两个地点的距离和方向。
ServerConnectionDEServerConnection服务器连接。
ShapefileDEShapefileshapefile 格式的空间数据。
空间参考GPSpatialReference用于存储空间数据集(包括空间域)的坐标系。
SQL 表达式GPSQLExpression定义和操纵关系数据库中的数据的语法。
字符串GPString文本值。
DETable表格数据。
表视图GPTableView用于查看和编辑的表格数据表现形式,存储在内存或磁盘中。
Terrain 图层GPTerrainLayer对 terrain 的引用,包括符号系统和渲染属性。它用于绘制 terrain。
文本文件DETextfile以 ASCII 格式存储的数据。
分块大小GPSAGDBEnvTileSize指定存储在块中的数据的宽度和高度。
时间配置GPSATimeConfiguration指定用于计算特定位置太阳辐射的时间段。
TINDETin一种将地理空间分割为连续的不重叠三角形的矢量数据结构。每个三角形的折点都是具有 x、y 和 z 值的采样数据点。
TIN 图层GPTinLayer对 TIN 的引用,包括拓扑关系、符号系统和渲染属性。
工具DETool地理处理工具。
toolboxDEToolbox地理处理工具箱。
拓扑要素GPSATopoFeatures输入到插值中的要素。
拓扑DETopology定义并强制空间数据的完整性规则的拓扑。
拓扑图层GPTopologyLayer对拓扑的引用,包括符号系统和渲染属性。
值表GPValueTable值列的集合。
变量GPVariant可以包含任意基本类型的数据值:布尔型、日期型、双精度型、长整型和字符串型。
垂直系数GPSAVerticalFactor指定垂直成本系数和垂直相对移动角度之间的关系。
VPF CoverageDEVPFCoverage以矢量产品格式存储的空间数据。
VPF 表DEVPFTable以矢量产品格式存储的属性数据。
WCS CoverageDEWCSCoverage网络覆盖服务 (WCS) 是网络上共享栅格数据集的开放式规范。
加权叠加表GPSAWeightedOverlay 表包含数据的表,可以通过对每一个栅格值使用同一测量尺度并根据其重要性对其进行加权来合并多个栅格。
加权总和GPSAWeightedSum指定用于通过将栅格各自乘以指定的权重并合计在一起来叠加多个栅格的数据。
WMS 地图DEWMSMapWMS 地图。
工作空间DEWorkspace容器,例如地理数据库或文件夹。
XY 值域GPXYDomainx,y 坐标的最低和最高可能值的范围。
Z 值域GPZDomainz 坐标的最低和最高可能值的范围。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GIS开发者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值