(以前做过地形建模方面的经验分享给大家,是从我研一交的一篇当做期末作业的文章中节选的,初始数据为1:2000cad地形图,文中主要介绍从等高线到地形模型的几个关键步骤)
3 基于Creator的地形仿真建模实例研究
本章结合实例,选择一块真实地形范围,利用该地形范围的数字地形图,挑选出等高线信息,结合Creator软件构建三维模型的数据的标准,通过一系列的数据转换和中间数据的生成,制作出Creator软件支持的直接生成地形模型的数据。生成地形模型后,再进行纹理贴图和特征映射等操作。最后,构建出了所选地形区域的完整三维模型数据库。
3.1、初始数据准备阶段。
本文选取某文物保护区为地形仿真建模区域,该区域中有山、河流、道路、房屋建筑等多种地理要素,对于构建一个完整的地形模型数据库来说是一个比较合适的研究区域。最初掌握的初始数据有两部分:一部分是研究区及其周边范围内AutoCAD环境下的1:2000数字地形图(DWG格式),其中包含有等高线层、水层、植被层、高程控制点层、特征数据点层等,主要使用到的是等高线层。另一部分是完全覆盖研究区域的卫星影像数据,主要利用其具有地理坐标的特征,对地形模型做基于地理坐标的纹理贴图。
首先,在AutoCAD环境下,将包含多种地理要素(等高线、河流、建筑物、林地等)数据的地形图中的等高线层提取出来(包括计曲线和首曲线)。根据等高线的特性,所得到的等高线层数据中,每一条等高线必须是连续的、闭合的、且互不相交的(不考虑图幅边缘部分和等高线密集处);并且每一条等高线必须具有端点水平坐标和标高值。但是,由于工作人员可能在数据采集和生成过程中的不严密或者粗心,会造成断线和未赋值的情况;另外,像纸质地形图一样,一般较大区域的地形图按比例尺大小也会分割为若干图幅量测和保存,这样,图幅拼接后,相邻图幅边缘处的等高线也是不相连的,甚至有错位。由于这些因素的存在,都要求我们需要对等高线数据进行仔细检查和编辑。这样才能保证下一步生成DEM数据乃至生成地形模型时,不出现明显非正常误差。一般可以通过属性选择查找零值线,而断线的查找则应多注意图幅拼接处。然后,将DWG格式的等高线数据转换为AutoCAD的交换数据格式DXF,以备下一步使用。
对于卫星影像数据,可对比地形图大至截取所需区域,剪裁掉不需要的部分,也可以做裁剪分块处理,以方便以后对地形模型进行纹理映射。
3.2、中间数据生成阶段。
主要工作为,将准备好的DXF等高线数据转换成网格DEM,再使用第三方软件(如Global Mapper)转换成USGS DEM(是美国国家标准的地形文件,是Creator 2.4及其以上版本 plug-in DED-BUILDER支持输入的文件之一),使用Creator的DED-BUILDER插件制作出地形文件DED(Creator地形生成器所特有的文件格式)。
本文制作USGS DEM主要用到的软件有ArcGIS 9.3和Global Mapper 10,具体方法和步骤如下:
首先,使用ArcCatalog将只包含等高线层的DXF数据转换为Shapefile文件格式。由于此次试验所用到的数据量并不是很大,没有复杂的数据管理和操作,而且仅仅需要提取出等高线数据的高程字段,因此使用SHP格式来存储即可满足需要。当然,使用Geodatabase文件格式也是可以的。
第二,将SHP文件中的高程字段提取出来。从DXF文件中导入的Polyline图层中有很多属性我们是用不到的,可以在ArcCatalog或ArcMap中删掉这些属性,只要保留Elevation字段,这个字段保存的是等高线的标高值。此时,再次检查字段值中有无异样数据(如0值),如有应参考相邻等高线属性以赋值。
第三,利用SHP数据生成GRID DEM(ArcGIS BinaryGRID)。此步可由多种方法完成,如利用ArcGIS软件的ArcScene工具或3D Anaylst模块、ERDAS IMAGING软件或者ENVI软件都可以最终生成各自支持格式的格网DEM数据。本实验所使用工具为ArcGIS软件的ArcScene工具,其它两种方法不再叙述。ArcScene是一个适合于展示三维透视场景的平台,可以在三维场景中漫游并与三维矢量与栅格数据进行交互。ArcScene作为ArcGIS Desktop中的独立程序,扩充了ArcMap和ArcCatalog,能更有效地管理3DGIS数据、进行3D分析、编辑3D要素和建立具有3D视图属性的图层。ArcScene还可以通过在ArcMap中使用表面提供z值来数字化新的3D栅格数据和图形,为从已经存在的二维GIS数据中建立3D要素提供了可能。利用ArcGIS制作GRID DEM,首先要把需要三维化的Shapefile数据加载到ArcScene模块中,键人命令3D AnaylstCreate/Modify TINCreate TIN From Feature,ArcScene可以通过插值计算,自动生成TIN。然后再利用命令3D AnaylstConvertTIN To Raster,将生成的TIN转化为GRID DEM。需要注意的是,在此过程中,生成TIN的时候,空间采样率的设置直接关系着GRID DEM精度和以后生成地形模型的数据量问题,要根据自己的工程要求和目的实验选择出合适的采样值。但是,一定比例尺的等高线数据所能提供生成的GRID DEM精度最高值也是一定的,一味降低采样间隔也不一定能达到更高精度效果,所以空间采样率可以根据比例尺的大小来设定。
第四,将ArcGIS BinaryGRID转换为USGS DEM格式。上步得到的DEM并不能为Creator所直接应用,转换工作需要用到上面提到的Global Mapper完成。Global Mapper是一款功能强大的地图绘制软件,它支持许多种常用矢量和栅格数据的读取、编辑、浏览和输出。本实验主要用它来读取ArcGIS的格网DEM,然后以USGS DEM格式输出。其中,有一点需要说明的是,具有地理属性的网格DEM会涉及到地图投影和大地坐标系的问题。基于此次实验数据的地理位置和Creator软件的特点,将投影坐标系设置为UTMWGS84。此设置可在第一步SHP文件生成的时候使用ArcCatalog进行,也可以在此次格式转换过程中用Global Mapper进行设置,并选择正确的代号。
第五,生成地形DED文件。选择Creator菜单栏中的Terrain菜单下的Build DED选项,添加USGS DEM文件,直接确定即可执行转换,转换后的文件后缀为.ded。或者使用软件安装目录下的readusgs工具直接进行转换。
3.3、地形模型生成阶段。
首先,通过Terrain菜单中New Project新建一个工程,选择地形DED文件,导入打开后如图所示。
本实验目的仅为对Creator地形模型制作工作做一个简要的介绍,因此试验中的相关操作和参数尽量从简。
主面板各参数大不分保持默认即可。在project面板中设置好相关路径;在Map面板中设置地图投影,数据库单元(database units)设置为meter,地形数据库原点(databaseorigin)默认为地形区域左下角,地图投影设置为UTM,地球椭球模型设置为WGS84,UTM zone根据经纬度计算出为48。
在Triangle面板中主要设置三角形花算法,及地形模型转换算法。根据本实验数据特点及要求,选择Polymesh转换算法,也是最常用的算法,其基本思想是,通过在原始数字高程数据地形文件中对高程信息进行有规律的采样来获取地形多边形的顶点坐标,进而创建矩形网格状的地形模型数据库。下边需要注意的是采样率的设置,为了避免产生不完整的地形多边形对,设置的高程采样率值应该可以被地形数据文件中的单位地块区域高程点整除。本实验设置为2,Z方向比例不变,其它设置保持默认即可。
Texture面板中主要设置地形纹理直接贴图。本实验选取的是后处理的地形纹理贴图方式,将在以后的内容中阐述纹理贴图方法。
Batch面板主要是地形批处理的相关设置,本实验不需要使用,不做阐述。
Feature面板设置特征数据直接映射的相关方法和文件,但需要地形转换为批处理模式,因此本实验选择在模型生成后再进行特征数据的准备和映射等相关工作。
完成上述设置后,确定即可开始地形模型转换,生成FLT模型。
3.4、模型生成后处理阶段
1> 地形纹理贴图
应用地形纹理有以下几种方法:
(1)在地形转换窗口Texture面板直接指定使用当前纹理调板中的地形纹理,在生成地形模型数据库的过程中,当前纹理就会自动映射到相应地形多边形上。
(2)使用纹理工具箱中的”GeoPut Texture”工具。
(3)使用”Terrain/Batch GeoPut”菜单命令。
无论使用哪种方式,正确完成映射过程的一个共同前提是地形纹理跟地形模型的地理坐标应该完全匹配,否则就会产生错误的映射结果。因为地形纹理实际上是通过三点映射的贴图方法进行的,所以必须为其设置映射起始点和其他两个控制点的经纬度坐标。
2> 特征数据的制作和投影
(1)特征数据的获取
DFD(digital feature data)是Creator专用的数字特征数据格式,可由其它数据如DFAD转换得到。当然,一般都用户都不能容易地得到DFAD数据,所以我们可以自己制作DFD特征数据,可以在Creator中通过手工矢量化得到。
矢量化必须在特征图层上进行,可通过新建或打开原有图层获得。要新建或打开特征图层,必须先打开OpenFlight格式的地形文件。特征图层“漂浮”在地形的上方。Creator提供了点、线、面的矢量化工具,也可使用纹理作为背景图像进行矢量化。纹理可以是一般纹理,也可以是地理纹理,使用地理纹理矢量化后得到的特征数据是有地理坐标的,可以与地形匹配。使用地理纹理矢量化可以不打开地形文件,方法为:点击“Build Polys from Image...”菜单,在弹出对话框中选择地理纹理文件,如果是大尺寸纹理文件可分成若干小块,在对话框中设置每小块的尺寸大小,并设置分块纹理文件的输出目录。确定后Creator 中会出现纹理图像,在创建新特征图层并设置特征数据的Parent 后可使用点、线、面矢量化工具进行矢量化,并同时设置特征的类型和属性。矢量化完成后保存为特征数据文件。
(2)特征投影
特征投影是指将特征投影到地形上,在进行具体特征投影之前需要准备特征投影文件和设置相关参数,如特征参数文件、投影参数、模型替代、规则和动作、调色板文件等。
然后,选择投影模型。Creator提供了三种投影模型:手工后投影(Manual Post-Projection)、自动后投影(Automatic Post-Projection)、自动预投影(Automatic Pre-Projection)。
后投影是指在生成地形后再将特征投影到地形上。Creator提供了进行手工后投影的工具,其中带“Cut”的菜单会在特征投影后将其与地形“缝合” 成一个表面,与预投影效果相同,但会产生更多的多边形。使用手工后投影必须先打开地形文件,并加载特征图层。使用“High/Low Res Library Substitution”菜单投影特征时, 其FID 必须预先定义了SubstituteHigh/Low Resolution Model的投影动作类型,并选择了High/Low分辨率的OpenFlight替代模型。
自动投影包括自动后投影和自动预投影,后投影是在地形建模完成后再投影特征,而预投影则是先投影特征然后再在其周围“缝合”上地形。两者可分别单独投影,也可一起混合投影,都在Terrain Window对话框中完成。
以上是本实验制作完整的地形模型数据库的全部流程。最终生成的地形模型数据库如下图所示: