使用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)其他技巧的更多相关文章

  1. 使用python制作ArcGIS插件(4)界面交互

    使用python制作ArcGIS插件(4)界面交互 by 李远祥 插件界面部分,除了一开始在设计器中设计的这些界面元素之外,还可以与操作系统进行一些输入输出的交互,这部分的实现全部在pythonadd ...

  2. 使用python制作ArcGIS插件(3)ArcPy的使用说明

    使用python制作ArcGIS插件(3)ArcPy的使用说明 by 李远祥 ArcPy 是一个以成功的 arcgisscripting 模块为基础并继承了 arcgisscripting 功能进而构 ...

  3. 使用python制作ArcGIS插件(2)代码编写

    使用python制作ArcGIS插件(2)代码编写 by 李远祥 上一章节已经介绍了如何去搭建AddIn的界面,接下来要实现具体的功能,则到了具体的编程环节.由于使用的是python语言进行编程,则开 ...

  4. 使用python制作ArcGIS插件(1)工具介绍

    使用python制作ArcGIS插件(1)工具介绍 by 李远祥 ArcGIS从10.0开始支持addin(ArcGIS软件中又叫作加载项)的方式进行插件制作.相对于以往9.x系列,addin的无论是 ...

  5. 使用python制作ArcGIS插件(6)案例分析

    利用ArcPy制作航空制图插件 By 李远祥 这是笔者两年多前写的一个面向航路图做的一个插件,基本上将航路图的制作进行流程化,制作成为可交互的插件,只要有航路和机场的信息,就可以直接生成一个航路图,每 ...

  6. 《零基础学习Python制作ArcGIS自定义工具》课程简介

    Python for ArcGIS Python for ArcGIS是借助Python语言实现ArcGIS自动化行为的综合,它不止是如课程标题所述的“制作ArcGIS自定义工具”,还包括使用Pyth ...

  7. ArcGis Python脚本——ArcGIS 中使用的 Python 是什么版本

    Python 编程语言用于自 9.0 起的各版本 ArcGIS 中,并被整合到 ArcMap 和 ArcGIS for Server 的自动安装中. ArcGIS 将在完整安装过程中安装下列 Pyth ...

  8. Python 内编写类的各种技巧和方法

    Python 内编写类的各种技巧和方法 简介 有关 Python 内编写类的各种技巧和方法(构建和初始化.重载操作符.类描述.属性访问控制.自定义序列.反射机制.可调用对象.上下文管理.构建描述符对象 ...

  9. 转载:用python爬虫抓站的一些技巧总结

    原文链接:http://www.pythonclub.org/python-network-application/observer-spider 原文的名称虽然用了<用python爬虫抓站的一 ...

随机推荐

  1. Spring--Bean scope

    singleton, prototype,request, session, global session bean.xml: <?xml version="1.0" enc ...

  2. Java面向对象设计

    1.少了程序入口会在输出的地方报这个错: Syntax error, insert "... VariableDeclaratorId" to complete FormalPar ...

  3. 苹果App Store开发者帐户从申请,验证,到发布应用(4)

    苹果App Store应用内支付(In-App Purchase) IAP简介 IAP的全称是In-App Purchase,应用内付费.这种业务模式允许用户免费下载试用,对应用内提供的商品选择消费, ...

  4. C# 计算文件的HASH

    /// <summary> /// 提供用于计算指定文件哈希值的方法 /// <example>例如计算文件的MD5值: /// <code> /// String ...

  5. C# TPL学习

    程序Ⅰ:通过Task类创建新线程 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 ...

  6. Python3基础 frozenset() 创建一个不可更改的集合

    镇场诗: 诚听如来语,顿舍世间名与利.愿做地藏徒,广演是经阎浮提. 愿尽吾所学,成就一良心博客.愿诸后来人,重现智慧清净体.-------------------------------------- ...

  7. OC纯代码全手工打造ScroolView实现翻页

    OC纯代码全手工打造ScroolView实现翻页 1. 概述 分为三部分: 上部标题ScrollView 下部内容ScrollView 上部当前页 标示线 2. 效果 上下两部分都随着手势的滑动一块滑 ...

  8. 移动App Crash的测试用例设计

    一些通用的触发移动App Crash的测试场景,如下: 1. 验证在有不同的屏幕分辨率, 操作系统 和运营商的多个设备上的App行为. 2. 用新发布的操作系统版本验证App的行为. 3. 验证在如隧 ...

  9. Intellij Idea 配置并发布tomcat项目

    作为一个菜鸟,我还是很想提高自己.但是既然说了是菜鸟,当然很容易半路折翅 从刚听说intellij idea(以下简称 idea)到现在,应该有超过一个月了吧,我的电脑装了三四次系统了(刚换了一台电脑 ...

  10. 在 AngularJS 中将 XML 转换为 JSON

    在这篇文章中,我们将谈谈如何在Angular JS中将XML文件转换为JSON.大家都知道Angular JS是开发应用程序的JavaScript框架.所以基本上Angular  JS期望得 到的响应 ...