使用python制作ArcGIS插件(5)其他技巧
by 李远祥
使用python做插件开发,除了了解ArcToolBox工具之外,还需要在了解ArcPy的相关函数和接口。只有掌握了这些,才可以顺利的开发ArcGIS插件。
但是,很多程序开发者真的不喜欢python的写法,尤其不习惯,既希望能够使用ArcPy的简洁用法,又希望在其他逻辑操作中使用自己熟悉的语言。其实python的优势之处在于其粘合度非常好,可以充分利用一些其他语言的功能。
假如程序员非常熟悉VB这个古老的语言,之前已经有一些逻辑实现在VB上完成了,希望能够很好的迁移到python中来,如果什么都得重新实现,那实在令人失望。下面介绍一种比较有效的方式去调用VB或者VBScript。
ArcGIS Desktop在相当的一段时间内允许使用VBScript去扩展其功能,并且在很多的工具里面都允许使用VBScript。以前有相当的这些成果,都可以使用python去调用这些既有的成果。
看以下一个excel表格的内容,这是一个机场点的数据,一般情况下会使用十进制度来描述经纬度,当然也有例外的时候,例如下图这样
用字母表达东经北纬等,维度的前两位是整度,后面是小数位;经度的规律也是类似的。如果要将这个表格进行落地,将其坐标转为点数据,那么需要对这些非十进制度进行转换。常规的流程是使用excel转表工具先转为arcgis的table,然后对table新增两个double字段,用作重新计算X和Y,之后用xy data工具转为点数据。
这个流程问题不大,但主要是经纬度的转换,在Python下面做远没有在VB脚本下做那么简单。如果我们希望用最简单的方式去实现的话,只是这个转换工作使用VBScript,其他部分还是使用Python,那这样就最优的方案。ArcGIS是允许这样执行的。我们来看以下代码
#写入经度 airPort_X_codeblock="""dim result result = Mid( [经度],2,3 ) if Left( result ,1 )=0 then result= Mid(result,2,2 ) end if result =result+"."+ Mid( [经度],5,2 ) result = result+Right( [经度],1 ) if Left( [经度],1 )="W" then result="-"+result end if""" arcpy.CalculateField_management(AB.airPortTableURL,"X","result","VB",airPort_X_codeblock) #写入纬度 airPort_Y_codeblock="""dim result result = Mid( [纬度],2,2 ) if Left( result ,1 )=0 then result= Mid(result,2,2 ) end if result =result+"."+ Mid( [纬度],4,2 ) result = result+Right( [纬度],1 ) if Left( [经度],1 )="S" then result="-"+result end if""" arcpy.CalculateField_management(AB.airPortTableURL,"Y","result","VB",airPort_Y_codeblock) #创建XY图层,还没加入坐标系统选择功能 #spRef = r"Coordinate Systems\Geographic Coordinate Systems\world\WGS 1984.prj" arcpy.MakeXYEventLayer_management(AB.airPortTableURL,"X","Y",AB.airPortTable,mapLayerInfo.XYRef)
上述代码就是将VBScript代码混在ArcPy中进行调用,可以看到使用的是字段计算器,其中有一项是选择脚本语言,那么可以选择VB项进行调用。
ArcGIS有很多工具都支持混合脚本调用。这些都是非常重要的技巧,可以尽量使用自己熟悉的工具或者使用已有的成果来实现功能。
使用python制作ArcGIS插件(5)其他技巧的更多相关文章
-
使用python制作ArcGIS插件(4)界面交互
使用python制作ArcGIS插件(4)界面交互 by 李远祥 插件界面部分,除了一开始在设计器中设计的这些界面元素之外,还可以与操作系统进行一些输入输出的交互,这部分的实现全部在pythonadd ...
-
使用python制作ArcGIS插件(3)ArcPy的使用说明
使用python制作ArcGIS插件(3)ArcPy的使用说明 by 李远祥 ArcPy 是一个以成功的 arcgisscripting 模块为基础并继承了 arcgisscripting 功能进而构 ...
-
使用python制作ArcGIS插件(2)代码编写
使用python制作ArcGIS插件(2)代码编写 by 李远祥 上一章节已经介绍了如何去搭建AddIn的界面,接下来要实现具体的功能,则到了具体的编程环节.由于使用的是python语言进行编程,则开 ...
-
使用python制作ArcGIS插件(1)工具介绍
使用python制作ArcGIS插件(1)工具介绍 by 李远祥 ArcGIS从10.0开始支持addin(ArcGIS软件中又叫作加载项)的方式进行插件制作.相对于以往9.x系列,addin的无论是 ...
-
使用python制作ArcGIS插件(6)案例分析
利用ArcPy制作航空制图插件 By 李远祥 这是笔者两年多前写的一个面向航路图做的一个插件,基本上将航路图的制作进行流程化,制作成为可交互的插件,只要有航路和机场的信息,就可以直接生成一个航路图,每 ...
-
《零基础学习Python制作ArcGIS自定义工具》课程简介
Python for ArcGIS Python for ArcGIS是借助Python语言实现ArcGIS自动化行为的综合,它不止是如课程标题所述的“制作ArcGIS自定义工具”,还包括使用Pyth ...
-
ArcGis Python脚本——ArcGIS 中使用的 Python 是什么版本
Python 编程语言用于自 9.0 起的各版本 ArcGIS 中,并被整合到 ArcMap 和 ArcGIS for Server 的自动安装中. ArcGIS 将在完整安装过程中安装下列 Pyth ...
-
Python 内编写类的各种技巧和方法
Python 内编写类的各种技巧和方法 简介 有关 Python 内编写类的各种技巧和方法(构建和初始化.重载操作符.类描述.属性访问控制.自定义序列.反射机制.可调用对象.上下文管理.构建描述符对象 ...
-
转载:用python爬虫抓站的一些技巧总结
原文链接:http://www.pythonclub.org/python-network-application/observer-spider 原文的名称虽然用了<用python爬虫抓站的一 ...
随机推荐
-
Python实战项目网络爬虫 之 爬取小说吧小说正文
本次实战项目适合,有一定Python语法知识的小白学员.本人也是根据一些网上的资料,自己摸索编写的内容.有不明白的童鞋,欢迎提问. 目的:爬取百度小说吧中的原创小说<猎奇师>部分小说内容 ...
-
AI调色板
AI新建图层时,要选择CMYK模式,才能出现如下图所示调色板,如果选RGB模式,那么调整颜色的时候只能通过输入RGB.
-
(1)建立一个名叫Cat的类: 属性:姓名、毛色、年龄 行为:显示姓名、喊叫 (2)编写主类: 创建一个对象猫,姓名为“妮妮”,毛色为“灰色”,年龄为2岁,在屏幕上输 出该对象的毛色和年龄,让该对象调用显示姓名和喊叫两个方法。
package lianxi; public class Cat { String Name, Color; int Age; void getName() { System.out.println( ...
-
Flv 视频格式(转)
最近要用到flv,整理了一些flv格式的资料,供参考. flv文件主要由两部分组成:header和body. 1.header header部分记录了flv的类型.版本等信息,是flv的开头,一般都差 ...
-
devi into python 笔记(六)正则表达式 原始字符串
字符串函数replace: #string.replace: #字符串的replace方法:替换子串,不改变原来的字符串 s = "broad road" #打印出来会发现不单单是 ...
-
IE6 margin 双倍边距解决方案
一.什么是双边距Bug? 先来看图: 我们要让绿色盒模型在蓝色盒模型之内向左浮动,并且距蓝色盒模型左侧100像素.这个例子很常见,比如在网页布局中,侧边栏靠左侧内容栏浮动,并且要留出内容栏的宽度.要实 ...
-
ProgressWheelDialogUtil【ProgressWheel Material样式进度条对话框】
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 简单封装网络请求时的加载对话框以及上传.下载文件的进度加载对话框. 效果图 代码分析 ProgressWheel : 自定义view ...
-
Linux之V4L2基础编程【转】
转自:https://www.cnblogs.com/emouse/archive/2013/03/04/2943243.html 本文内容来源于网络,本博客进行整理. 1. 定义 V4L2(Vide ...
-
Excel导出文件流下载
Controller.cs @CrossOrigin(allowCredentials="true", allowedHeaders="*", methods= ...
-
SQL Fundamentals || Single-Row Functions || 数字函数number functions
SQL Fundamentals || Oracle SQL语言 SQL Fundamentals: Using Single-Row Functions to Customize Output使用单 ...