


**ArcPy教程(电子版)——面向ArcGIS的Python脚本编程**
### 第一章 ArcPy入门概述
ArcPy是Esri公司为ArcGIS平台开发的Python站点包(site package),它允许用户通过Python脚本自动化地理处理任务、数据管理、空间分析和地图制图等工作。
无论是ArcGIS Desktop还是ArcGIS Pro,ArcPy都能提供强大的接口访问地理处理工具箱(Toolbox)、函数、类和模块。
相比手动操作ArcGIS界面,使用ArcPy脚本可以显著提高效率,尤其适合重复性工作、批量处理和复杂工作流自动化。
#### 1.1 环境准备
安装ArcGIS Pro或ArcGIS Desktop后,ArcPy已自动包含在Python环境中。
推荐使用ArcGIS Pro的Python窗口(Python Window)进行快速测试,或在PyCharm、VS Code等IDE中配置ArcGIS的Python解释器(conda环境)进行正式开发。
在ArcGIS Pro中打开Python窗口,输入以下代码测试是否可用:
```python
import arcpy
print(arcpy.__version__)
```
如果输出版本号,说明ArcPy已成功导入。
#### 1.2 基本语法与工作空间设置
ArcPy脚本通常以`import arcpy`开头。
常用函数包括设置工作空间(workspace),这样后续操作无需每次输入完整路径。
```python
import arcpy
# 设置工作空间
arcpy.env.workspace = r"C:
\Data\Project.gdb" # 支持文件地理数据库
arcpy.env.overwriteOutput = True # 允许覆盖输出
# 列出所有要素类
fcs = arcpy.ListFeatureClasses()
print("当前工作空间中的要素类:", fcs)
```
`ListFeatureClasses()`是ArcPy常用函数之一,用于获取指定工作空间下的要素类列表。
类似函数还有`ListRasters()`、`ListTables()`等。
#### 1.3 执行地理处理工具
ArcPy可以将ArcGIS的所有地理处理工具作为Python函数调用,格式为`arcpy.工具箱别名.工具名称(参数)`。
示例1:缓冲区分析
```python
arcpy.Buffer_analysis("roads", "roads_buffer", "500 Meters", "FULL", "ROUND")
```
示例2:获取要素数量
```python
count = arcpy.management.GetCount("ambulances")
print("要素数量:", count[0])
```
这些工具调用与ArcGIS工具箱界面完全一致,但脚本化后可实现循环、条件判断和批量执行。
#### 1.4 字段操作与数据处理
ArcPy支持添加字段、计算字段等操作:
```python
# 添加字段
arcpy.AddField_management("cities", "POP_DENSITY", "DOUBLE")
# 计算字段(使用Python表达式)
arcpy.CalculateField_management("cities", "POP_DENSITY", "!POPULATION! / !AREA!", "PYTHON3")
```
通过`arcpy.da`数据访问模块(Data Access Module),可以高效读写要素:
```python
with arcpy.da.SearchCursor("roads", ["SHAPE@", "NAME"]) as cursor:
for row in cursor:
print(row[1], "长度:", row[0].length)
```
`da`模块比传统游标更快,推荐优先使用。
**小结与练习**:本章介绍了ArcPy的基础概念、环境配置和简单脚本编写。
建议读者创建一个测试地理数据库,尝试列出数据、运行缓冲区和统计要素数量等操作。
下一章将深入探讨空间分析工具箱(Spatial Analyst)、栅格处理和自定义工具开发。
夜雨聆风