zoukankan      html  css  js  c++  java
  • 地表模型与建筑模型匹配方法

    地表模型与建筑模型匹配方法

     

    一、问题的引出:

            目前的三维城市平台地表模型构成方式为,由DEM构成TIN,再附上DOM从而形成地表模型;建筑和地物模型大都由建模软件手工制作完成,倾斜摄影和激光雷达在国内目前也普遍在最后环节由建模软件手工优化处理。建模软件制作完成建筑模型后如何赋予建筑地表高程的问题就由此引出。

            1、由DOMDEM生成地表,    

            2、目前行业中,一般根据CAD或影像底图进行建模,经常没有高程信息,制作的模型都在一个平面上。    

           3、那么如何把3D模型发布到GIS平台后才能与地表高度吻合呢?    

    二、解决方案

    步骤一:模型落地

    1、模型获取DEM同名点高程信息。

    具体步骤如下:

    1)、首先确定数据采用的投影坐标系。如CGCS2000BEIJING54XIAN80。转换DOMDEM数据到目标投影坐标系。

    2)、参照同名点把MAX场景的物体偏移到实际地理坐标位置。

    3)、输出模型的名称、XYZ坐标到文本。该步骤用都本人编的MAXSCRIPT小工具(脚本文件联系QQ250707670)。工具操作界面如下和输出的文本样式如下:

    2、模型获取DEM同名点高程信息。

    1)、加入Point坐标文件到ARCMAP,并叠加对应的DEM文件。

    2)、提取DEM高程值,写入点SHP文件的属性表中Spatial Analyst Tools>Extraction>Extract ValuestoPonits

    3、读取Point要素SHP文件中高程属性字段值赋予模型

    1、把SHP数据的DBF文件的数值复制到文本文件中,编辑成下图所示格式:

    2、打开模型场景运行脚本(QQ250707670),读取文本,程序会自动根据文本中的NAME查找模型,并赋值模型文本中对应的坐标(X,Y,Z)值。程序操作界面和代码如下

    3、运行程序后,所有模型已经移位到目标位置。

    4、在GIS平台中三维模型和地形已大致匹配。建筑底部中心已跟DEM匹配,但是由于建筑底面是个平面,因此建筑局部还会插入地形或者飘起的现象。

            匹配效果如下图:

    由于DEM格网精度不够,并且制作的模型与之本身不是一套数据。所以步骤一完成后,仍然会有细节问题。那么如何解决呢?能不能根据建筑轮廓线重构高程数据呢?

    步骤二:重构DEM

     

    1、获取模型建筑轮廓。

    1)、如果有CAD可以由CAD提取。这里我们由建筑三维场景通过脚本工具提取。运行脚本工具,界面如下。按脚本123顺序操作,可提取场景建筑底部轮廓。

     

     

    2)导出场景为CAD文件,打开ARCMAP载入CADPLOYGON要素。

     

    2、根据建筑轮廓线构建TIN

    1)通过3DAnalyst工具,把要素构成TIN

    TIN的要素最好坐标在0点附近,否则计算量非常大。

    3、转换TINRASTER

    1)、通过3DAnalyst工具,把TIN转成RASTER

     

     

    2)、对DEM栅格进行裁切取出边沿部分(边沿部分由于没有建筑,要素点不足,所以构TIN后褶皱比较明显。

     

    3)、把DEM栅格数据利用ARCTOOLBOX工具偏移到正确的坐标位置。(一开始为了减少构TIN的计算量,把建筑轮廓线移位到原点附近位置,现在转成栅格后要移回来)

    DEM重新和DOM生成地形匹配模型看看效果。如下图:

     

     

    遗留问题

    重构的高程数据跟原始DEM接边的衔接问题。建筑轮廓要素点不足,重构的DEM数据褶皱较明显,DEM内插?

  • 相关阅读:
    Pyhton学习——Day60
    Pyhton学习——Day58
    Python——微信数据分析
    C/C++文件指针偏移
    I/O流+统计文件词频
    vector概念
    new/delete工作机制
    Singleton单例类模式
    对象数组
    特殊成员函数
  • 原文地址:https://www.cnblogs.com/eagleknight/p/3479971.html
Copyright © 2011-2022 走看看