使用python制作ArcGIS插件(5)其他技巧
使用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爬虫抓站的一 ...
随机推荐
- MAC使用GITHUB
作者:珊姗是个小太阳链接:https://www.zhihu.com/question/20070065/answer/79557687来源:知乎著作权归作者所有,转载请联系作者获得授权. #什么是 ...
- sublime C++ build system配置体验
近期准备实习,于是终于步入了sublime的阵营,sublime确实性感. 在配置win7下C++编译运行集成环境的时候遇到点问题,于是接触了一下JSON格式,最后终于自己搞定了.. 参考文档:htt ...
- (简单) POJ 3076 Sudoku , DLX+精确覆盖。
Description A Sudoku grid is a 16x16 grid of cells grouped in sixteen 4x4 squares, where some cells ...
- ICE BOX 配置,使用----第一篇
一 理论部分 (1) 为什么要使用icebox? icebox server代替了通常的server. icebox是为了方便集中管理多个ice服务而建立的. 它通过使用icebox服务器,把ice服 ...
- MySQL master/slave 模式
1 .复制 Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的 数据复制到其它主机(slaves)上,并重 ...
- 128階數的Shunt音量控制器
源:128階數的Shunt音量控制器 紅外線遙控 - 256階Shunt音量及控制及音源 選擇器
- IFrame跨域访问自定义高度
由于JS禁止跨域访问,如何实现不同域的子页面将高度返回给父页面本身,是解决自定义高度的难点. JS跨域访问问题描述:应用A访问应用B的资源,由于A,B应用分别部署在不同应用服务器(tomcat)上,属 ...
- CSS排序工具csscomb
一. css写久了以后感觉需要按照某种规则或者说顺序来,便于开发和维护.O(∩_∩)O哈哈~ 找到一个 http://csscomb.com/ CSS排序总结: 1. 对css样式排序; 2. 按样式 ...
- 利用STM32F唯一96bit序列号实现反拷贝加密的源代码公开(转)
源:利用STM32F唯一96bit序列号实现反拷贝加密的源代码公开 //---------------------------------------------------------------- ...
- STM32中的位带(bit-band)操作(转)
源:STM32中的位带(bit-band)操作 支持了位带操作后,可以使用普通的加载/存储指令来对单一的比特进行读写.在 CM3 中,有两个区中实现了位带.其中一个是 SRAM 区的最低 1MB 范围 ...