Arcgis Engine二次开发用python可以吗
发布时间:2025-05-16 06:10:41 发布人:远客网络
一、Arcgis Engine二次开发用python可以吗
就像名字一样,自定义工具箱是由个人创建的工具箱,就像下面这样,可以理解成一个.tbx后缀的压缩包,每一个工具箱中都可以添加多个工具集、脚本工具甚至模型构建器工具。
1.1如何添加自定义工具箱(熟悉可跳过)
第一步:右键点击 ArcToolbox->添加工具箱
第二步:在打开的添加工具箱窗口中选中需要添加的工具,然后点击右下角的打开即可。
点击右上角的红色工具箱符号,可以新建并重命名一个工具箱。
我们这里新创建了一个海怪工具箱,用于之后的教程演示。
新创建的工具箱就像一个大箱子,箱子呢是用来装工具的,你可以直接在工具箱中右键,然后点击添加,再点击脚本,进而创建一个脚本工具;
亦或是右键,点击新建,再点击工具集,创建一个可以自定义名称的工具集,然后在工具集里新建一个脚本工具。
这里添加的脚本工具只是一个空壳,我们后面会继续完善。
新建的工具箱位于../Chapter7/海怪工具箱.tbx。
工具箱由三部分组成,其中有两部分需要我们来控制:
一是输入界面:确定工具箱输入界面的参数定义和设置;
二是 Python源代码:功能的实现,为.py后缀的脚本文件;
三是对参数行为提供额外控制的可选验证代码,其位于工具箱中(这部分自带,基本上不用修改)。
所以下面的重点就是输入界面和 Python源代码。
工具箱输入界面,或者说图形交互界面(GUI),就像下面的几张图一样,从该界面我们可以控制工具的行为,自定义输入界面然后配合 Python脚本,可以实现多种客制化的功能。
简单来说,你可以认为输入界面是依托于 Arcmap的“前端”,脚本代码就是负责运行的“后端”。
为方便演示,制作一个非常简单的工具箱,它的功能呢就是把输入的要素类(数据库或者 shp)再导出来而已,是完全没有用的导入导出功能啦,不过作为演示还是非常不错的。
制作完成后的导入导出工具的界面
在工具箱中,右键点击添加,再点击脚本,然后修改名称,修改成你想要的名字,勾选存储相对路径名,然后点击下一页。
然后添加脚本文件,添加该脚本文件../Chapter7/toolscript/input_and_output.py,读者可以在最后的下载包中找到该文件。
控制用户交互界面。ArcGIS在这里内置了一整套简单但是实用的图形控件,比如输入菜单、下拉框、多选框、单选等,借由这些图形控件我们可以控制脚本工具的图形交互界面。
我们这里使用的脚本功能非常简单,上面也有说到:输入一个矢量要素类,不做任何处理,然后输出一个矢量要素类。
为了匹配这个脚本,我们需要设置一个输入图层的控件,同时为了能顺利的输出,也需要一个输出图层的控件,注意一个是输入一个是输出。
从下图可以看到,左边(左边的橙色框)是显示名称,其中输入输出控件的名称以及输入控件的名称,这里命名为输入要素和输出要素;然后在右边(右边的橙色框)的数据类型下拉框中,我们选择要素图层,这里只能做选择,不能任意输入。
选中输入要素(变成蓝色),然后可以看到下方(下方橙色框)的参数属性设置选项卡,这里可以对参数进行调整。
①类型:有三种,一般只会用到 Required和 Optional,表示必须和可选,用于控制参数是否可以忽略不填;
②方向:两种,Input和 Output,表示输入和输出,大部分情况都是使用 Input来获得参数,Output用于获得最后的成果数据,像是矢量、栅格或者图表;
③多值:Yes或者 No,用于输入多个相同类型的数据,工具打开后就是下面这样,在输入要素中可输入多个要素类;
④默认:设置一个控件的默认值,直接输入即可。可配合多值一同使用,使用;(英文的分号)分开,
结果如下,可以看到一打开该工具就已经填充上了预设的多个默认值(报错是因为数据类型不是要素图层);
⑤环境:工具箱的环境设置,比如掩膜、容差范围、默认数据库位置等,一般不预先设置;
⑥过滤器:选择文件类型可以在选择文件时只显示特定格式的文件;
⑦获取自:指定数据的获取源。这是个什么意思呢?比如我们想要获取图层A的某个字段,获取源就是图层A。
以下面这种图作为例子,新增名为字段的控件(上方的橙色框),数据类型也是字段,然后参数属性中获取自选择输入要素(下方橙色框)。
点击完成后,打开脚本工具。在输入要素框中选择一个图层,然后再点击获取字段,如下就可以选择图层中的字段了。
⑧符号系统:在最下面还有一个符号系统,通常只能作用于输出的矢量图层(方向:Output),可为输出图层指定设置好的 lyr文件样式。
点击右下方的完成,那么脚本工具的输入界面就完成了。
工具箱输入界面和 Python代码要相互配合才行,工具箱界面中的输入、输出以及各种各样的参数,在 Python脚本文件中都得一一对应上,将输入界面中的各个参数传给 Python脚本,这样才能让 Python脚本按照预期的效果正常运行。
看上去有点麻烦,但实际上 arcpy中提供了现成的函数就可以直接获得参数。
至于如何对接参数,我们使用刚刚的那个脚本文件举例:
../Chapter7/toolscript/input_and_output.py
input_lyr= arcpy.GetParameterAsText(0)
output= arcpy.GetParameterAsText(1)
if __name__=='__main__':
lyr= arcpy.mapping.Layer(input_lyr)
arcpy.CopyFeatures_management(lyr, output)
▶1◀:arcpy提供了 GetParameterAsText(index)函数,该函数根据输入界面的排序号码获得指定的参数。比如 GetParameterAsText(0)获得的就是输入图层参数, GetParameterAsText(1)获得的就是第二个参数,也就是输出图层参数。
GetParameterAsText(index)从输入界面获得的参数都会转变成字符串,没错都是字符串。
如果你只是输入输出地址这种,那么没有问题,因为地址本来就是字符串,但是如果你设置了一个选择长度范围的长整型的控件、亦或是某种布尔值选择,最后输入到 python脚本这里都会变成字符串。
整数变成字符串,使用 int(str)规避;
布尔型变成字符串,True变成了"True",False变成了"False",这样就不能判断真假了,需要写一个判断语句或者随便你,方法很多;
还有就是一个输入控件多值的情况,所有值根据先后连接成一个字符串,中间由、(英文分号)间隔,可以使用 split函数分开;
二、软件开发有什么要求
零基础学习java可按照这份大纲来进行学习
熟练掌握Java的开发环境与编程核心知识
2.熟练运用Java面向对象知识进行程序开发
3.对Java的核心对象和组件有深入理解
6.能综合运用所学知识完成一个项目
1、基本数据类型,运算符,数组,掌握基本数据类型转换,运算符,流程控制。
2、数组,排序算法,Java常用API,类和对象,了解类与对象,熟悉常用API。
3、面向对象特性,集合框架,熟悉面向对象三大特性,熟练使用集合框架。
1.熟练掌握数据库和MySQL核心技术
3.熟练运用JSP及Servlet技术完成网站后台开发
4.深入理解缓存,连接池,注解,反射,泛型等知识
5.能够运用所学知识完成自定义框架
1、数据库知识,范式,MySQL配置,命令,建库建表,数据的增删改查,约束,视图,存储过程,函数,触发器,事务,游标,建模工具。
2、深入理解数据库管理系统通用知识及MySQL数据库的使用与管理。为Java后台开发打下坚实基础。Web页面元素,布局,CSS样式,盒模型,JavaScript,jQuery。
3、掌握前端开发技术,掌握jQuery。
4、Servlet,EL表达式,会话跟踪技术,过滤器,FreeMarker。
5、掌握Servlet相关技术,利用Servlet,JSP相关应用技术和DAO完成B/S架构下的应用开发。
7、掌握JAVA高级应用,利用泛型,注解,枚举完成自己的CRUD框架开发为后续框架学习做铺垫。
8、单点登录,支付功能,项目整合,分页封装熟练运用JSP及Servlet核心知识完成项目实战。
1.熟练运用Linux操作系统常见命令及完成环境部署和Nginx服务器的配置
2.熟练运用JavaEE三大核心框架:Spring,SpringMVC,MyBatis
3.熟练运用Maven,并使用SpringBoot进行快速框架搭建
4.深入理解框架的实现原理,Java底层技术,企业级应用等
5.使用Shiro,Ztree和Spring,SpringMVC,Mybaits完成企业项目
1、Linux安装配置,文件目录操作,VI命令,管理,用户与权限,环境部署,Struts2概述,hiberante概述。
2、Linux作为一个主流的服务器操作系统,是每一个开发工程师必须掌握的重点技术,并且能够熟练运用。
3、SSH的整合,MyBatis,SpringMVC,Maven的使用。
4、了解AOP原理,了解中央控制器原理,掌握MyBatis框架,掌握SSM框架的整合。
5、Shiro,Ztree,项目文档,项目规范,需求分析,原型图设计,数据库设计,工程构建,需求评审,配置管理,BUG修复,项目管理等。
6、独立自主完成一个中小型的企业级综合项目的设计和整体架构的原型和建模。独立自主完成一个大型的企业级综合项目,并具备商业价值
三、软件开发工程师是什么
1、软件开发工程师是从事软件开发相关工作的人员的统称。软件开发工程师的技术要求是比较全面的,除了最基础的编程语言(C语言/C++/JAVA等)、数据库技术(SQL/ORACLE/DB2等)、.NET平台技术、C#、C/S B/S程序开发,还有诸多如JAVA SCRIPT、AJAX、HIBERNATE、SPRING、J2EE、WEB SERVICE、STRUTS等前沿技术。
2、① RFID相关应用软件、信息管理类软件的设计、研发、维护、安装实施;
3、③根据要求进行软件概要设计、详细设计、编码、单元测试工作及说明文档的编写
4、①熟练使用VC++、C#或Java编程;熟悉Oracle/SQL Server等数据库开发;熟悉Web系统开发;
5、②熟练使用ArcGIS、ArcSDE、MapObjects,并用其进行过开发;熟悉了解移动设备嵌入式GIS开发技术。
6、③精通Oracle/Microsoft SQL SERVER等数据库管理;从事DBA工作,有丰富的主机与操作系统管理、数据库管理、存储管理与规划、安全管理与规划经验;精通PL/SQL编程,熟悉数据库建模。
7、④开发过基于Weblogic或Websphere应用服务器的应用程序;熟悉WebLogic/Websphere的安装、配置、故障处理和调优;具有J2EE相关开发经验;熟悉weblogic集群的配置和管理;有weblogic administation认证证书者优先。