CityGML程序化建模开源引擎及数据集

这篇具有很好参考价值的文章主要介绍了CityGML程序化建模开源引擎及数据集。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在攻读博士学位期间,我在 3D GIS 研究中遇到了以下缺点:

  • 包含多个细节级别的 CityGML 数据集很少。
  • 不存在程序化生成的 CityGML 格式的数据。
  • 没有免费的程序化建模引擎。
  • 公开可用的 CityGML 模型通常包含大量(拓扑)错误。

CityGML程序化建模开源引擎及数据集,CityGML

推荐:用 NSDT编辑器 快速搭建可编程3D场景

为了解决这些问题,我开发了 Random3Dcity,这是一个基本的实验性开源程序建模引擎,用于自动构建合成建筑及其在 CityGML 中的多个 LOD 中的实现。 我在博士项目中将生成的数据集用于多种目的,例如对用例中使用特定 LOD 的性能进行基准测试,但可能的应用并不限于此。 特此,我弥合了差距并公开发布了数据集。 引擎的代码也已发布。

除了这个项目之外,我还为 3D 城市模型设计了一种新的 LOD 规范,该规范扩展了 CityGML 中的规范。 该规范已通过该引擎实现。

凭借其多样化的建筑物和大量的表示,Random3Dcity 的目标是成为可用的最完整的 CityGML(可能还有 3D)数据集。 然而,请注意其局限性,例如实验性质和合成结果。

1、从随机参数描述到多种表示形式的 CityGML

Random3Dcity 由两部分组成。

第一个构建具有随机属性(程序化建模器)的建筑物,例如高度、屋顶类型和窗户数量及其尺寸。

做到这一点的算法相对聪明,它通过遵守大量约束(例如窗户不重叠)来实现这一点,并注意设计的建筑物看起来尽可能真实。 引擎将这些数据存储在人类可读的参数描述(自己的 XML 模式)中,例如: Gabled2.89。

由于这种随机性,数据集非常适合作为无偏差数据源进行许多分析,并适合重新创建现实世界数据中可能不可用的许多不同场景。 按照目前的配置,不同建筑物的数量约为 1054 座。

引擎的第二部分读取这些数据,并通过生成多个详细级别的 CityGML 文件以 3D 形式实现它们。

以下出版物描述了该方法:使用程序建模引擎 Random3Dcity 在 CityGML 中生成多 LOD 3D 城市模型 。

2、更精细的 LOD划分

作为博士研究的目标之一,我开发了一种新规范,将 CityGML LOD 规范细化为 16 个 LOD,即适合当前每个 LOD 0、1、2 和 3 的四个不太模糊且详细指定的变体,旨在 补充 CityGML 规范。它们是对 3D 制作工作流程进行彻底研究、与从业者接触以及检查现有 3D 模型的产物。

CityGML程序化建模开源引擎及数据集,CityGML

上图显示了规范的直观描述,下面显示了包含 100 座建筑物的数据集的四个 LOD 的组合。

CityGML程序化建模开源引擎及数据集,CityGML

详细规范发布于:改进的 3D 建筑模型的 LOD 规范。

3、楼层内部实体

Random3Dcity 能够生成三个细节级别的基本内部:每层一个实体,整个建筑物一个实体(从外壳偏移),以及每个楼层一个 2D 多边形。 例如,这些实体可以用作构建体积计算的地面实况模型。

该引擎生成一些内部参数,例如托梁和墙壁厚度,并计算实体的几何形状。

CityGML程序化建模开源引擎及数据集,CityGML

4、多个几何参考

每座建筑物均以多个细节级别生成(共 16 个)。 此外,它们也是在多个几何参考中生成的(例如,LOD1 块模型顶部的不同高度)。

在下面,你可以看到 LOD1 块模型的七个变体,涉及顶面所使用的几何参考。

CityGML程序化建模开源引擎及数据集,CityGML

此外,覆盖区使用了不同的参考:实际覆盖区和屋顶边缘的投影。 这也适用于 LOD2 模型。

以下出版物描述了该主题:3D 建筑模型 LOD 的变体及其对空间分析的影响 。

5、引擎生成的 CityGML 数据集示例

截至 2015 年 3 月 11 日的版本(Random3Dcity v. 0.1.4)。 所有数据集包含 900 座建筑物。 下载数据之前请阅读附加信息。 如果你使用这些数据来准备一份出色的出版物,请引用以下论文:使用程序建模引擎 Random3Dcity 在 CityGML 中生成多 LOD 3D 城市模型。

如果你不愿意下载代码源并自己生成数据集,这里我准备了示例 CityGML 数据的压缩集合。 该 zip 还包含使用我的工具 CityGML2OBJs 生成的 OBJ 文件,如果需要转换为其他格式的3D模型,可以使用这个在线的3D格式转换工具。

下面给出了每个表示的描述。

详细程度 几何参考 Brep 或solid 文件名 注释
LOD0.1 实际占地 Brep LOD0_1_F0_H3.gml 仅包含占地空间
LOD0.2 实际占地,屋顶一半高度 Brep LOD0_2_F0_H3.gml 包含占地空间和屋顶边缘多边形
LOD0.3 实际占地,独立高度 Brep LOD0_3_F0_H3.gml 包含占地空间和屋顶边缘多边形
LOD1.1 实际占地,屋顶半高处的高度 Brep LOD1_1_F0_H3.gml
LOD1.2 实际占地,屋顶半高处的高度 Brep LOD1_2_F0_H3.gml
LOD1.2 占地从屋顶边缘偏移20 厘米 Solid LOD1_2_Fd_H5_solid.gml 不同的占地(偏移)
LOD1.3 实际占地,屋顶半高处的高度 Solid LOD1_3_F0_H3_solid.gml
LOD2.0 实际占地 Brep LOD2_0_F0.gml
LOD2.0 实际占地 Brep LOD2_0_F0_S0.gml 无语义
LOD2.1 实际占地 Brep LOD2_1_F0.gml
LOD2.2 实际占地 Brep LOD2_2_F0.gml
LOD2.2 实际占地 Brep LOD2_2_F0_S0.gml 无语义
LOD2.2 从屋顶边缘投影 Brep LOD2_2_F1.gml
LOD2.3 实际足迹 Brep LOD2_3_F0.gml
LOD3.0 墙壁从屋顶边缘投影 Brep LOD3_0.gml 空中要素
LOD3.1 不适用 Brep LOD3_1.gml 陆地特征
LOD3.2 不适用 Brep LOD3_2.gml
LOD3.2 不适用 Brep LOD3_2_S0.gml 无语义
LOD3.3 不适用 Brep LOD3_3.gml 非常详细的模型(系列中最好的)
LOD3.3 不适用 Brep LOD3_3_S0.gml 无语义
Interior-LOD0 不适用 Brep Interior-LOD0.gml 每层一个多边形
Interior-LOD1 不适用 Brep Interior-LOD1.gml 建筑物的一个实体
Interior-LOD2 不适用 Brep Interior-LOD2_2.gml 每层一个实体

备注和未来的工作

  • 可以使用我的工具 CityGML2OBJs 将此数据转换为 OBJ,如果需要转换为其他格式的3D模型,可以使用这个在线的3D格式转换工具。
  • 所有 gml:LinearRing 和 gml:Polygon 都有一个 gml:id,它是随机生成的 (UUID)。
  • 以 _S0.gml 结尾的数据集不包含语义区分的表面。
  • 坐标系是局部的。
  • 数据符合 CityGML 2.0。

该引擎的完整产品包含更多带有改组变体的数据集(更准确地说是 392 个)。 例如,并非所有带有高度的 LOD1 变体都放在这里。 如果你需要其他变体,请与我联系,或使用提供的代码生成它们。

6、错误的数据集(故意)

已经创建了一个辅助引擎来模拟上述原始数据集的采集错误。 该数据适合错误传播分析(例如,请参阅我的相关论文)。 此外,由于某些文件中的拓扑可能会损坏,因此其使用可能会扩展到其他领域,例如测试验证和修复工具。

6.1 位置误差

CityGML程序化建模开源引擎及数据集,CityGML

LOD 分布误差 错误数据集 注释
LOD1 σ = 0.0 m (GT) LOD1-F1H1 [5.7MB] Solid
σ = 0.2 m LOD1-F1H1-0.2 [5.7MB] Solid
LOD2 σ = 0.0 m (GT) LOD2-F1 [8.7MB] Brep
σ = 0.2 m LOD2-F1-0.2 [8.7MB] Brep
LOD3 σ = 0.0 m (GT) LOD3 [81.4MB] Brep
σ = 0.2 m LOD3-0.2 [81.4MB] Brep

注意:

  • 误差相当于 ISO 19157 空间数据质量元素位置精度。
  • 假设不存在不确定性的空间相关性。
  • 所有坐标的不确定性都相同。 垂直 (z) 坐标不单独处理。

6.2 重叠的对象

重叠的对象是不需要的。 因此,这些数据集也可能有助于测试验证和修复软件。 以下数据集包含在多个 LOD 中重叠的建筑物。
CityGML程序化建模开源引擎及数据集,CityGML

LOD 错误数据集 注释
LOD2 LOD2-重叠 [519kB] Brep
LOD3 LOD3-重叠 [5.2MB] Brep

6.3 不明确的语义

这些数据集包含打乱的语义表面和/或缺失的语义类。 表面的语义是统一随机的(以下各为 1/3:GroundSurface、RoofSurface、WallSurface)。

CityGML程序化建模开源引擎及数据集,CityGML

LOD 错误数据集 注释
LOD2 LOD2-F1-任意语义 [2.2MB] Brep
LOD3 LOD3-任意语义 [21.2MB] Brep, 门窗缺失(用 3 个类代替)

6.4 严重的拓扑错误

以下 LOD3 数据集包含拓扑错误,例如破碎的实体和内部位于其外部的多边形。
CityGML程序化建模开源引擎及数据集,CityGML

LOD 错误数据集 注释
LOD3 LOD3-错误拓扑 [21MB] Brep, 大多数错误都是外围窗口
LOD3 LOD3_solid-error-topology [1.9MB] Solid, 大多数错误是屋顶尖端自重叠

原文链接:CityGML程序化建模 — BimAnt文章来源地址https://www.toymoban.com/news/detail-648525.html

到了这里,关于CityGML程序化建模开源引擎及数据集的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 什么是程序化交易

    大到量化、程序化、高频交易、套利交易、主观投资这些基本的概念,小到网格交易、条件单、T+0、ETF套利、期现套利、算法拆单交易、打板策略等具体的投资方式。如果没有接触过这些,很容易混淆。 程序化交易: 指通过既定程序或特定软件,自动生成或执行交易指令的

    2024年02月06日
    浏览(47)
  • 【毕业设计】基于程序化生成和音频检测的生态仿真与3D内容生成系统----程序化生成地形算法设计

    Input: Output: 程序化生成地形算法是一种在计算机中生成地形的方法,通常用于游戏开发和虚拟现实应用。下面是几种常见的程序化生成地形算法: Diamond-Square Algorithm(钻石-正方形算法) 该算法通过随机值填充网格的四个角落,然后计算中间点的高度值,不断重复直到整个网

    2024年02月01日
    浏览(45)
  • 基于URP的程序化天空盒

    参考来源:   天空盒教程第 1 部分 |开尔文·范·霍恩 (kelvinvanhoorn.com) 【程序化天空盒】过程记录02:云扰动 边缘光 消散效果_九九345的博客-CSDN博客 程序化天空盒实现昼夜变换 - 知乎 (zhihu.com) 一、太阳          目标:改变光的方向,使天空球旋转(日夜交替);光的正方

    2024年02月15日
    浏览(57)
  • Unity 使用柏林噪声程序化生成地形

    参考教程链接 项目链接 👇对噪声和柏林噪声不了解的可以看下面这个讲解。 柏林函数简介   简单来说柏林噪声是一种连续的、渐变的噪声,不理解原理也无所谓,unity自带有Mathf.PerlinNoise(X-coordinate,Y-coordinate);我们可以根据这个来制作更有层次性的柏林噪声。你可以把这个

    2024年02月15日
    浏览(38)
  • 程序化交易接口策略过滤器–九宫格

    不同的程序化交易接口策略适用于不同的市场情况,有些交易策略使用于均值回归,有些则试用于方向明显的时候,有些试用于方向不明显的时候,因此,我们需要根据不同的市场情况,综合考虑方向和波动率,市场成交量来选择合适的交易策略。 本文介绍了一种选择程序化

    2023年04月09日
    浏览(43)
  • 分享股票量化交易程序化模型的设计思路

    一个股票量化交易程序化模型的入市设计往往伴随着设计者的偏好和交易时间框架等。主要分为震荡交易、套利交易以及趋势跟踪等。当然在近些年的发展中,也出现了类似遗传算法、人工智能神经网络等许多种类的系统模型。 但是对于大多数投资者来说,趋势跟踪系统可以

    2024年02月03日
    浏览(56)
  • 【程序化天空盒】过程记录01:日月 天空渐变 大气散射

    昼夜的话肯定少不了太阳和月亮,太阳和月亮实现的道理是一样的,只不过是月亮比太阳多了一个需要控制月牙程度(or添加贴图)的细节~ 太阳的话很简单,直接在shader里实现一个太阳跟随平行光旋转而旋转的样子就行。实现这个效果需要用到Unity内置变量 _WorldSpaceLightPos0

    2024年01月18日
    浏览(41)
  • 用java去实现程序化广告应该有哪些步骤?

    1. 需求分析和规划 在这一阶段,我们需要详细分析和理解项目需求,并制定相应的规划和计划。这包括以下几个步骤: 项目背景和目标: 理解项目的背景和目标,确定开发的目的和意义。 功能需求分析: 分析用户需求,明确项目需要实现的功能和特性。 技术可行性评估:

    2024年04月10日
    浏览(50)
  • “小程序化”成OA数字化升级突破口

    如果说新冠疫情引发了在线办公需求的激增,那么企业对数字化转型的渴望,则是数字化办公赛道持续火热的根本原因。 2020年新冠疫情爆发,远程办公成为了大部分企业无奈又必然的选择,三年以来,随着疫情的持续蔓延和常态化管控,在线办公逐渐成为刚需,企业对于在

    2024年02月08日
    浏览(38)
  • 【程序化天空盒】过程记录02:云扰动 边缘光 消散效果

    写在前面 写在前面唉,最近筋疲力竭,课题组的东西一堆没做,才刚刚开始带着思考准备练习作品,从去年5月份开始到现在真得学了快一年了,转行学其他的真的好累,,不过还是加油! 下面是做面片云的部分,关于日月、天空渐变、大气散射(忘了记录了,后面一定补上

    2023年04月09日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包