编辑推荐
本书作者是GIS开发方面的知名作者,曾著有《JavaScript构建Web和ArcGIS Server应用实战》(Building Web and Mobile ArcGIS Server Applications with JavaScript)一书。本书内容易学易懂,帮助读者成为GIS开发高手。
内容简介
Python作为一种高级程序设计语言,凭借其简洁、易读及可扩展性日渐成为程序设计领域备受推崇的语言。使用Python作为GIS开发的脚本语言,将大大提升ArcGIS数据处理的效率。本书将介绍如何使用Python来创建桌面ArcGIS环境下的地理处理脚本、管理地图文档和图层、查找和修复丢失的数据链接、编辑要素类和表中的数据等,以期能够提高 GIS开发人员的工作效率。本书内容结构清晰,示例完整,不仅适合从事GIS开发的专业人士,而且适合那些有兴趣接触或从事Python编程的读者。
作者简介
Eric Pimpler是GeoSpatial Training Services(http: geospatialtraining.com )的创始人和所有者,他使用Esri、Google Earth Maps和开源技术等进行GIS实践和教学已有20多年的历史。目前,Eric侧重于使用Python编写ArcGIS脚本,以及使用JavaScript开发web和移动ArcGIS Server应用程序。此外,Eric还编写了《Programming ArcGIS with Python Cookbook》和《Building Web and Mobile ArcGIS Server Applications with JavaScript》(中文版名为《JavaScript构建Web和ArcGIS Server应用实战》由人民邮电出版社出版)两本书,这两本书都已经由Packt出版社出版。Eric获得了美国德克萨斯A&M大学地理学专业的学士学位,以及美国德克萨斯州立大学应用地理学(GIS方向)专业的硕士学位。
目录
- 第1章 面向ArcGIS的Python语言基础1
- 1.1 使用IDLE进行Python脚本开发 2
- 1.1.1 Python Shell窗口 2
- 1.1.2 Python脚本窗口 3
- 1.1.3 编辑已有的Python脚本 3
- 1.1.4 在IDLE中运行脚本 5
- 1.2 ArcGIS Python窗口的使用 5
- 1.2.1 ArcGIS Python窗口 5
- 1.2.2 ArcGIS Python窗口的显示 6
- 1.3 Python语言基础 8
- 1.3.1 代码注释 8
- 1.3.2 模块导入 9
- 1.3.3 变量 10
- 1.3.4 内置数据类型 13
- 1.3.5 类和对象 19
- 1.3.6 语句 20
- 1.3.7 文件I O(输入 输出) 25
- 1.4 总结 26
- 第2章 管理地图文档和图层 27
- 2.1 引言 27
- 2.2 引用当前的地图文档 28
- 2.2.1 准备工作 28
- 2.2.2 操作方法 28
- 2.2.3 工作原理 29
- 2.3 引用磁盘上的地图文档 30
- 2.3.1 准备工作 30
- 2.3.2 操作方法 30
- 2.3.3 工作原理 31
- 2.4 获取地图文档中的图层列表 31
- 2.4.1 准备工作 31
- 2.4.2 操作方法 31
- 2.4.3 工作原理 32
- 2.4.4 拓展 32
- 2.5 限制图层列表 33
- 2.5.1 准备工作 33
- 2.5.2 操作方法 33
- 2.5.3 工作原理 34
- 2.6 缩放至所选要素 35
- 2.6.1 准备工作 35
- 2.6.2 操作方法 35
- 2.6.3 工作原理 37
- 2.7 改变地图范围 37
- 2.7.1 准备工作 37
- 2.7.2 操作方法 38
- 2.7.3 工作原理 39
- 2.8 添加图层到地图文档 39
- 2.8.1 准备工作 40
- 2.8.2 操作方法 40
- 2.8.3 工作原理 42
- 2.8.4 拓展 42
- 2.9 插入图层到地图文档 42
- 2.9.1 准备工作 42
- 2.9.2 操作方法 43
- 2.9.3 工作原理 44
- 2.9.4 拓展 45
- 2.10 更新图层的符号系统 45
- 2.10.1 准备工作 45
- 2.10.2 操作方法 46
- 2.10.3 工作原理 47
- 2.10.4 拓展 48
- 2.11 更新图层属性 48
- 2.11.1 准备工作 48
- 2.11.2 操作方法 48
- 2.12 操作数据框中启用时间的图层 53
- 2.12.1 准备工作 53
- 2.12.2 操作方法 54
- 2.12.3 工作原理 58
- 第3章 查找和修复丢失的数据链接 59
- 3.1 引言 59
- 3.2 查找地图文档和图层文件中丢失的数据源 59
- 3.2.1 准备工作 60
- 3.2.2 操作步骤 60
- 3.2.3 工作原理 62
- 3.2.4 拓展 62
- 3.3 使用MapDocument.findAndReplace WorkspacePaths()方法修复丢失的数据源 62
- 3.3.1 准备工作 62
- 3.3.2 操作步骤 63
- 3.3.3 工作原理 64
- 3.3.4 拓展 64
- 3.4 使用MapDocument.replaceWorkspaces()方法修复丢失的数据源 65
- 3.4.1 准备工作 65
- 3.4.2 操作步骤 65
- 3.4.3 工作原理 67
- 3.5 使用replaceDataSource() 方法修复单个图层和表对象 68
- 3.5.1 准备工作 69
- 3.5.2 操作步骤 69
- 3.5.3 工作原理 72
- 3.5.4 拓展 72
- 3.6 查找文件夹中所有地图文档内丢失的数据源 72
- 3.6.1 准备工作 72
- 3.6.2 操作步骤 73
- 3.6.3 工作原理 74
- 第4章 自动化地图制图和打印 76
- 4.1 引言 76
- 4.2 创建布局元素的Python列表 77
- 4.2.1 准备工作 77
- 4.2.2 操作方法 78
- 4.2.3 工作原理 79
- 4.3 为布局元素指定唯一的名称 79
- 4.3.1 准备工作 79
- 4.3.2 操作方法 79
- 4.3.3 工作原理 82
- 4.3.4 拓展 82
- 4.4 使用ListLayoutElements() 函数限制返回的布局元素 83
- 4.4.1 准备工作 83
- 4.4.2 操作方法 83
- 4.4.3 工作原理 84
- 4.5 更新布局元素的属性 84
- 4.5.1 准备工作 84
- 4.5.2 操作方法 85
- 4.5.3 工作原理 87
- 4.6 获取可用的打印机的列表 87
- 4.6.1 准备工作 87
- 4.6.2 操作方法 87
- 4.6.3 工作原理 88
- 4.7 使用PrintMap() 函数打印地图 88
- 4.7.1 准备工作 89
- 4.7.2 操作方法 89
- 4.7.3 工作原理 90
- 4.8 导出地图为PDF文件 90
- 4.8.1 准备工作 90
- 4.8.2 操作方法 90
- 4.8.3 工作原理 92
- 4.9 导出地图为图像文件 92
- 4.9.1 准备工作 92
- 4.9.2 操作方法 92
- 4.9.3 工作原理 93
- 4.10 导出报表 93
- 4.10.1 准备工作 94
- 4.10.2 操作方法 94
- 4.10.3 工作原理 97
- 4.11 使用数据驱动页面和ArcPy制图模块构建地图册 98
- 4.11.1 准备工作 98
- 4.11.2 操作方法 98
- 4.11.3 工作原理 102
- 4.12 将地图文档发布为ArcGISServer服务 102
- 4.12.1 准备工作 103
- 4.12.2 操作方法 104
- 4.12.3 工作原理 109
- 第5章 使用脚本执行地理处理工具 110
- 5.1 引言 110
- 5.2 查找地理处理工具 110
- 5.2.1 准备工作 111
- 5.2.2 操作方法 111
- 5.2.3 工作原理 113
- 5.3 查看工具箱别名 114
- 5.3.1 准备工作 114
- 5.3.2 操作方法 115
- 5.3.3 工作原理 116
- 5.4 使用脚本执行地理处理工具 116
- 5.4.1 准备工作 117
- 5.4.2 操作方法 117
- 5.4.3 工作原理 118
- 5.4.4 拓展 119
- 5.5 将一个工具的输出作为另一个工具的输入 119
- 5.5.1 准备工作 119
- 5.5.2 操作方法 120
- 5.5.3 工作原理 122
- 第6章 创建自定义地理处理工具 123
- 6.1 引言 123
- 6.2 创建自定义地理处理工具 123
- 6.2.1 准备工作 123
- 6.2.2 操作方法 124
- 6.2.3 工作原理 138
- 6.2.4 拓展 139
- 6.3 创建Python工具箱 139
- 6.3.1 准备工作 139
- 6.3.2 操作方法 139
- 6.3.3 工作原理 148
- 第7章 查询和选择数据 149
- 7.1 引言 149
- 7.2 构造正确的属性查询语句 149
- 7.2.1 准备工作 150
- 7.2.2 操作方法 150
- 7.2.3 工作原理 153
- 7.3 创建要素图层和表视图 154
- 7.3.1 准备工作 154
- 7.3.2 操作方法 155
- 7.3.3 工作原理 157
- 7.3.4 拓展 157
- 7.4 使用Select Layer by Attribute工具选择要素和行 158
- 7.4.1 准备工作 158
- 7.4.2 操作方法 159
- 7.4.3 工作原理 161
- 7.5 使用Select Layer by Location工具选择要素 161
- 7.5.1 准备工作 161
- 7.5.2 操作方法 162
- 7.5.3 工作原理 165
- 7.6 结合空间查询和属性查询选择要素 165
- 7.6.1 准备工作 165
- 7.6.2 操作方法 166
- 7.6.3 工作原理 167
- 第8章 在要素类和表中使用ArcPy数据访问模块 168
- 8.1 引言 168
- 8.2 使用SearchCursor检索要素类中的要素 171
- 8.2.1 准备工作 171
- 8.2.2 操作方法 171
- 8.2.3 工作原理 173
- 8.3 使用where子句筛选记录 173
- 8.3.1 准备工作 173
- 8.3.2 操作方法 173
- 8.3.3 工作原理 174
- 8.4 使用几何令牌改进游标性能 174
- 8.4.1 准备工作 174
- 8.4.2 操作方法 175
- 8.4.3 工作原理 178
- 8.5 使用InsertCursor插入行 178
- 8.5.1 准备工作 178
- 8.5.2 操作方法 179
- 8.5.3 工作原理 183
- 8.6 使用UpdateCursor更新行 183
- 8.6.1 准备工作 183
- 8.6.2 操作方法 184
- 8.6.3 工作原理 187
- 8.7 使用UpdateCursor删除行 187
- 8.7.1 准备工作 187
- 8.7.2 操作方法 187
- 8.7.3 工作原理 189
- 8.8 在编辑会话中插入和更新行 189
- 8.8.1 准备工作 189
- 8.8.2 操作方法 190
- 8.8.3 工作原理 192
- 8.9 读取要素类中的几何信息 193
- 8.9.1 准备工作 193
- 8.9.2 操作方法 193
- 8.9.3 工作原理 195
- 8.10 使用Walk() 遍历目录 195
- 8.10.1 准备工作 195
- 8.10.2 操作方法 195
- 8.10.3 工作原理 197
- 第9章 获取GIS数据的列表和描述 198
- 9.1 引言 198
- 9.2 使用ArcPy列表函数 199
- 9.2.1 准备工作 199
- 9.2.2 操作方法 199
- 9.2.3 工作原理 201
- 9.2.4 拓展 201
- 9.3 获取要素类或表中的字段
- 列表 202
- 9.3.1 准备工作 202
- 9.3.2 操作方法 202
- 9.3.3 工作原理 204
- 9.4 使用Describe() 函数返回要素类的描述性信息 204
- 9.4.1 准备工作 204
- 9.4.2 操作方法 205
- 9.4.3 工作原理 207
- 9.5 使用Describe() 函数返回栅格图像的描述性信息 208
- 9.5.1 准备工作 208
- 9.5.2 操作方法 208
- 9.5.3 工作原理 210
- 第10章 使用Add-in定制ArcGIS界面 211
- 10.1 引言 211
- 10.2 下载并安装Python Add-in
- Wizard 212
- 10.2.1 准备工作 212
- 10.2.2 操作方法 212
- 10.2.3 工作原理 214
- 10.3 创建按钮加载项和使用Python加载项模块 214
- 10.3.1 准备工作 214
- 10.3.2 操作方法 215
- 10.3.3 工作原理 222
- 10.4 安装和测试加载项 222
- 10.4.1 准备工作 223
- 10.4.2 操作方法 223
- 10.4.3 工作原理 227
- 10.5 创建工具加载项 228
- 10.5.1 准备工作 228
- 10.5.2 操作方法 229
- 10.5.3 工作原理 232
- 10.5.4 拓展 233
- 第11章 异常识别和错误处理 234
- 11.1 引言 234
- 11.2 默认的Python错误消息 235
- 11.2.1 准备工作 235
- 11.2.2 操作方法 235
- 11.2.3 工作原理 236
- 11.3 添加Python异常处理结构(try except else) 236
- 11.3.1 准备工作 236
- 11.3.2 操作方法 237
- 11.3.3 工作原理 238
- 11.3.4 拓展 238
- 11.4 使用GetMessages() 函数获取工具消息 238
- 11.4.1 准备工作 238
- 11.4.2 操作方法 239
- 11.4.3 工作原理 239
- 11.5 根据严重性级别筛选工具消息 239
- 11.5.1 准备工作 240
- 11.5.2 操作方法 240
- 11.5.3 工作原理 241
- 11.6 测试和响应特定的错误消息 241
- 11.6.1 准备工作 241
- 11.6.2 操作方法 242
- 11.6.3 工作原理 243
- 第12章 使用Python实现ArcGIS的高级功能 244
- 12.1 引言 244
- 12.2 ArcGIS REST API入门 245
- 12.2.1 准备工作 245
- 12.2.2 操作方法 245
- 12.2.3 工作原理 250
- 12.3 使用Python构建HTTP请求并解析响应 250
- 12.3.1 准备工作 251
- 12.3.2 操作方法 251
- 12.3.3 工作原理 254
- 12.4 使用ArcGIS REST API和Python获取图层信息 254
- 12.4.1 准备工作 254
- 12.4.2 操作方法 254
- 12.4.3 工作原理 256
- 12.5 使用ArcGIS REST API和Python导出地图 257
- 12.5.1 准备工作 257
- 12.5.2 操作方法 257
- 12.5.3 工作原理 259
- 12.6 使用ArcGIS REST API和Python查询地图服务 260
- 12.6.1 准备工作 260
- 12.6.2 操作方法 260
- 12.6.3 工作原理 264
- 12.7 使用Esri World GeocodingService进行地理编码 264
- 12.7.1 准备工作 264
- 12.7.2 操作方法 264
- 12.7.3 工作原理 266
- 12.8 使用FieldMap和FieldMappings 266
- 12.8.1 准备工作 266
- 12.8.2 操作方法 267
- 12.8.3 工作原理 273
- 12.9 使用ValueTable将多值输入到工具中 273
- 12.9.1 准备工作 274
- 12.9.2 操作方法 274
- 12.9.3 工作原理 275
- 第13章 在ArcGIS Pro中使用Python 276
- 13.1 引言 276
- 13.2 在ArcGIS Pro中使用新的Python窗口 277
- 13.3 桌面ArcGIS与ArcGIS Pro中Python的编码差异 280
- 13.4 为独立的ArcGIS Pro脚本安装Python 280
- 13.5 将桌面ArcGIS中的Python代码转换到ArcGIS Pro中 281
- 附录A 自动化Python脚本 282
- A.1 引言 282
- A.2 在命令行中运行Python脚本 283
- A.2.1 准备工作 283
- A.2.2 操作方法 283
- A.2.3 工作原理 288
- A.3 使用sys.argv[] 捕获命令行的输入 288
- A.3.1 准备工作 288
- A.3.2 操作方法 289
- A.3.3 工作原理 290
- A.4 添加Python脚本到批处理文件 290
- A.4.1 准备工作 290
- A.4.2 操作方法 291
- A.4.3 工作原理 291
- A.4.4 拓展 291
- A.5 在规定的时间运行批处理文件 291
- A.5.1 准备工作 292
- A.5.2 操作方法 292
- A.5.3 工作原理 296
- 附录B GIS程序员不可不知的5个Python功能 297
- B.1 引言 297
- B.2 读取带分隔符的文本文件 297
- B.2.1 准备工作 298
- B.2.2 操作方法 298
- B.2.3 工作原理 300
- B.2.4 拓展 301
- B.3 发送电子邮件 301
- B.3.1 准备工作 301
- B.3.2 操作方法 302
- B.3.3 工作原理 305
- B.4 检索FTP服务中的文件 305
- B.4.1 准备工作 306
- B.4.2 操作方法 306
- B.4.3 工作原理 309
- B.4.4 拓展 309
- B.5 创建ZIP文件 309
- B.5.1 准备工作 310
- B.5.2 操作方法 310
- B.5.3 工作原理 312
- B.5.4 拓展 313
- B.6 读取XML文件 313
- B.6.1 准备工作 313
- B.6.2 操作方法 314
- B.6.3 工作原理 315
- B.6.4 拓展 316