2. 农业地块矢量数据采集与编辑

农业地块数字化,本质上是把田间真实存在的地块边界、权属和利用属性,转写成 GIS 中可计算、可查询的多边形矢量数据。在 QGIS 中完成这一任务,核心工作可以概括为四件事:建立正确的图层骨架、用捕捉与拓扑保证几何质量、逐块录入属性、用字段计算器批量生成派生信息。本节以一个约 120 公顷的示例农场为例,走完从空白图层到可用地块数据集的完整过程。文中出现的面积、编号、作物类型等均为教学示例,实际作业时应以实测或台账数据为准。

一、图层骨架:坐标系、几何类型与字段设计

动手画第一个多边形之前,先要把“容器”定好。新建 GeoPackage 或 Shapefile 图层时,几何类型选择多边形(Polygon),坐标系建议采用项目所在区域的 CGCS2000 3 度带高斯-克吕格投影(例如 EPSG:4547,CGCS2000 / 3-degree Gauss-Kruger CM 114E),这样面积计算以米为单位,结果直接是平方米,避免地理坐标系下面积失真的问题。若农场跨带或需要与遥感影像套合,也可先用 WGS 84 / UTM 带号投影,但同一项目内应保持统一。

字段设计决定了后续统计与制图是否顺畅。示例图层 farm_plots 设置如下字段:plot_id(文本,地块编号,如 A-01)、crop(文本,作物类型)、area_m2(双精度,面积)、area_mu(双精度,折合亩)、owner(文本,承包户)、irrigated(整型,0/1 表示是否灌溉)、survey_date(日期)。字段名尽量用英文短名,避免中文与特殊字符在导出、入库时引发编码问题;显示别名可在图层属性的“别名”中设为中文,兼顾可读性。

二、捕捉与拓扑:让相邻地块严丝合缝

地块数据最常见的质量问题是相邻地块之间出现缝隙或重叠,导致面积汇总偏大或偏小。QGIS 的捕捉工具栏(菜单“视图 → 工具栏 → 捕捉工具栏”)是解决这一问题的第一道防线。建议开启顶点捕捉与线段捕捉,容差设为 10 像素左右(屏幕像素,随缩放自适应),并勾选“启用拓扑检查”。拓扑检查中重点开启三项:避免重叠、避免缝隙、避免自相交。开启后,当新画的边与已有边重合时,QGIS 会提示并阻止产生重叠面,或在共享边界上自动插入公共顶点。

实际操作时,推荐“先外后内、先大后小”的顺序:先用“添加多边形”工具沿农场外边界画一个总范围面(可单独放在 farm_boundary 图层),再在内部逐块分割。对于规则田块,可用“添加矩形”工具快速落位;对于不规则地块,用“添加多边形”逐点单击,右键结束。若某块地边界画错,不必删除重画,使用节点工具(顶点编辑器)拖动顶点即可,捕捉会保证拖动后的顶点仍吸附在相邻边界上。

地块数字化工作流:从空白图层到可用数据集 ① 建图层 多边形 / CGCS2000 字段:plot_id、crop area_m2、area_mu… ② 开捕捉与拓扑 顶点/线段捕捉 10px 避免重叠·缝隙·自相交 先外后内、先大后小 ③ 绘制与编辑 添加多边形/矩形 顶点编辑器改边界 分割、合并、删除环 ④ 属性与计算 表单逐块录入 $area 字段计算 面积折亩 拓扑质量对比(相邻地块共享边界) ✓ 正确:共享顶点,无缝隙无重叠 A-01 A-02 公共边仅一条,面积汇总准确 ✗ 错误:缝隙与重叠导致面积偏差 缝隙 重叠 缝隙漏计面积,重叠重复计面积

三、属性录入:表单、默认值与值域约束

几何画完后,每块地都需要挂上属性。逐块双击打开属性表单效率低且易错,更稳妥的做法是先在“图层属性 → 属性表单”中把常用字段配置好:crop 设为“值映射”或“值关系”控件,限定为水稻、小麦、玉米、大豆、蔬菜、休耕等选项;irrigated 用复选框;survey_date 用日期控件并设默认值为 now()。这样录入时只需点选,既快又不会出现“水稻/稻谷/水稻田”这类同义异写。

对于成片同类型地块,可利用“识别工具”旁的属性编辑面板批量赋值:选中多个地块后,在字段列表中使用“更新所选要素”一次性写入相同作物或承包户。若地块编号有规律(如 A-01 至 A-24),可先用字段计算器生成序列,再人工核对个别例外,比逐块手输可靠得多。

四、字段计算器:面积与折亩的批量生成

面积字段不必手工填写。打开属性表,点击字段计算器,勾选“更新现有字段”并选择 area_m2,表达式写 $area,即可按图层坐标系单位计算每个多边形的面积(投影坐标系下为平方米)。随后计算 area_mu,表达式为 $area / 666.6667(1 亩 ≈ 666.67 平方米)。若需按作物汇总,可在“处理工具箱”中运行“按字段分组统计”,以 crop 为分组字段、area_mu 为统计字段,得到各作物总面积。

-- area_m2 字段表达式
$area

-- area_mu 字段表达式(1 亩 ≈ 666.6667 m²)
$area / 666.6667

-- 示例:仅对灌溉地块计算折亩面积
CASE WHEN "irrigated" = 1 THEN $area / 666.6667 ELSE 0 END

需要提醒的是,$area 依赖图层坐标系。若图层使用地理坐标系(度),计算结果将是球面度面积而非平方米,此时应改用 area($geometry) 配合椭球参数,或先把图层重投影到投影坐标系再计算。计算完成后,建议用“统计面板”查看 area_mu 的最小值、最大值与总和,与农场台账总面积比对,偏差超过 1%~2% 就应回头检查是否存在缝隙、重叠或漏画地块。

五、质量检查与成果整理

提交前做三项检查:其一,运行“拓扑检查器”,以“不能有重叠”“不能有缝隙”规则扫描 farm_plots,逐条定位错误并修复;其二,检查几何有效性(“处理工具箱 → 检查有效性”),修复自相交、重复顶点等问题;其三,核对属性完整性,用筛选表达式 "crop" IS NULL OR "plot_id" IS NULL 找出漏填记录。最后统一设置图层样式(按 crop 分类着色)、保存为 GeoPackage,并导出属性表为 CSV 备查。至此,一份几何干净、属性完整、面积可核对的农场地块矢量数据集即可用于后续的叠加分析、制图与面积统计。