乐于分享
好东西不私藏

OpenClaw使用3-5月知识点整理

OpenClaw使用3-5月知识点整理

ArcGIS 二次开发与空间分析

核心知识点手册

OpenClaw 使用知识沉淀(2026-03 ~ 2026-05)

🔵 本文档由 OpenClaw 长期记忆库(MEMORY.md,832 行)提炼而成,涵盖 ArcPy 编程、ArcGIS Pro C# 二次开发、CGCS2000 坐标系、Shapefile 编码、林评报告自动化等实战知识点。

1. ArcPy 编程核心(ArcGIS Python)

1.1 核心模块

模块

功能

arcpy.da

数据访问:SearchCursor / UpdateCursor / InsertCursor 游标操作

arcpy.mp

地图制图(Pro):arcpy.mp.ArcGISProject 工程对象

arcpy.mapping

地图制图(ArcMap):MXD 文档、图层、导出

arcpy.sa

栅格与空间分析(Spatial Analyst)

arcpy.na

网络分析扩展

arcpy.time

时间增量与时区处理

1.2 游标操作

SearchCursor:查询读取数据

UpdateCursor:更新修改数据

InsertCursor:插入新记录

语法:arcpy.da.SearchCursor(要素类, 字段列表, where_clause)

1.3 常用技巧

覆盖输出:arcpy.env.overwriteOutput = True

获取工具代码:地理处理 → 结果 → 复制 Python 代码

ModelBuilder 可导出 Python 脚本,迭代器需手动改循环

可选参数可用 # 占位,或用参数名指定

SQL 语法:字段名用双引号,字符串值用单引号

Pro 与 ArcMap 差异:aprx.listMaps() 替代 ListDataFrames,layout.exportToPNG() 导出布局

🟢 中文路径处理:PowerShell 与 Python -c 内联代码均有中文编码问题 → 改用 .py 脚本文件 + glob.glob / os.walk 动态查找路径,避免硬编码中文路径。

2. ArcGIS Pro C# 二次开发(Pro SDK)

2.1 Pro SDK vs ArcMap(ArcObjects)

方面

ArcGIS Pro (Pro SDK)

ArcMap (ArcObjects)

架构

.NET Framework 插件架构

COM 技术

线程

支持多线程

单线程

位宽

64 位

32 位

接口

FeatureLayer 等

IFeatureLayer 等(不兼容)

2.2 开发环境配置

Pro 3.0+:Visual Studio 2022 + C#(.NET 6.0)

Pro 2.x:Visual Studio 2019 + .NET Framework 4.8

SDK 安装:VS 扩展管理或手动安装 .vsix 文件

2.3 工程文件结构与 DAML

文件

作用

.csproj

C# 项目文件(编译参数和依赖)

Config.daml

UI 配置文件(按钮、工具、菜单)

Module.cs

模块核心类(初始化、关闭)

Button.cs

按钮事件处理

Tool.cs

地图交互工具

Dockpane.cs

自定义停靠窗格

DAML 配置层级:Module → Tab → Group → Menu/Control

2.4 核心类库

功能

MapView

地图视图(属性:Active, Map, Camera, Extent)

LayoutView

布局视图(属性:Active, Layout, ZoomPercentage)

ProApp

应用程序(属性:ActiveTab, Name, Title, Panes)

Project

工程文件

QueuedTask.Run()

多线程安全执行(必须用)

2.5 多线程与进度条

// 异步方式(推荐)

await QueuedTask.Run(() => { /* 操作 */ });

// 进度条

using (var progress = new ProgressDialog("标题", "取消", 100, false))

{

awaitQueuedTask.Run(() => {

status.Progressor.Value+= 10;// 更新进度

},status.Progressor);

}

2.6 图片资源与发布

Images/:亮色主题图标;DarkImages/:暗色主题图标

图标属性设置:"生成操作" = "内容"(否则运行时不显示)

发布:打包为 .esriAddinX 文件,支持不同版本兼容

3. 坐标系与投影(CGCS2000)

3.1 坐标系快速判断规则

坐标特征

结论

坐标系选择

经度 0~180°,纬度 0~90°

地理坐标系 (GCS)

CGCS2000 (4490) 或 WGS84 (4326)

X 为 6 位、Y 为 7 位(米制)

高斯投影,无带号

按中央经线选 CM 系列(如 CM_117E)

X 为 8 位(前 2 位=带号)、Y 为 7 位

高斯投影,带带号

按带号选 Zone 系列

带号判断分带:带号 > 24 → 3 度带(中央经线 L0 = 3×N,中国跨 24~45);带号 < 24 → 6 度带(L0 = 6N-3,中国跨 13~23)

3.2 带带号 vs 无带号(关键区分)

类型

命名格式

38 带示例 WKID

假东距

X 坐标特征

带带号

CGCS2000_3_Degree_GK_Zone_N

4526

38500000

前 2 位 = 带号

无带号

CGCS2000_3_Degree_GK_CM_114E

4547

500000

不含带号

说"加带号 / 带带号" → Zone 系列;说"无带号 / 不加带号" → CM 系列

Zone 系列 WKID = 4513 + (带号 - 25);CM 系列 WKID = 4534 + (中央经线 - 75) / 3

3.3 WKID 速查(CGCS2000 3 度带)

带号

WKID

中央经线

带号

WKID

中央经线

34

4522

102°E

37

4525

111°E

35

4523

105°E(宁夏银川)

38

4526

114°E

36

4524

108°E

39

4527

117°E

3.4 判断示例

X = 34501566.8578, Y = 2625678.5892

→ X 8 位(前两位 34)、Y 7 位 → 高斯投影(带带号)

→ 带号 34 > 24 → 3 度带,L0 = 3×34 = 102°E

→ 选 CGCS2000_3_Degree_GK_Zone_34(WKID: 4522)

CGCS2000 地理坐标系定义(EPSG:4490):GEOGCS["GCS_China_Geodetic_Coordinate_System_2000", DATUM["D_China_2000", SPHEROID["CGCS2000", 6378137.0, 298.257222101]], PRIMEM["Greenwich", 0.0], UNIT["Degree", 0.0174532925199433]]

4. Shapefile 中文编码与字段限制

4.1 DBF 中文乱码问题

🔴 DBF 文件默认不支持 UTF-8,中文属性会乱码!

解决 1:写入时指定 encoding = "cp936"(GBK)

解决 2:创建 .cpg 文件,内容为 CP936,ArcGIS 自动识别编码

4.2 字段名与类型差异

项目

GDB(File/Enterprise)

Shapefile

要素 ID

OBJECTID

FID

字段名长度

较长

最长 10 字符(如 FID_Polygo 截断)

字符串编码

Unicode 原生

DBF 按字节计,需 CP936

🔵 导出 shp 前注意:GDB 字符串字段按字符计长度、DBF 按字节计(汉字占 2 字节),超过 DBF 上限 254 字节需先压缩字段长度再导出,防止属性截断。

5. 林评报告编制自动化(GIS 从基础到实战)

5.1 基础数据要求

数据类型

格式

要求

用地范围 (YDFW)

GDB

与小班在同一数据集,坐标系一致

小班 (XB)

GDB

与用地范围在同一数据集

行政代码

MDB

用于汇总统计

5.2 输出地图产品

分幅图:A4(纵/横),比例尺 1 万的整数倍,相邻图框 10% 重叠,编号从上至下或从左至右

现状图:现状地类按属性分色 + 二分法标注;用地范围单色/分色显示;标注逐地块、无遗漏无重叠,可用引线

5.3 输出表格(6 类统计表)

序号

表格名称

汇总规则

1

建设项目使用林地因子调查表

-

2

使用林地按类型面积蓄积统计表

县 → 乡镇 → 村 → 分属性

3

表 B.2 按地类面积统计表

-

4

表 B.3 按森林类别面积统计表

-

5

表 B.4 按林地保护等级面积统计表

-

6

表 B.5 分森林类别按地类面积统计表

-

5.4 核心功能模块

道路中心线提取:根据 YDFW 提取并自动计算道路长度

叠加分析与出图:YDFW 与小班叠加,A4 林地分析图,比例尺固定 1:5000

数据导出:Excel 表格数据 + 批量打印地图

Word 报告自动化:先整理替换清单,再批量替换 Word 报告字段生成最终报告

6. 实战技术笔记

6.1 拓扑检查(ArcGIS Pro API 限制)

🔴 AddRuleToTopology 命名参数不工作,ExportTopologyErrors_conversion 不可用!

面重叠检查:Intersect 空间自相交(输出中多个 FID 字段 ≥ 0 表示多要素重叠)

线悬挂点检查:构建拓扑,规则 Must Not Have Dangles (Line)

重合点查找:arcpy.analysis.PairwiseIntersect 空间自相交(排除自身相交)

6.2 坡位分析(TPI 方法,非坡度)

TPI = FocalStatistics(NbrCircle 100m, MEAN) - DEM;分类阈值 ±0.5σ、±1.5σ

平地:坡度 ≤ 5°(优先);脊部 TPI > 1.5σ;上坡 0.5σ~1.5σ;中坡 ±0.5σ;下坡 -1.5σ~-0.5σ;山谷 < -1.5σ

统计用 TabulateArea(输出字段 VALUE, VALUE_1...),Con 嵌套确保每个像元只属一个类别

6.3 表格 XY 转面

流程:XY 转点 → 点转线(PointsToLine,Line_Field 分组 + Sort_Field 排序)→ 线转面

坐标系:CGCS2000 3 度带 34 带(EPSG:4522);距离计算用 shape.distanceTo(),地理坐标需先投影

6.4 1:10000 地形图分幅(GBT 13989-1992)

1:100 万图幅:纬差 4°、经差 6°,行号 A-V(排除 I,O),列号 1-60;比例尺代码 A=1:100万 ~ H=1:5000

1:10000 图幅:纬差 2′30″、经差 3′45″;编号格式 H50D 行号列号

坐标转换流程:投影坐标 → 地理坐标 → 计算分幅 → 转回投影坐标

6.5 Office 文件处理

openpyxl:不能跨工作簿复制工作表 → 先复制模板文件再复制内部工作表;样式复制用 copy()

PPTX:python-pptx 遍历 slides → shapes → paragraphs → runs,表格用 len(table.rows)

Word 转 PDF:win32com.client Word COM 接口;标题自动编号(1 / 1.1 / 1.1.1)

MDB → GDB:ArcGIS Pro 不支持 Personal GDB (.mdb),必须用 ArcMap 10.x(Python 2.7)转换

7. 开发环境速查

环境

路径 / 说明

ArcGIS Pro Python

C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\python.exe

ArcMap 10.8 Python

C:\Python27\ArcGIS10.8\python.exe(Python 2.7)

独立 Python

C:\Users\yl\AppData\Local\Programs\Python\Python310\python.exe

Pro SDK 开发环境

VS 2022 + C# (.NET 6.0),支持 Pro 3.0+

工具箱

C:\Users\yl\Documents\ArcGIS\Toolboxes\(GIStools.pyt、MapSheetTools.pyt)

🟢 工具限制备忘:AggregatePoints 需要扩展模块,基础版不可用;Node Host 未安装时无法模拟鼠标键盘操作。

8. 工作约定与安全规则

🔴 删除文件、覆盖文件、修改重要数据等危险操作前,必须先确认,得到明确同意后才能执行!

任务完成后告知实际处理时间

用户:闫磊老师(ArcGIS 二次开发与培训)

常用工作目录:E:\2026\Pro\、E:\2025\pro\、E:\Pro\书\