# CLI-Anything QGIS：让 Agent 按米生成服务范围，交付真实地图工程和 PDF

## 执行范围

已实际运行PROJ重投影与原创点位单位核对；本机没有QGIS运行时，PyQGIS的QGZ/GPKG/PDF导出脚本尚未执行，不将作者地图阅读器伪装QGIS截图。

## 输入与目标

原创四个设施点、经纬度输入和500米服务范围要求

交付：QGZ、GPKG、缓冲几何与地图PDF

## 运行

在 reference 目录执行；先按文件 requirements.txt / package.json 或原生工具文档安装依赖。浏览器练习需 `npx playwright install chromium`；也可设置 `PLAYWRIGHT_EXECUTABLE_PATH` 为自己的 Chrome 路径。

```sh
python local_units.py
# 在已配置PyQGIS的Python环境：
python qgis_project.py
```

## 目录

- fixtures：作者原创输入，不包含用户真实资料。
- starter：读者待完成任务。
- reference：作者完成参考。
- results：作者实际运行所得或明确标注的待运行输入/预期合同。

## 七步

1. **核对原创点位**

读取两条GeoJSON点，明确输入是经纬度EPSG:4326。id与坐标逐项对照，不能把经纬度数值直接当米。

2. **先验证单位转换**

用真实PROJ转换到EPSG:32650，回读easting/northing。作者已运行这一步，地图阅读器只展示这些真实坐标与500m参考半径。

3. **让Agent调用QGIS**

在自己的QGIS环境加载CLI-Anything，先查询可用原生工具。参考PyQGIS脚本直接使用QgsApplication和QgsVectorLayer，不用Python几何替身冒充QGIS。

4. **重投影再缓冲**

对每个点的QgsGeometry应用QgsCoordinateTransform，再buffer(500,64)。输出CRS必须仍是米制，不能只更改地图显示CRS。

5. **保存原生数据**

将缓冲图层写入GeoPackage，按相对路径保存QGZ。两个图层要能在新目录重新打开，不能依赖作者临时内存图层。

6. **导出具体地图**

创建布局地图、标题与范围，实际运行后导出PDF。本文这一步尚未执行，不能把作者PROJ示意图当作QGIS导出成果。

7. **检查移交工程**

在你的环境重新打开QGZ和GPKG，回读图层数、CRS、面积及PDF。500m圆的面积约78.54万平方米，明显偏差应先查单位。

## 来源

- https://raw.githubusercontent.com/HKUDS/CLI-Anything/main/QGIS/agent-harness/QGIS.md


## 原生工具与边界补充

requirements只用于已实际执行的PROJ单位核对。qgis_project.py必须在已安装QGIS/PyQGIS及其Qt的Python环境执行；写GPKG后重加载持久图层再保存相对路径QGZ。作者未执行该脚本。
