☰
3dfier输入数据清单:2D多边形+激光雷达点云的最小数据要求全解析
2026/9/28 3:42:45 网站建设 项目流程

3dfier输入数据清单:2D多边形+激光雷达点云的最小数据要求全解析

【免费下载链接】3dfierThe open-source tool for creating 3D models项目地址: https://gitcode.com/gh_mirrors/3d/3dfier

3dfier是一款开源 3D 城市模型生成工具,它能把 2D GIS 数据"3D化":读取 2D 多边形与激光雷达点云,自动把每个多边形提升到三维,最终输出一个无孔洞、无自相交的 watertight 数字表面模型(DSM),支持 CityJSON、CityGML、OBJ 等格式。本文用一份清晰的输入数据清单,帮你搞懂 3dfier 最小数据要求是什么——只需2D 多边形 + 点云 + 一份 YAML 配置,三样缺一不可。

📋 3dfier 输入数据清单:生成3D模型只需3样东西

很多人第一次接触 3dfier 会问:到底要准备什么数据?答案很简单——三类输入:

  1. 2D 多边形(Polygons):描述要变成 3D 的对象(建筑、道路、水体……)的矢量面数据
  2. 激光雷达点云(Point Cloud):LAS/LAZ 格式,为多边形提供真实高程信息
  3. YAML 配置文件:定义读哪些文件、每个文件映射到哪个语义类

下面这张图完整展示了"输入数据 → 提升 → 挤出"的流程:

💡 关键认知:只输出有对应 2D 多边形输入的对象的 3D 数据。如果你没输入地形多边形,3dfier 不会"自动"生成地形。

🗺️ 2D多边形输入要求:支持哪些格式?需要满足什么条件?

支持的文件格式

3dfier 通过GDAL/OGR读取矢量数据,意味着几乎所有 GDAL 支持的格式都能用:Shapefile、GeoPackage、SQLite、GML 等。官方示例数据用的是荷兰 BGT 数据集裁剪出的 SQLite 文件,位于example_data/bgt/目录(如example_data/bgt/bgt_pand.sqlite存放建筑足迹多边形):

多边形必须满足的 4 个条件

条件说明
拓扑连接多边形之间应共用边界、无缝隙无重叠,否则输出的 3D 模型会出现孔洞
唯一 ID 属性每个要素需有一个唯一标识字段(YAML 中用uniqueid指定,默认fid)
映射到 7 类之一Building / Terrain / Forest / Water / Road / Separation / Bridge-Overpass
可选:相对高度字段height_field属性描述垂直层次(0=地面,桥梁为 1,隧道为 -1)

一个补充细节:MultiPolygon(多重多边形)受支持,会被拆分成单个多边形,ID 自动追加id-1、id-2计数器。

多边形与点云的关系,直观看下图——彩色面是 2D 多边形,撒在上面的点是激光雷达数据:

☁️ 激光雷达点云要求:为什么必须区分地面/非地面?

格式要求

点云读取基于 LASLib 库,只支持LAS / LAZ格式。官方示例数据是荷兰 AHN3 点云的裁剪块(example_data/ahn3/ahn3_cropped_1.laz和ahn3_cropped_2.laz):

最低分类要求(重点!)

点云必须按ASPRS 标准 LiDAR 点分类(v1.4)做过分类,最低要求:

  • 0-1 类:未分类/从未分类
  • 2 类:地面(Ground)
  • 3-5 类:植被(Vegetation)

为什么不能省掉分类?3dfier 团队做过充分测试:不分类的点云根本无法稳定工作。主要原因是植被噪声会严重干扰统计分析——树木的点会混入建筑范围,导致屋顶高度被"顶高"、地形出现毛刺。

两个实用技巧:

  • ✅ 在 YAML 的omit_LAS_classes里排除用不到的类别(如植被点),读取速度会大幅提升,还能避免配置错误
  • ✅ 用thinning抽稀点云快速测试配置(正式跑时不建议)

🏠 最小数据配置对比:只建建筑 vs 全部对象

根据目标不同,最小数据要求略有差异。以下是官方给出的两种场景对比:

场景一:只生成 LoD1 建筑

需要的数据说明
建筑足迹多边形1 个数据集即可
点云(地面 + 非地面分类)地面高度用 2 类点计算,屋顶高度用所有类点的高分位数计算

场景二:生成区域全部对象

需要的数据说明
拓扑连接的完整面数据水体、地形、道路、建筑、植被、围墙、桥梁 7 类全覆盖
点云(地面 + 非地面分类)地形/植被/道路只用地面点,建筑等用全部点

⚠️ 进阶提示:点云分类越精细(如区分了建筑物、屋顶等类别),结果越好——因为配置类别内的噪声更小,建筑高度不会受树木干扰。

✅ 运行前快速检查清单 + 示例数据在哪

打开配置文件example_data/testarea_config.yml对照检查,这份官方示例覆盖了三类输入的所有配置写法:

  • input_polygons中每个数据集都指定了uniqueid和lifting类名
  • 每个lifting类在lifting_options中都有对应配置(例如 Building 配了 ground/roof 分位数)
  • input_elevation指向了正确的 LAS/LAZ 文件
  • 多边形数据拓扑正确(共边、无缝隙)

在命令行执行即可生成你的第一个 3D 模型:

跑完后会得到example_data/output/testarea.obj(可用 MeshLab 打开)和example_data/output/testarea.json(CityJSON),效果如下:

📚 更多细节可参考项目内文档:最小数据要求见docs/pages/examples/minimal_data_requirements.md,支持的文件格式见docs/pages/getting-started/file_formats.md,输入选项详解见docs/pages/settings/input_options.md。

【免费下载链接】3dfierThe open-source tool for creating 3D models项目地址: https://gitcode.com/gh_mirrors/3d/3dfier

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询