在自然资源三维立体“一张图”的数据体系中,利用倾斜摄影测量技术制作的实景三维模型具有信息丰富、效果直观、展示效果真实等优点,能最大程度发挥调查成果的综合效益,常用于展示地表要素状况等,是三维自然资源数据底板的核心数据之一。
实景三维模型怎么来的呢?
济南用魔镜打造元宇宙城市,难道是真的?
步骤一
无人机影像
实景三维模型的真实感,来自于其现实、直观的质感,这种和现实相同的色彩,源自无人机在空中拍摄的影像。实景三维模型的制作,要从数据采集开始。
从拍摄角度来看,无人机影像,主要分为垂直影像和倾斜影像两种。(绿色框内影像的视角垂直于地面,被称为“垂直影像”,其他4个框内的影像与地面形成一定的倾斜角度,被称为“倾斜影像”。)

▲图1 无人机影像视角示意图
步骤二
摄影测量
只有影像做不出实景三维模型,还需要把二维的影像进行一系列处理才能形成实景三维模型。
首先,要通过摄影测量对相邻影像进行计算,获得空间上的三维距离信息。具体来说,摄影测量是基于相邻影像之间重叠部分的同名点进行影像匹配,获得相邻影像之间的视差和深度(距离)信息的一种技术。▲图2 相邻影像之间的重叠关系示意图
结合每张影像的位置、姿态信息,利用摄影测量技术解算处相邻影像之间的空间关系。(以图3为例,这是4张影像解算后的空间关系示意图,由于参与建模的影像数量通常会非常多,这些空间关系比这个复杂得多。)▲图3 相邻影像之间的空间关系解算示意图
步骤三
彩色点云
基于这些关系通过影像密集匹配将影像中的各像素在三维空间中离散化,成为三维空间中一个个离散的带有彩色的点,称之为“彩色点云”。▲图4 彩色点云效果
彩色点云既有作为点云的几何特性,每个点又带有彩色信息。通过TIN三角构网方法,将一个个离散的点云点连接形成一个个三角形面片并形成三角网,作为实景三维模型中的基础模型——“白模”。▲图5 白模效果
这时候,发挥彩色点云的彩色属性——根据点云的空间位置,将点云的彩色信息映射到白模表面。这样,既有几何外观、又有真实彩色纹理的实景三维模型就此大功告成了!▲图6 实景三维模型的效果
实景三维模型有哪些应用?
经历了上述艰难的制作过程后,如果实景三维模型仅仅只是用来浏览的话,也未免太浪费了吧?实际上,实景三维模型兼具三维和实景两大特性,在自然资源的业务工作上,它有着丰富的空间分析应用,为其他行业提供了强大的数据支撑。
应用1
日照分析
根据研究区的地理位置,利用日照分析功能即可评估实景三维模型所在地一年四季的日照和阴影变化。
▲视频1:某地建筑物夏季某日的日照阴影分析
应用2
填挖方分析
实景三维模型对某地进行填挖方分析后,即可评估出平整一定范围的地表所需要的填、挖方量分别是多少,大大解放了工程测量人员的内外业工作量。图7 某山坡广场的填、挖方量评估
应用3
淹没分析
广东省地处(亚)热带季风气候区,台风、暴雨天气多发。在实景三维模型的支持下,我们可以直观便利地分析评估暴雨天气对低洼地区的淹没威胁,及早制定相应对策。图8 某低洼货柜场的淹没威胁评估
图9 某低处工地的淹没风险预测
基于实景三维模型的空间分析应用远不止这些,在自然资源管理工作中常用到的还有三维量测、三维缓冲区、通视性分析、天际线分析等,受限于篇幅的缘故,小编就不在此一一详细列举了。
随着自然资源三维信息化建设和“实景中国”的不断推进,相信实景三维的应用一定会越来越广泛,三维化的自然资源信息化体系将为自然资源管理和决策提供更完备的支撑和保障,更精准、高效地履行自然资源“两统一”职责。
引言:
自然资源部发布《2020年自然资源部网络安全与信息化工作要点》中明确提出,推进自然资源三维立体“一张图”建设。那么如何构建三维立体自然资源“一张图”,让小编带你一起看看吧!
构建三维立体自然资源“一张图”
利用基础测绘成果,以数字高程模型(DEM)等三维测绘成果为基底,以遥感影像为背景,集成整合地下空间、地表基质、地表覆盖、业务管理等各类自然资源和国土空间数据,按照统一的标准,构建自然资源三维立体“一张图”,全面真实地反映自然资源现实状况和自然地理格局。
问
小李:按照部文件要求,制作全省地形三维模型,那么什么是地形三维模型呢?
小建:地形三维模型,简单地说,就是融合不同尺度及分辨率的航空影像、卫星影像以及数字高程模型,生成带有精确地理位置的、逼真的地形数据库。▲地形三维模型构成图
在地形三维模型之上就可以承载二维矢量、实景三维、白模、BIM模型、地下地质模型等各类型数据成果,从而实现二三维一体化展示和分析功能。
▲广东某市地形的展示效果
问
小李:这么炫酷的三维模型是怎么制作的呢?
小建:在数据层面,融合正射影像和数字高程模型,制作覆盖全省范围的地形模型。主要的工作流程如下:▲地形三维模型制作技术流程图
问
小李:在高要求高标准前提下,我们在地形三维模型的生产过程中主要面临的困难是什么呢?
小建:地形三维模型的生产对于我们也是一项新的挑战。
一是数据处理量大:全省影像约30T,数字高程模型数据约2T,需要在3个月内完成所有的数据处理和加工,包括拼接、匀色、裁切等,对机器设备以及技术工艺要求高;
二是数据源更新不同步:全省影像和数字高程模型目前采用分区域持续更新,难以同时开展全范围的生产;
三是应用效率要求高:为满足三维应用的要求,不仅需要具备共享开放的能力,同时需保障其分析展示等应用效率。
问
小李:那我们是如何化解这些难题呢?
小建:针对以上困难,我们三维制作团队主要从生产工艺流程、提升展示效果、优化算法模型、整合发布创新4个方面进行突破,化解难题。
一是整合优化生产工艺流程:我们三维技术团队仔细分析了数据情况,研究了地形三维模型生产、发布、共享的技术流程,借鉴了电子地图的制作发布方法,制定了详细的地形三维模型制作技术方案,提高地形三维数据处理效率;
二是提升展示效果:采用分层构建数据模型,优化显示效果。在不同比例尺下,分别采用适应的遥感影像和数字高程模型构建地形三维模型,解决了三维模型整体色彩不一致性的问题,提升显示效率;
三是优化数据算法模型:使用金字塔数据引擎、四叉树数据索引算法、快速LOD算法、小波快速压缩等算法将不同时相、不同空间参考、不同分辨率的航空影像、卫星影像和数字高程模型进行融合,构建海量三维地形模型;实现图像高压缩和快速还原,调图响应时间不超过0.5秒,从而在根本上解决了海量数据的网络浏览问题。在保证数据精度的前提下,全省原始影像数据约25T,地形三维模型最终成果约2T,压缩比达1/10;▲地形三维模型金字塔结构
四是模型整合发布创新:数据成果采用全新的分块建模直连发布方式,按行政区划分块构建地形三维模型后,在服务端整合为完整的全省地形三维服务,直接发布到客户端进行无缝浏览,减少创建三维地形数据集的时间,并实现分块快速更新。
经过广东省国土资源技术中心三维技术团队的努力,现已初步完成全省范围的地形三维模型制作,并开展了与业务系统对接工作。今后,将深入学习研究最新的三维技术,做好广东省三维基础地理信息数据库的建设工作,同时围绕服务自然资源业务,提升省级三维平台共享服务和应用支撑能力。▲广东某地的地形三维模型效果
我有一个模型:classItem项目有一个属性“商店”基于存储的值,我希望Item对象对特定方法具有不同的行为。Rails中是否有针对此的通用设计模式?如果方法中没有大的if-else语句,这是如何干净利落地完成的? 最佳答案 通常通过Single-TableInheritance. 关于ruby-on-rails-Rails-子类化模型的设计模式是什么?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.co
我需要从一个View访问多个模型。以前,我的links_controller仅用于提供以不同方式排序的链接资源。现在我想包括一个部分(我假设)显示按分数排序的顶级用户(@users=User.all.sort_by(&:score))我知道我可以将此代码插入每个链接操作并从View访问它,但这似乎不是“ruby方式”,我将需要在不久的将来访问更多模型。这可能会变得很脏,是否有针对这种情况的任何技术?注意事项:我认为我的应用程序正朝着单一格式和动态页面内容的方向发展,本质上是一个典型的网络应用程序。我知道before_filter但考虑到我希望应用程序进入的方向,这似乎很麻烦。最终从任何
我有一个包含模块的模型。我想在模块中覆盖模型的访问器方法。例如:classBlah这显然行不通。有什么想法可以实现吗? 最佳答案 您的代码看起来是正确的。我们正在毫无困难地使用这个确切的模式。如果我没记错的话,Rails使用#method_missing作为属性setter,因此您的模块将优先,阻止ActiveRecord的setter。如果您正在使用ActiveSupport::Concern(参见thisblogpost),那么您的实例方法需要进入一个特殊的模块:classBlah
我有一个表单,其中有很多字段取自数组(而不是模型或对象)。我如何验证这些字段的存在?solve_problem_pathdo|f|%>... 最佳答案 创建一个简单的类来包装请求参数并使用ActiveModel::Validations。#definedsomewhere,atthesimplest:require'ostruct'classSolvetrue#youcouldevencheckthesolutionwithavalidatorvalidatedoerrors.add(:base,"WRONG!!!")unlesss
我想向我的Controller传递一个参数,它是一个简单的复选框,但我不知道如何在模型的form_for中引入它,这是我的观点:{:id=>'go_finance'}do|f|%>Transferirde:para:Entrada:"input",:placeholder=>"Quantofoiganho?"%>Saída:"output",:placeholder=>"Quantofoigasto?"%>Nota:我想做一个额外的复选框,但我该怎么做,模型中没有一个对象,而是一个要检查的对象,以便在Controller中创建一个ifelse,如果没有检查,请帮助我,非常感谢,谢谢
我有一些非常大的模型,我必须将它们迁移到最新版本的Rails。这些模型有相当多的验证(User有大约50个验证)。是否可以将所有这些验证移动到另一个文件中?说app/models/validations/user_validations.rb。如果可以,有人可以提供示例吗? 最佳答案 您可以为此使用关注点:#app/models/validations/user_validations.rbrequire'active_support/concern'moduleUserValidationsextendActiveSupport:
对于Rails模型,是否可以/建议让一个类的成员不持久保存到数据库中?我想将用户最后选择的类型存储在session变量中。由于我无法从我的模型中设置session变量,我想将值存储在一个“虚拟”类成员中,该成员只是将值传递回Controller。你能有这样的类(class)成员吗? 最佳答案 将非持久属性添加到Rails模型就像任何其他Ruby类一样:classUser扩展解释:在Ruby中,所有实例变量都是私有(private)的,不需要在赋值前定义。attr_accessor创建一个setter和getter方法:classUs
我有一个正在构建的应用程序,我需要一个模型来创建另一个模型的实例。我希望每辆车都有4个轮胎。汽车模型classCar轮胎模型classTire但是,在make_tires内部有一个错误,如果我为Tire尝试它,则没有用于创建或新建的activerecord方法。当我检查轮胎时,它没有这些方法。我该如何补救?错误是这样的:未定义的方法'create'forActiveRecord::AttributeMethods::Serialization::Tire::Module我测试了两个环境:测试和开发,它们都因相同的错误而失败。 最佳答案
ruby如何管理内存。例如:如果我们在执行过程中采用C程序,则以下是内存模型。类似于这个ruby如何处理内存。C:__________________|||stack|||------------------||||------------------|||||Heap|||||__________________|||data|__________________|text|__________________Ruby:? 最佳答案 Ruby中没有“内存”这样的东西。Class#allocate分配一个对象并返回该对象。这就是程序
我正在使用Rails3.1并在一个论坛上工作。我有一个名为Topic的模型,每个模型都有许多Post。当用户创建新主题时,他们也应该创建第一个Post。但是,我不确定如何以相同的形式执行此操作。这是我的代码:classTopic:destroyaccepts_nested_attributes_for:postsvalidates_presence_of:titleendclassPost...但这似乎不起作用。有什么想法吗?谢谢! 最佳答案 @Pablo的回答似乎有你需要的一切。但更具体地说...首先改变你View中的这一行对此#