(python toolbox)(python tool)

  1. 写代码

#coding=utf8# -*- coding: UTF-8 -*-import arcpyfrom arcpy import envimport osimport sys#################################################fc= arcpy.GetParameterAsText(0)fieldname= arcpy.GetParameterAsText(1)rows = arcpy.da.UpdateCursor(fc,["shape@",fieldname])i=1try:for row in rows:feat = row[0]row[1]=feat.areaarcpy.AddMessage("No:"+str(i)+":"+str(feat.area))rows.updateRow(row)i=i+1del rowsexcept Exception as e:arcpy.AddError(e.message)

  1. 设置参数,过滤器 ,在工具右键属性→参数标签页,找到面图层,如图1-14所示,下面过滤器,设置面参数的要素过滤器,如图1-15所示。
(python toolbox)(python tool)

图1-14 参数设置

(python toolbox)(python tool)

图1-15 参数设置

在图1-14上面参数选择“字段”,下面参数属性“获取自”取“面图层”, 如图1-16所示。过滤器中字段,设置双精度,如图1-17所示

(python toolbox)(python tool)

图1-16 要素类过滤器设置面要素

(python toolbox)(python tool)

图1-17 字段过滤器设置双精度

  1. 发布考虑版本,如1-18所示,可以另存为其他低版本,但不要使用低版本没有的工具。
(python toolbox)(python tool)

图1-18 工具箱版本另存

  1. 导入脚本,如图1-19所示。
(python toolbox)(python tool)

图1-19 工具箱中工具导入脚本

导入脚本后,就不需要外部.py文件,不然需要一块拷贝,不拷贝对应文件,运行工具失败,如图1-20所示,同时需要设置成相对路径,如图1-21所示。导入脚本,需要源代码,虽然可以修改,但不太方便。

(python toolbox)(python tool)

图1-20 工具箱中工具没有导入脚本运行错误

(python toolbox)(python tool)

图1-21 工具箱中设置相对路径

  1. 设置密码

设置密码如图1-22所示,新密码和确认密码一致,自己一定牢记密码。

(python toolbox)(python tool)

图1-22 工具箱中工具密码设置

之后编辑源代码,需要输入密码,没有密码,就不能修改,也可以保护你的知识产权。为大家学习源代码,都没有密码,也没有导入脚本。

Python中参数和过滤器的设置

数据类型

数据类型如表1-2所示。

表1-2 参数数据类型列表

数据类型

datatype 关键字

说明或表现

分析像元大小

analysis_cell_size

栅格工具使用的像元大小。

ArcMap 文档

DEMapDocument

包含一个地图、它的布局以及它的关联图层、表格、图表和报表的文件。

面积单位

GPArealUnit

面积单位类型和值,例如平方米或英亩。

(python toolbox)(python tool)

布尔型

GPBoolean

布尔值。

(python toolbox)(python tool)

像元大小 XY

GPCellSizeXY

定义栅格像元的两侧。

(python toolbox)(python tool)

复合图层

GPCompositeLayer

对多个子图层的引用,包括符号系统和渲染属性,选择.lyr文件

坐标系

GPCoordinateSystem

参考框架,例如 UTM 系统,由一组点、线和/或面,以及一组用于定义二维和三维空间中点的位置的规则组成。

(python toolbox)(python tool)

数据元素

DEType

ArcCatalog 中可见的所有的数据集,含要素类和表格。

(python toolbox)(python tool)

数据集

DEDatasetType

相关数据的集合,通常被分组或存储在一起。所有数据都是数据集。

日期

GPDate

日期值。

(python toolbox)(python tool)

dBASE 表

DEDbaseTable

以 dBASE 格式存储的属性数据。

双精度型

GPDouble

所有浮点数都存储为双精度 64 位值。

加密的字符串

GPEncryptedString

密码加密的字符串。

(python toolbox)(python tool)

要素类

DEFeatureClass

形状类型相同的空间数据的集合:点、多点、折线和面。

要素数据集

DEFeatureDataset

共享公共的地理区域和相同的空间参考系统的要素类集合。

要素图层

GPFeatureLayer

对要素类 的引用,包括符号系统和渲染属性。可以是要素,也可以图层

要素集

GPFeatureRecordSetLayer

工具运行时绘制要素的交互式要素。

字段

Field

表中的列,用于存储单个属性的值。

文件

DEFile

磁盘上的文件。

文件夹

DEFolder

指定数据在磁盘上的存储位置。

图层组

GPGroupLayer

图层组:组织地图、指定高级绘制顺序选项和分享图层用于其他地图变得更加容易。

索引

Index

用于加快在地理数据集和数据库中搜索记录的速度的数据结构。

LAS 数据集

DELasDataset

LAS 数据集存储对磁盘上一个或多个 LAS 文件以及其他表面要素的引用。LAS 文件是一个二进制文件,存储机载激光雷达数据。

LAS 数据集图层

GPLasDatasetLayer

引用磁盘上的 LAS 数据集的图层。此图层可将过滤器应用于 LAS 数据集引用的雷达文件和表面约束。

图层

GPLayer

对数据源的引用,例如 shapefile、coverage、地理数据库要素类或栅格,包括符号系统和渲染属性。

图层文件

DELayer

图层文件存储了图层定义,包括符号系统和渲染属性。

线性单位

GPLinearUnit

线性单位类型和值,例如米或公里。缓冲区等使用

(python toolbox)(python tool)

长整型

GPLong

一个整数值。

GPPoint

x,y 坐标对。

(python toolbox)(python tool)

投影文件

DEPrjFile

存储空间数据的坐标系统信息的文件。

栅格数据图层

GPRasterDataLayer

栅格数据图层。

栅格数据集

DERasterDataset

根据一个或多个栅格构建的单个数据集。

栅格图层

GPRasterLayer

对栅格的引用,包括符号系统和渲染属性。

Shapefile

DEShapefile

shapefile 格式的空间数据。

空间参考

GPSpatialReference

用于存储空间数据集(包括空间域)的坐标系。和坐标系一样

SQL 表达式

GPSQLExpression

定义和操纵关系数据库中的数据的语法。

(python toolbox)(python tool)

字符串

GPString

文本值。

字符串已隐藏

GPStringHidden

以 * 字符掩盖的字符串。和加密的字符串一样

DETable

表格数据。

表视图

GPTableView

用于查看和编辑的表格数据表现形式,存储在内存或磁盘中。

文本文件

(python文本词频统计红楼梦)(python文本词频)

DETextfile

以 ASCII 格式存储的数据。

Tin 图层

GPTinLayer

对 TIN 的引用,包括拓扑关系、符号系统和渲染属性。

工具

DETool

地理处理工具。

Toolbox

DEToolbox

地理处理工具箱。

工作空间

DEWorkspace

容器,例如地理数据库或文件夹。

参数属性说明

  1. 参数Type 选项
  • Required必选 - 必须提供具体值才能执行工具。
  • Optional可选 - 不需要为参数提供值。
  • Derived派生 - 该参数只适用于输出参数(请参阅下文的方向参数)。派生的输出参数不会显示在工具对话框中。
  1. 参数方向(direction)选项
  • Input输入参数
  • Output输出参数
  1. Multivalued多值,false是只能输入一个,True可以输入多个

输入要素图层多值如图1-23所示:

(python toolbox)(python tool)

图1-23 输入要素多值界面

如果是字段,多值界面如图1-24所示。

(python如何选择命令)(如何选取python函数)

(python toolbox)(python tool)

图1-24 字段多值界面

1.7.3 过滤器

存在六种类型的参数过滤器。使用何种类型的过滤器由参数的数据类型决定。

  1. 值列表 - 预定义关键字列表。 用于字符串,如图1-25所示。
(python toolbox)(python tool)

图1-25 字符串的值列表设置

  1. 范围 - 有效数值的范围。包括范围边界值,这表示最小值和最大值也是有效数据。 用于数字,如图1-26所示。
(python toolbox)(python tool)

图1-26 整数的范围设置

  1. 要素类 - 允许的要素类的类型列表:点、多点、折线 (polyline)、面、多面体 (multipatch)、注记和维度,如图1-27所示。
(python toolbox)(python tool)

图1-27 要素类过滤器

  1. 文件 - 有效文件扩展名列表,如 .txt(简单文本文件)或 .csv(分割符是分号”;”。 不用加“.” 文件扩展说明,如图1-28所示。
(python toolbox)(python tool)

图1-28 文件过滤器设置

  1. 字段 - 允许的字段类型列表:短整型、长整型、单精度、双精度、文本、日期、OID、几何、BLOB、栅格、、GUID、全局 ID 和 XML,如图1-29所示。
(python toolbox)(python tool)

图1-29 字段过滤器设置

  1. 工作空间 - 模型参数所允许的工作空间类型,如图1-30所示。
(python toolbox)(python tool)

图1-30 工作空间滤器设置

arcpy开发缺点

  1. 界面定制依靠ArcGIS平台,不够灵活。
  2. 鼠标交互,如没有事件mousemove,mousedown,mouseup,很不方便。
  3. arcpy很多接口没有开发,不像arcengine丰富,只能做一些简单,弱开发,只适合于批量数据处理,不合适于大项目,只能作为大项目辅助开发方式。
  4. 汉字乱码问题比较多,使用ArcGIS Pro中arcpy好多了。

Arcengine C#调用arcpy的工具方法

调用上面的面积计算工具为例,使用Arcengine,C#调用arcpy代码如下,代码下载可以扫码右边的二维码。

private static bool CalArea(IFeatureClass pFeatureClass, string FieldName)

{

string tbxFileName = @"F:\2020book\原始资料\data\1Python基础\工具箱.tbx";

if (!File.Exists(tbxFileName))

{

MessageBox.Show("文件" + tbxFileName + "不存在");

return false;

}

IGeoProcessor gp = new GeoProcessor();

gp.OverwriteOutput = true;

gp.AddOutputsToMap = false;

gp.AddToolbox(tbxFileName);

// Create a variant - data are in the workspace

IVariantArray parameters = new VarArray();

parameters.Add(pFeatureClass);//参数

parameters.Add(FieldName);//参数

string toolname="计算面积";//工具名称,建议工具名称为英文,标签为中文,

//object sev = null;

try

{

gp.Execute(toolname, parameters, null);

}

catch (Exception ex)

{

MessageBox.Show("错误:" + ex.Message + ",\n请自己允许" + tbxFileName + "/" + toolname);

//string errorMsgs = gp.GetMessages(ref sev);

//MessageBox.Show(errorMsgs);

return false;

}

finally

{

gp = null;

//MessageBox.Show("ok");

}

return true;

}

返回True运行成功,false运行失败,函数的参数都可以修改为object类型。

声明:我要去上班所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流,版权归原作者所有,原文出处。若您的权利被侵害,请联系删除。

本文标题:(python toolbox)(python tool)
本文链接:https://www.51qsb.cn/article/7262.html

(0)
打赏微信扫一扫微信扫一扫QQ扫一扫QQ扫一扫
上一篇2022-09-20
下一篇2022-09-16

你可能还想知道

发表回复

登录后才能评论