在 Python 中使用 ArcObjects
来源:互联网 发布:mac windows 截屏 编辑:程序博客网 时间:2024/05/04 15:17
1. 为什么使用 Python?
- ArcGIS 10.0 之后官方将不再提供对 VBA 的支持。
- 从 10.0 版本开始,ArcMap 和 ArcCatalog 里面都集成了 Python 命令行。
- ESRI 提供了 Python 的脚本对象。
- IDLE 是一个像样的开发和调试环境。
- Python 中可以使用 ArcObjects。
2. 关于地理处理对象
- 从 9.3(arcgisscripting) 和 10.0(arcpy)开始, Python 随时都可以使用地理处理对象。
- 在 9.3 中:包含了诸如游标之类的数据访问对象等附加功能。
- 在 10.0 中:包含了诸如地图文档自动化等附加功能。
- 尽管如此,大量的功能只能通过 ArcObjects 才能实现。
3. 使用 ArcObjects
在 Python 中要调用基于 COM 的 ArcObjects 就得使用 comtypes 模块。从以下地址下载:http://sourceforge.net/projects/comtypes/
读取和导入模块
创建和对象类型转换
独立运行程序的许可
从外部寻找一个已运行的 ArcGIS 实例
获取已选择的图元
使用 IObjectFactory 创建会话对象。获取了 ArcGIS 程序的实例之后,就可以使用 IObjectFactory 创建新的对象
在 10.0 中,可以使用 ArcGIS 程序里面内置的 Python 命令行运行脚本。另外,也可以使用 AppRef 获得进程的句柄
UID 和枚举
同样,也可以返回多个值
空值、IsNull 和 None。支持使用 None 作为参数中的空值
通过布尔测试来判断是否空值,使用 is None 来判断是否数据库中的空值(图元属性的空值)
写入和检索属性(最好是使用地理处理工具来创建表以及增加字段)
创建一个用于 ArcMap 或 ArcCatalog 的 COM 对象
- 新建一个 IDL 文件,用来定义对象和接口。
- 使用 MIDL 编译器编译并生成一个 TLB 文件:midl DemoTool.idl
- 使用 Python 实现这个类并注册
- 注册 COM 对象: python DemoTool.py -regserver
其他一些建议
- 对 COM 的调用有任何疑问都可以查看 comtypes 生成的封装代码(在 Python25/Lib/sitepackages/comtypes/gen 目录下)
- 避免在 Python 中大量的使用细粒度的 ArcObjects
- 为了获得更好的性能,建议使用 C++ 去创建粗粒度的 COM 对象
- 使用地理处理对象(geoprocessing)和地理处理工具(arctoolsbox)来简化任务(提高性能)
- 注意阅读桌面版帮助,了解脚本中可以使用哪些功能
本文翻译自 Mark Cederholm 的 PDF:Using ArcObjects in Python
示例代码:http://www.pierssen.com/arcgis10/python.htm
- 在 Python 中使用 ArcObjects
- 在 Python 中使用 ArcObjects
- 在Python中使用ArcObjects对象
- [python]使用ArcObjects访问要素类
- Python访问ArcObjects
- ArcObjects
- ArcObjects中接口问题总结
- 使用ArcObjects添加点线面
- 在ArcGIS Server中不能直接用New来创建ArcObjects对象
- 小菜的ArcObjects学习之路------ ArcGIS COM类型在.Net中继承
- 在python中使用Yaml
- 在python中使用OpenCV
- 在python中使用websocket
- 在python中使用SQLite
- 在python中使用mysql
- 在python中使用liblinear
- 在Python中使用QuantLib
- 在Python中使用QuantLib
- DirectShow音视频同步
- 工程师定级思考
- 生活感悟
- RTEMS文件系统(4):系统调用开发信息(下)
- android 联系人查询结果的排序问题
- 在 Python 中使用 ArcObjects
- 造型利器——优美的贝塞尔曲线
- 使用SQL_TRACE进行数据库诊断(转载)
- xv6的buddy(伙伴)系统源代码之buddy.h
- HTML Table 动态增加 删除 行 code 实例
- 重新编译内核,去掉LED
- 让SSH保持连接
- VC皮肤库SkinSharp
- 深入浅出CSS3:background-clip,background-origin和border-image教程