百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

ArcGIS 一个独立运行的Python程序编写和打包

itomcoil 2025-08-05 18:55 2 浏览

  1. 写代码

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

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

图1-14 参数设置

图1-15 参数设置

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

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

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

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

图1-18 工具箱版本另存

  1. 导入脚本,如图1-19所示。

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

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

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

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

  1. 设置密码

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

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

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

Python中参数和过滤器的设置

数据类型

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

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

数据类型

datatype 关键字

说明或表现

分析像元大小

analysis_cell_size

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

ArcMap 文档

DEMapDocument

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

面积单位

GPArealUnit

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

布尔型

GPBoolean

布尔值。

像元大小 XY

GPCellSizeXY

定义栅格像元的两侧。

复合图层

GPCompositeLayer

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

坐标系

GPCoordinateSystem

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

数据元素

DEType

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

数据集

DEDatasetType

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

日期

GPDate

日期值。

dBASE 表

DEDbaseTable

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

双精度型

GPDouble

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

加密的字符串

GPEncryptedString

密码加密的字符串。

要素类

DEFeatureClass

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

要素数据集

DEFeatureDataset

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

要素图层

GPFeatureLayer

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

要素集

GPFeatureRecordSetLayer

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

字段

Field

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

文件

DEFile

磁盘上的文件。

文件夹

DEFolder

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

图层组

GPGroupLayer

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

索引

Index

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

LAS 数据集

DELasDataset

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

LAS 数据集图层

GPLasDatasetLayer

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

图层

GPLayer

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

图层文件

DELayer

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

线性单位

GPLinearUnit

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

长整型

GPLong

一个整数值。

GPPoint

x,y 坐标对。

投影文件

DEPrjFile

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

栅格数据图层

GPRasterDataLayer

栅格数据图层。

栅格数据集

DERasterDataset

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

栅格图层

GPRasterLayer

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

Shapefile

DEShapefile

shapefile 格式的空间数据。

空间参考

GPSpatialReference

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

SQL 表达式

GPSQLExpression

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

字符串

GPString

文本值。

字符串已隐藏

GPStringHidden

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

DETable

表格数据。

表视图

GPTableView

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

文本文件

DETextfile

以 ASCII 格式存储的数据。

Tin 图层

GPTinLayer

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

工具

DETool

地理处理工具。

Toolbox

DEToolbox

地理处理工具箱。

工作空间

DEWorkspace

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

参数属性说明

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

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

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

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

图1-24 字段多值界面

1.7.3 过滤器

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

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

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

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

图1-26 整数的范围设置

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

图1-27 要素类过滤器

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

图1-28 文件过滤器设置

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

图1-29 字段过滤器设置

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

图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学习教程-第七节内容

函数(重点)基本概念Python函数的语法是编程中的核心概念之一,它允许你将代码块封装为可重复调用的单元。基本语法定义函数:示例参数类型位置参数(PositionalArguments)按参数定义...

Python排序90%人只会用sorted()?这7个高阶技巧让你代码效率翻倍

高效处理数据的关键,往往从掌握排序开始。排序操作在Python编程中的重要性常被低估——直到你面对一个杂乱无章的数据集。作为数据处理的核心操作之一,排序效率直接决定了程序性能和代码可读性。无论你正在清...

第四章:Python函数

4.1函数的定义与调用4.1.1理论知识函数是组织好的、可重复使用的代码块,用于执行特定的任务。它可以提高代码的复用性和可维护性。在Python中,定义函数使用def关键字,其基本语法如下:def...

ArcGIS 一个独立运行的Python程序编写和打包

写代码#coding=utf8#-*-coding:UTF-8-*-importarcpyfromarcpyimportenvimportosimportsys##########...

python入门到脱坑经典案例—计算三角形的面积

下面为大家详细讲解如何用Python计算三角形面积。我们会从最基础的数学公式开始,逐步深入编程实现,并涵盖多个实用版本。以下是完整的教学指南:1.数学原理回顾三角形面积公式:面积=(底边长度...

Python运算技巧:10种计算列表平方的高效方法

1.使用for循环此方法遍历列表中的每个数字,使用**运算符计算其平方,然后将结果添加到新的列表中。2.使用列表推导式此方法使用列表推导式,这是一种更简洁的方式,可以在现有列表的每个项目上执行操作...

墙裂推荐,5个学习Python编程最佳的开源库

学习Python少不了的就是项目,我在GitHUB上找了几个比较好的开源库,大家可以跟着去学习。1、learn-python3这个存储库一共有19本Jupyter笔记本。它涵盖了字符串和条件之类的基础...

使用Python玩转ftplib库:实现ftp文件传输自动化全攻略

大家好!在日常工作中都会使用到ftp功能,用于上传和下载文件等,本章主要介绍Python的标准库ftplib来实现FTP文件传输,帮助我们实现ftp自动化。一、ftplib库核心函数速查表1连接与登...

Python零基础入门学习23:常用第三方库之图像处理库Pillow

注:本文所有代码均经过Python3.7实际运行检验,保证其严谨性。本文约2000字,阅读时间约为4分钟。Pillow库的概述Pillow库是Python最好的图像处理库,可能是使用频率最高的图像处...

Python编程之BeautifulSoup库

#头条创作挑战赛#BeautifulSoup是一个可以从HTML或XML文件中快速提取数据的Python库。它能够通过转从入门到精通Python网络爬虫框架Scrapy38换器实...

Python3 新一代Http请求库Httpx使用(详情版)

我们经常使用Python语言的朋友们都清楚,requests是使用率非常高的HTTP库,甚至更早Python2中使用的是urllib、urllib2,也给我们提供了许多方便的功能。但是自从...

小白也可以玩的Python爬虫库,收藏一下

最近,微软开源了一个项目叫「playwright-python」,作为一个兴起项目,出现后受到了大家热烈的欢迎,那它到底是什么样的存在呢?今天为你介绍一下这个传说中的小白神器。Playwright是...

apscheduler,一个超厉害的 Python 库!

大家好,今天为大家分享一个超厉害的Python库-apscheduler。Github地址:https://github.com/agronholm/apschedulerAPSchedule...

给3D Slicer添加Python第三方插件库

对临床医生或医学影像算法研究人员来说,3DSlicer是不错的临床实践或科研工具。随着人工智能和深度学习技术的普及,python已经作为原型开发和验证的计算机编程语言。3DSlicer自带pyt...

Paramiko:一个非常实用的Python库

前言Python的Paramiko库,它是一个用于实现SSHv2协议的客户端和服务器的库。通过使用Paramiko,我们可以在Python程序中轻松地实现远程服务器的管理、文件传输等功能。特别做智能硬...