QGIS 树木普查:用航拍影像或 LiDAR 建立树木清查
发布于
QGIS 里的树木清查是一个点图层,每棵树一个点,带一行属性:编号、树种、树干尺寸、健康状况和最近一次检查的日期。航拍影像或 LiDAR 让你在办公室里就能得到点位、冠幅和高度。树种、树干和健康状况则要靠野外调查。
这种分工正是大多数指南略过的地方。没有哪个模型能从 20 cm 的正射影像上读出树种或腐朽的树干,所以最快的清查方式是:办公室负责数,野外负责判断。
简短回答
| 你的起点 | 方法 | 办公室能得到什么 |
|---|---|---|
| 你所在的城市或客户已经公布了树木台账 | 方法 1:开放树木数据 | 带树种、通常还有树干尺寸的点 |
| 一张正射影像和几百棵树 | 方法 2:手工数字化点位 | 你自己放置的点 |
| 一个 LiDAR 表面模型和地形模型 | 方法 3:用冠层高度模型找树顶 | 每个点带一个高度 |
| 一张正射影像和几千棵树 | 方法 4:分割模型 | 每棵树一个树冠多边形,再生成带冠幅的点 |
四种方法的结尾都一样:把图层放到平板上带去野外,由人补充影像看不到的信息。
树木清查要记录什么
在放置第一个点之前,先写好属性表。野外调查之后再改,就意味着要再去一次。
| 属性 | 办公室可得 | 野外可得 |
|---|---|---|
| 树木编号 | 可以,自动生成 | 如果树上有挂牌,记录牌号 |
| 位置 | 可以 | 树冠遮住树干的地方需要校正 |
| 冠径或冠幅面积 | 可以,来自影像 | 复核 |
| 高度 | 有 LiDAR 时可以 | 没有 LiDAR 时现场测量 |
| 树种 | 不可以 | 可以 |
| 胸径或围径 | 不可以 | 可以,在你的标准规定的高度测量 |
| 健康状况、缺陷、下次检查 | 不可以 | 可以 |
在德国,树木台账(Baumkataster)记录的是注意义务所要求的检查,多数所有者遵循 FLL 树木检查指南(2020 年版)和 GALK 的树木台账指南。这些文件规定了野外字段清单,所以请以它们为起点,而不是以这张表为起点。
网上常见的误解
「AI 可以只靠影像建立完整的树木清查。」 它能数树冠、量树冠。它看不到树冠下面的树干,从 RGB 照片上叫不出大多数树种,也判断不了某根树枝会不会掉下来。任何承诺一次飞行就得到完整台账的页面,卖的都只是工作的前一半。
「树冠图就是树木清查。」 树冠图是一个表面,回答的是「这个街区有多大比例被遮荫」。清查回答的是「哪一棵树,在哪里,状态如何」。如果你要的是覆盖率,用 QGIS 绘制树冠覆盖才是合适的指南。
开始之前
- QGIS 3.22 或更高版本。
- 影像要足够新,能反映今年的树木。有叶期影像最适合看树冠,落叶期影像更适合看树干和分枝。
- 一个以米为单位的投影坐标系,这样面积和直径的结果才是以米计的。
免费影像比大多数人想象的要好:
- 波兰: Geoportal 上的国家正射影像自 2020 年 6 月 24 日起可免费用于任何用途,大部分分辨率为 25 cm,城市地区为 10 cm 或更高。免费的「Pobieracz danych GUGiK」插件可以在 QGIS 内下载。
- 德国: 多个州把 DOP20(20 cm 正射影像)作为开放数据发布,其中包括巴登-符腾堡州和下萨克森州。联邦机构提供的全德国服务是收费的。
- 英格兰: 环境署依据开放政府许可证(Open Government Licence)发布覆盖几乎全国的 1 m LiDAR 表面模型和地形模型。
- 美国: NAIP 航拍影像可从 USDA 免费获取。
方法 1:开放树木数据
很多城市已经有树木台账并且公开发布。柏林公开了行道树和公园树木,多特蒙德公布了一份由自有数据和航拍影像建立的台账,科隆在 2025 年 7 月把台账放到了网上,巴黎以点的形式提供了 219,432 棵树。在 QGIS 里加载文件或服务,你一开始就有已经填好的树种。
OpenStreetMap 也标注单棵树,是 natural=tree 的点。在 QGIS 中下载 OSM 数据介绍了如何用 QuickOSM 获取它们。
适合: 树木归城市所有,而且台账较新。
不适合: 工作涉及私有土地、校园或新开发区。开放台账只包含公共树木。
方法 2:手工数字化点位
用 Layer > Create Layer > New GeoPackage Layer… 创建图层,几何类型选 Point,并添加上表中的字段。开启编辑,然后在正射影像上点击每个树冠的中心。
这是办公室方法里最准确的,也是最慢的。每个点都由你决定,所以一排树篱不会变成十二棵树,两个相连的树冠也不会变成一个。
适合: 几百棵树,或者每棵树都很重要的场地,例如规划申请。
不适合: 数量达到几千棵。
方法 3:用冠层高度模型找树顶
有了 LiDAR,每棵树的树顶就是它邻域内最高的像素,所以不需要任何训练就能找到树顶。先建立冠层高度模型,也就是表面模型减去地形模型,做法见树冠覆盖指南;DSM 与 DTM 的说明介绍了这两种输入。
找到局部最大值
对冠层高度模型运行 r.neighbors(GRASS),方法设为 maximum,邻域为 5 个像素。像素为 1 m 时,窗口就是 5 m。
保留树顶
在 Raster > Raster Calculator… 中,保留等于局部最大值且高于 3 m 的像素:("chm@1" = "chm_max@1") AND ("chm@1" > 3)。
把像素转成点
用 Raster pixels to points 转换结果,再用 Extract by attribute 保留值为 1 的点。
添加高度
用 Sample raster values 在冠层高度模型上采样,为每个点添加高度。
关键的设置是窗口大小。太小,一棵宽大的橡树会得到三个树顶;太大,两棵小树会合并成一个。让它与你场地上典型的树冠宽度匹配,并目视检查一个样本。
适合: 你有 LiDAR,并且需要高度。
不适合: 你只有影像,或者 LiDAR 比你要数的树更旧。
方法 4:分割模型
分割模型已经学会树冠长什么样,可以从普通的 RGB 正射影像上为每棵树返回一个多边形。我们做了一个,AI Segmentation,这一节讲的是我们自己的工具。
在 QGIS 中打开的正射影像上画一个区域,输入 tree。模型在我们的服务器上运行,所以不需要显卡,每个树冠以你项目 CRS 下的多边形返回,带有 area_m2 和置信度 score。

把树冠变成清查点:
每个树冠生成一个点
对树冠图层运行 Centroids。每个点保留其树冠的属性。
添加冠径
用字段计算器添加冠径,字段类型为小数:2 * sqrt("area_m2" / pi())。
给树编号
添加一个 tree_id 字段,填入 @row_number,再加上属性表中需要野外填写的空字段。
适合: 街道、公园或花园里的几千棵树,而且你已有影像。
不适合: 林分郁闭的地方。树冠之间没有空隙时,tree 运行会返回一个大形状,而不是每棵树一个多边形,这种情况请用方法 3。影像瓦片会发送到我们的服务器;如果影像不能离开你的电脑,请用方法 2 或 3。
在野外完成
用 QField 把点图层带到树旁。它是 OPENGIS.ch 出品的免费移动应用,用于 QGIS 项目。它可以离线工作,打开你在 QGIS 里设置好的表单,还能为每棵树添加照片。出发前在 QGIS 里为树种和健康状况设置下拉列表,这样每个调查员写的都是同样的词。
对于需要法律记录的定期检查,有专门的台账软件,其中一些,例如德国的 Baumsicht,运行在 QGIS 上。你在这里建立的点图层可以导入其中。
要点
- 树木清查是每棵树一个带属性的点,不是树冠表面。
- 办公室提供位置、冠幅,有 LiDAR 时还有高度。野外提供树种、树干和健康状况。
- 先用开放台账,几百棵树用手工数字化,需要高度时用 LiDAR 树顶,影像上的几千棵树用分割模型。
- 信任总数之前,用你手工数过的样本检查每一种自动方法。
常见问题
树木清查是强制的吗?
通常没有法律要求必须有台账本身。道路和步道旁树木的所有者必须为安全而检查它们,台账是证明检查确实进行过的方式。在德国,这项注意义务就是大多数城镇保存树木台账的原因。
AI 能从航拍影像识别树种吗?
从大多数人手里的 RGB 正射影像上,不能可靠地识别。树种制图需要多光谱或高光谱影像和本地训练数据,即便如此也要在野外核实。我们的插件返回的是树冠,不是树种。
自动树木检测有多准?
与其说取决于工具,不如说取决于树冠。孤立的行道树和花园树结果很好,相连的树冠会合并。在你自己的影像上手工数 50 棵树,与图层对比,就得到了你场地的误差率。
能免费在 QGIS 里做树木清查吗?
能。开放台账、手工数字化和 LiDAR 树顶只花时间,QField 也是免费的。分割模型在大规模计数时节省时间,并且可以免费开始。
关于相关的工作,什么是正射影像解释了这里每种方法背后的影像,QGIS AI 插件页面列出了每个插件运行所需的条件。
里的树木清查是一个点图层,每棵树一个点,带一行属性:编号、树种、树干尺寸、健康状况和最近一次检查的日期。航拍影像或 LiDAR 让你在办公室里就能得到点位、冠幅和高度。树种、树干和健康状况则要靠野外调查。

