内容
# 本地 ArcGIS 10.2 自动执行工具
通过 Claude Code 用自然语言操作 ArcGIS 10.2,覆盖土地资源管理日常 GIS 操作。
## 前置条件
| 软件 | 要求 |
| ------------ | ------------------- |
| ArcGIS 10.2 | 已安装,ArcPy 可用 |
| Python 3.10+ | 用于运行 MCP 服务器 |
| Claude Code | 已安装并登录 |
## 安装
### 第 1 步:克隆仓库
```bash
git clone https://github.com/ffff231231/ArcGIS10.2-MCP-Server.git
cd ArcGIS10.2-MCP-Server
```
### 第 2 步:运行安装脚本
在项目目录下打开终端,运行:
```bash
python scripts/setup.py
```
脚本会自动:
- 检测你电脑上的 Python 3 和 ArcGIS Python 2.7 路径(通过注册表和常见路径)
- 安装 mcp SDK(使用清华镜像源,国内无需翻墙)
- 生成 `config.py`(ArcGIS Python 路径)和 `.mcp.json`(MCP 服务器配置)
- 验证所有组件是否正常工作
如果自动检测失败,会提示手动输入路径。
### 第 3 步:启动 Claude Code
在项目目录下打开 Claude Code 即可,MCP 服务器会自动加载。
> 如果想确认环境是否就绪,可运行 `python scripts/check_setup.py`
## 使用方法
### 启动
1. 在项目目录下打开 Claude Code
2. 输入 `/arcgis` 加载土地资源管理领域知识
3. 用自然语言描述你要做的操作
### 示例对话
```
你: 帮我看一下 D:\data\land_use.shp 的坐标系和字段信息
Claude: (自动调用 describe_feature_class 工具)
你: 把这个 shp 里所有旱地筛选出来,保存到 D:\output\handi.shp
Claude: (自动调用 select_features 工具,where_clause = "DLMC = '旱地'")
你: 统计各地类的面积,用亩做单位
Claude: (自动调用 land_area_statistics 工具)
你: 帮我把 D:\data\ 下所有 shp 投影到 WGS84,输出到 D:\data_wgs84\
Claude: (自动调用 batch_project 工具)
```
## 32 个工具清单
### 信息查询(4 个)
| 工具 | 功能 | 关键参数 |
| ------------------------ | -------------------------------------- | ---------------------------------- |
| `get_arcgis_environment` | 查看 ArcGIS 许可和环境信息 | 无 |
| `list_feature_classes` | 列出工作空间中的要素类 | workspace, wildcard |
| `describe_feature_class` | 查看要素类元数据(坐标系、字段、范围) | input_path |
| `get_projection_info` | 查询坐标系信息 | WKID 数值 / .prj 路径 / 要素类路径 |
### 叠加分析(5 个)
| 工具 | 功能 | 关键参数 |
| ------------------- | ------------------------ | --------------------------------- |
| `clip_features` | 裁剪(用多边形图层切割) | input_features, clip_features |
| `intersect_layers` | 相交(多图层交集) | input_features (列表) |
| `union_layers` | 联合(多图层并集) | input_features (列表) |
| `identity_analysis` | 标识(叠加并传递属性) | input_features, identity_features |
| `erase_features` | 擦除(去除重叠区域) | input_features, erase_features |
### 邻近分析(2 个)
| 工具 | 功能 | 关键参数 |
| ----------------- | ------------------------------ | --------------------------------- |
| `buffer_analysis` | 缓冲区分析 | buffer_distance (如 "100 meters") |
| `spatial_join` | 空间连接(按空间关系传递属性) | match_option, search_radius |
### 数据管理(8 个)
| 工具 | 功能 | 关键参数 |
| ------------------------- | ------------------------ | --------------------------- |
| `merge_datasets` | 合并多个要素类 | input_datasets (列表) |
| `append_features` | 追加到已有要素类 | target_dataset, schema_type |
| `dissolve_features` | 按字段融合相邻要素 | dissolve_field |
| `select_features` | 按属性条件筛选导出 | where_clause (SQL 表达式) |
| `split_features` | 按另一个图层分割 | split_features, split_field |
| `multipart_to_singlepart` | 多部件拆分为单部件 | input_features |
| `copy_or_delete` | 复制或删除要素类 | action: "copy" / "delete" |
| `convert_feature_class` | 格式转换(shp/gdb 互转) | output 路径决定格式 |
### 投影转换(2 个)
| 工具 | 功能 | 关键参数 |
| ----------------------- | ---------------------------- | -------------------------------------- |
| `batch_project` | 批量投影工作空间中所有要素类 | input_workspace, out_coordinate_system |
| `project_feature_class` | 单个要素类投影转换 | out_coordinate_system (WKID 如 "4326") |
### 字段操作(4 个)
| 工具 | 功能 | 关键参数 |
| -------------------- | ----------------------------- | -------------------------------------- |
| `field_processing` | 添加/计算/删除字段 | action: "add" / "calculate" / "delete" |
| `calculate_geometry` | 计算面积/周长/坐标写入字段 | property_type, area_unit |
| `add_xy_coordinates` | 给点要素添加坐标字段 | x_field, y_field |
| `table_join` | 连接外部表(CSV/DBF)到要素类 | input_field, join_field |
### 统计报表(4 个)
| 工具 | 功能 | 关键参数 |
| ---------------------- | ------------------ | ----------------------------- |
| `land_area_statistics` | 按地类字段统计面积 | land_use_field, area_unit |
| `frequency_statistics` | 按字段组合统计频数 | frequency_fields |
| `summary_statistics` | 数值字段汇总统计 | statistics_fields, case_field |
| `table_to_csv` | 属性表导出为 CSV | output_path |
### 出图(1 个)
| 工具 | 功能 | 关键参数 |
| --------------- | ---------------------------- | ----------------------- |
| `batch_mapping` | 从 MXD 批量导出 PNG/PDF/JPEG | mxd_path, output_format |
### 修复(1 个)
| 工具 | 功能 | 关键参数 |
| ----------------- | ----------------- | -------------------------- |
| `repair_geometry` | 检测/修复几何错误 | validate_only: true 仅检测 |
### 转换(1 个)
| 工具 | 功能 | 关键参数 |
| ------------------ | --------------- | ------------------------------------- |
| `feature_to_point` | 提取质心/内部点 | point_location: "CENTROID" / "INSIDE" |
## 常用坐标系
| 名称 | WKID | 说明 |
| ------------------- | ---- | ------------------ |
| CGCS2000 地理坐标系 | 4490 | 中国大地坐标系2000 |
| CGCS2000 3度带 39带 | 4527 | 中央经线 117E |
| CGCS2000 3度带 40带 | 4528 | 中央经线 120E |
| WGS 84 | 4326 | GPS 通用坐标系 |
更多坐标系可通过 `get_projection_info` 工具查询,输入 WKID 数值即可。
## 面积单位
在 `land_area_statistics` 和 `calculate_geometry` 中使用:
| 参数值 | 单位 | 换算 |
| ------------------- | -------- | --------------------- |
| `SQUARE_METERS` | 平方米 | 基准 |
| `HECTARES` | 公顷 | 1 公顷 = 10000 平方米 |
| `SQUARE_KILOMETERS` | 平方公里 | 1 平方公里 = 100 公顷 |
| `MU` | 亩 | 1 公顷 = 15 亩 |
## 常见工作流程
### 地类面积统计报表
```
你: 帮我统计 D:\data\xian_dltb.shp 按 DLMC 字段的各地类面积,用亩做单位,结果导出 CSV
```
Claude 会依次调用: describe_feature_class -> land_area_statistics -> table_to_csv
### 两期土地利用变化分析
```
你: D:\data\2020_dltb.shp 和 D:\data\2025_dltb.shp 是两期地类图斑,
帮我做变化分析,找出地类发生变化的图斑
```
### 批量投影
```
你: 把 D:\data\cgcs2000\ 下所有 shp 投影到 WGS84,输出到 D:\data\wgs84\
```
### 建设用地审查
```
你: 从 D:\data\dltb.shp 中筛选出建设用地(DLBM 以 05、06、07 开头),
裁剪到 D:\data\guihua.shp 范围内,统计面积
```
## 架构说明
```
Claude Code <--stdio/MCP--> Python 3 MCP Server <--subprocess/JSON--> Python 2.7 ArcPy
```
- MCP 服务器运行在 Python 3(使用 mcp SDK)
- ArcPy 脚本通过子进程在 Python 2.7 上执行
- 参数通过 stdin 传入 JSON,结果通过 stdout 返回 JSON
- 脚本以临时 .py 文件形式交付,支持中文路径
## 项目结构
```
本地ArcGIS自动执行工具/
.mcp.json # Claude Code MCP 服务器配置
.claude/commands/arcgis.md # 土地资源管理领域知识 Skill
src/arcgis_mcp/
server.py # MCP 服务器(32 个工具定义)
bridge.py # Python 3 <-> Python 2.7 桥接器
config.py # 路径配置(由 setup.py 自动生成)
validators.py # 参数校验
templates/ # 32 个 ArcPy 脚本模板
scripts/
setup.py # 一键安装配置脚本
check_setup.py # 环境诊断脚本
```
## 故障排除
| 问题 | 解决方法 |
| ---------------- | --------------------------------------------------------- |
| MCP 服务器未加载 | 确认在项目目录下启动 Claude Code,检查 .mcp.json 是否存在 |
| ArcPy 执行失败 | 运行 `python scripts/check_setup.py` 检查环境 |
| 中文路径报错 | 确认路径无特殊字符,使用完整绝对路径 |
| 投影转换失败 | 可能需要指定 transform_method 参数 |
| 找不到字段 | 先用 `describe_feature_class` 查看实际字段名 |
| pip 安装慢 | 脚本已配置清华镜像源,无需手动处理 |
连接信息
猜你喜欢
暂无推荐服务器