乐于分享
好东西不私藏

Arcpy教程(电子版);arcpy教程; 面向ArcGIS的Python脚本编程;arcpy

Arcpy教程(电子版);arcpy教程; 面向ArcGIS的Python脚本编程;arcpy

**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)、栅格处理和自定义工具开发。