使用python制作ArcGIS插件(3)ArcPy的使用说明
使用python制作ArcGIS插件(3)ArcPy的使用说明
by 李远祥
ArcPy 是一个以成功的 arcgisscripting 模块为基础并继承了 arcgisscripting 功能进而构建而成的站点包。目的是为以实用高效的方式通过 Python 执行地理数据分析、数据转换、数据管理和地图自动化创建基础。
该包提供了丰富纯正的 Python 体验,具有代码自动完成功能(输入关键字和点即可获得该关键字所支持的属性和方法的弹出列表;从中选择一个属性或方法即可将其插入),并针对每个函数、模块和类提供了参考文档。
在 Python 中使用 ArcPy 的另一个主要原因是,Python 是一种通用的编程语言。Python 是一种支持动态输入的解释型语言,适用于交互式操作以及为称为脚本的一次性程序快速制作原型,同时其具有编写大型应用程序的强大功能。用 ArcPy 编写的 ArcGIS 应用程序的优势在于,可以使用由来自多个不同领域的 GIS 专业人员和程序员组成的众多 Python 小群体开发的附加模块。
上述灰色字体介绍部分来自ArcGIS的官方帮助说明,可以帮助大家了解ArcPy的来龙去脉。从帮助上看出,Arcpy可以做的几项重要的工作,地理数据分析、数据转换、数据管理和地图自动化创建。其中,地理数据分析、数据转换、数据管理都是toolbox的工具都可以实现,地图自动化创建则是需要工具以外的东西,则需要开放更多的接口进行地图的交互。
接下来可以看看ArcPy到底提供了哪些操作的接口。学习ArcPy最重要的还是使用Desktop的帮助,这个帮助基本上就是一个cookbook,所需要的都可以在帮助里面找到,可以根据帮助看看那些操作能用,哪些不能用。

从帮助里面可以看到ArcPy里面设计到的功能部分,涉及到常规操作的一些函数、类、数据接入、制图等,还有提供一些非工具调用的扩展模块的特殊接口,这些接口都是交互性的接口。如果希望能够完全使用python进行插件开发,那必须掌握工具的调用(也就是说知道哪些工具能实现什么什么功能),以及ArcPy的函数和类,与地图交互部分,必须掌握Mapping模块,因为该模块涉及到地图的交互操作。
ArcPy函数部分,基本上将AO常用的操作部分进行了封装,而且调用相当简介。可以看到游标、字段、地理数据库管理等的接口。

例如看搜索游标的调用实例,相对与AO来说,简直就是简单到极致,完全符合常规的思维模式。指定数据源,查找字段等就能查出结果。
import arcpy
fc = "c:/data/base.gdb/roads"
field = "StreetName"
cursor = arcpy.SearchCursor(fc)
for row in cursor:
print(row.getValue(field))
例如列出数据,非常简介的调用,遍历出各种数据的列表

调用也是非常简单
import arcpy
# For each field in the Hospitals feature class, print
# the field name, type, and length.
fields = arcpy.ListFields("c:/data/municipal.gdb/hospitals")
for field in fields:
print("{0} is a type of {1} with a length of {2}"
.format(field.name, field.type, field.length))
从这两个例子可以看出,ArcPy的设计都是以极简思维去设计接口和函数的,尽可能符合人类思维模式,避免了像其他高级语言那样严格的通过定义变量、变量类型等严格的操作。
再看涉及到的类型,一些常规的细粒度控制也做得相当不错。哪怕是图形的控制,都可以通过ArcPy来控制。

例如创建一个面,通过ArcPy只需要几行简单的代码,完成面要素创建并加入到已有的面图层中
import arcpy
# A list of features and coordinate pairs
feature_info = [[[1, 2], [2, 4], [3, 7]],
[[6, 8], [5, 7], [7, 2], [9, 5]]]
# A list that will hold each of the Polygon objects
features = []
for feature in feature_info:
# Create a Polygon object based on the array of points
# Append to the list of Polygon objects
features.append(
arcpy.Polygon(
arcpy.Array([arcpy.Point(*coords) for coords in feature])))
# Persist a copy of the Polyline objects using CopyFeatures
arcpy.CopyFeatures_management(features, "c:/geometry/polygons.shp")
在制图方面,同样可以看到一些细粒度的控制,如涉及到地图文档控制、符号控制等

可以说,这些都是可以从各个细节地方去控制地图,并做出一些交互操作。掌握了这些基本的函数和类,对于基本一定GIS基础的开发人员来说,基本上可以制作出各种的插件了,避免使用AO去做长周期的开发。
个人认为,如果将ArcGIS插件式开发定义为使用ArcPy去开发的话,那就太局限了。因为python是一个优秀的语言,有着活跃的开发社区,有非常多的优秀算法和优秀的资源,可以通过python的模式而不是仅仅限于ArcPy去开发插件,这才能做出更加优秀的功能。
使用python制作ArcGIS插件(3)ArcPy的使用说明的更多相关文章
- 使用python制作ArcGIS插件(5)其他技巧
使用python制作ArcGIS插件(5)其他技巧 by 李远祥 使用python做插件开发,除了了解ArcToolBox工具之外,还需要在了解ArcPy的相关函数和接口.只有掌握了这些,才可以顺利的 ...
- 使用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插件(4)界面交互
使用python制作ArcGIS插件(4)界面交互 by 李远祥 插件界面部分,除了一开始在设计器中设计的这些界面元素之外,还可以与操作系统进行一些输入输出的交互,这部分的实现全部在pythonadd ...
- 使用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与ArcGIS Engine的集成
本文转载自Fransico<Python与ArcGIS Engine的集成> 1 在Python中调用AO类库 1.1 准备工作 本文所使用环境:ArcGIS 10.0.Python ...
- 如何使用借助python完成 ARCGIS工具箱的调用
上个月使用python调用arcgis工具箱完成了火点txt文件转shp文件的小功能, 感觉很不错, 写下这篇博客希望对大家有所帮助. 1.环境介绍: 系统: win8.1(64位) arcgis:d ...
随机推荐
- 所有事件event集锦
'mousedown touchstart', 'mousemove touchmove', 'mouseup mouseleave touchend touchleave touchcancel', ...
- Linux 分区和目录
[1. 分区与目录概念理解] Linux的分区是物理上的概念,就像我们把一块硬盘分成C:,D:,E:三个区一样,物理上将存储空间分开 Linux的目录是逻辑上的概念,Linux的目录树实际上是一个分 ...
- 阿里开源Mysql分布式中间件:Cobar
目前在从事数据库中间件的开发和维护工作,我们使用的数据库中间件就是由cobar改造而来,所以对于cobar的一些说明一看就明白了: 下面是看到的一个很不错的分析文档 这里整理了下方便自己学习使用. C ...
- tp框架链接数据库的基本操作
<?php namespace Admin\Controller; use Think\Controller; class MainController extends Controller { ...
- 创建和使用MySQL计划事件
查看事件调度程序线程的状态: SHOW PROCESSLIST; 要启用和启动事件调度程序线程命令: SET GLOBAL event_scheduler = ON; 禁用和停止事件调度程序线程: S ...
- CSS十问
CSS十问——好奇心+刨根问底=CSSer 最近有时间,想把酝酿的几篇博客都写出来,今天前端小学生带着10个问题,跟大家分享一下学习CSS的一些体会,我觉得想学好CSS,必须保持一颗好奇心和刨根问 ...
- 游标使用 和sp_executesql动态sql
/****** Script for SelectTopNRows command from SSMS ******/ declare @oid int declare @cid int declar ...
- Java的三种代理模式
Java的三种代理模式 1.代理模式 代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式;即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩 ...
- mysql配置主从数据库
1.目的 1.1 实现数据备份 1.2 项目访问时可以实现读写分离,提高访问和操作数据的速度<读写分离好处> 2.背景 这次的主从配置主要实现主库数据的改变可以实现同步到从库中: 此次试验 ...
- ssh框架整合log4j
这个是摘录的别人博客的地址,请点击下面的链接...... http://www.cnblogs.com/rushoooooo/archive/2011/08/29/2157361.html