百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程字典 > 正文

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

toyiye 2024-09-12 20:57 3 浏览 0 评论

  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类型。

相关推荐

为何越来越多的编程语言使用JSON(为什么编程)

JSON是JavascriptObjectNotation的缩写,意思是Javascript对象表示法,是一种易于人类阅读和对编程友好的文本数据传递方法,是JavaScript语言规范定义的一个子...

何时在数据库中使用 JSON(数据库用json格式存储)

在本文中,您将了解何时应考虑将JSON数据类型添加到表中以及何时应避免使用它们。每天?分享?最新?软件?开发?,Devops,敏捷?,测试?以及?项目?管理?最新?,最热门?的?文章?,每天?花?...

MySQL 从零开始:05 数据类型(mysql数据类型有哪些,并举例)

前面的讲解中已经接触到了表的创建,表的创建是对字段的声明,比如:上述语句声明了字段的名称、类型、所占空间、默认值和是否可以为空等信息。其中的int、varchar、char和decimal都...

JSON对象花样进阶(json格式对象)

一、引言在现代Web开发中,JSON(JavaScriptObjectNotation)已经成为数据交换的标准格式。无论是从前端向后端发送数据,还是从后端接收数据,JSON都是不可或缺的一部分。...

深入理解 JSON 和 Form-data(json和formdata提交区别)

在讨论现代网络开发与API设计的语境下,理解客户端和服务器间如何有效且可靠地交换数据变得尤为关键。这里,特别值得关注的是两种主流数据格式:...

JSON 语法(json 语法 priority)

JSON语法是JavaScript语法的子集。JSON语法规则JSON语法是JavaScript对象表示法语法的子集。数据在名称/值对中数据由逗号分隔花括号保存对象方括号保存数组JS...

JSON语法详解(json的语法规则)

JSON语法规则JSON语法是JavaScript对象表示法语法的子集。数据在名称/值对中数据由逗号分隔大括号保存对象中括号保存数组注意:json的key是字符串,且必须是双引号,不能是单引号...

MySQL JSON数据类型操作(mysql的json)

概述mysql自5.7.8版本开始,就支持了json结构的数据存储和查询,这表明了mysql也在不断的学习和增加nosql数据库的有点。但mysql毕竟是关系型数据库,在处理json这种非结构化的数据...

JSON的数据模式(json数据格式示例)

像XML模式一样,JSON数据格式也有Schema,这是一个基于JSON格式的规范。JSON模式也以JSON格式编写。它用于验证JSON数据。JSON模式示例以下代码显示了基本的JSON模式。{"...

前端学习——JSON格式详解(后端json格式)

JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScriptProgrammingLa...

什么是 JSON:详解 JSON 及其优势(什么叫json)

现在程序员还有谁不知道JSON吗?无论对于前端还是后端,JSON都是一种常见的数据格式。那么JSON到底是什么呢?JSON的定义...

PostgreSQL JSON 类型:处理结构化数据

PostgreSQL提供JSON类型,以存储结构化数据。JSON是一种开放的数据格式,可用于存储各种类型的值。什么是JSON类型?JSON类型表示JSON(JavaScriptO...

JavaScript:JSON、三种包装类(javascript 包)

JOSN:我们希望可以将一个对象在不同的语言中进行传递,以达到通信的目的,最佳方式就是将一个对象转换为字符串的形式JSON(JavaScriptObjectNotation)-JS的对象表示法...

Python数据分析 只要1分钟 教你玩转JSON 全程干货

Json简介:Json,全名JavaScriptObjectNotation,JSON(JavaScriptObjectNotation(记号、标记))是一种轻量级的数据交换格式。它基于J...

比较一下JSON与XML两种数据格式?(json和xml哪个好)

JSON(JavaScriptObjectNotation)和XML(eXtensibleMarkupLanguage)是在日常开发中比较常用的两种数据格式,它们主要的作用就是用来进行数据的传...

取消回复欢迎 发表评论:

请填写验证码