GIS课程设计技术设计书

  • 格式:doc
  • 大小:724.50 KB
  • 文档页数:15

地球科学与技术学院《GIS课程设计》作业——《基于SKETCHUP和ARCENGINE的三维GIS开发》设计文档教师 ****************班级地理信息系统组员 **********************设计时间 2011年8月28至9月21日基于SKETCHUP和ARCENGINE的三维GIS开发前言校园三维GIS系统以虚拟片区为研究区域,建立起了逼真的虚拟表示校园内各类设施的三维可视化平台。

通过基于ArcGis平台建立试验片区二维数据,导入SketchUp中进行三维建模,并通过Gcodatabase数据模型有效地组织和管理包括三维模型数据在内的各种空间数据利用ARCEngine进行系统平台的开发,实现了三维模型数据的可视化,并在可视化的基础上,实现了各类三维空间查询、空间量算及空间分析等功能。

本设计书详细介绍了校园三维GIS系统的总体设计、系统数据库设计以及系统中功能模块的开发。

通过一个实际的开发实例展示了利用SketchUp实现快速场景建模,并利用.NET平台对AicGIS二次开发,完成场景驱动,以实现三维GIS系统的整个流程。

1系统总体设计校园三维GIS系统旨在提供一个校园三维显示的平台,在该平台上用户可以查看编辑三维建筑物属性、定位兴趣点、量算距离高度以及实现三维空间分析等操作。

系统是采用COM技术在 开发环境下以ArcEngine提供的SoeneControl作为三维显示平台,TOCControl作为图层导航控件,其他功能通过开发实现,包括模型更新导入功能、属性编辑功能、建筑定位查询功能、三维交互测量功能、三维空间分析功能等。

系统的数据层利用ArcGIS的GeoDatabase数据模型进行三维空间数据的统一管理。

设施1.1系统开发平台小区三维 GIS系统选择 WindowsXP为操作系统, AicGISEngine10为开发平台SketchUP软件为地理要素的的建模平台,采用2010为编程开发环境。

ArcGISEngine10由一组核心的AioobjeetS开发包组成,其对象与平台无关,能够在各种编程接口中调用,开发者通过它提供的强大工具构建定制的GIS功能。

所有用 ArcGISEngine构建的应用需要 ArcGISEngine运行库,它提供了ArcGIS应用的核心功能,这样程序发布时就不要求用户在机器上必须安装ArcGIS,而只安装一个运行库和相应的许可文件,不同级别的功能是由许可文件控制。

通过ArcGISEngine提供的嵌入式的GIS组件,就能向以非Gis为核心的应用程序中嵌入特定GIS功能。

有本试验系统的开发目的与所要实现的功能要求,即侧重于表现小数据量、小范围区域内精细场景的刻画,要求能够支持Tin模型和复杂三维符号的显示等,因此选择采用 ArcGISEngine提供的SceneC0ntrol控件进行三维系统的开发。

1.2系统开发框架系统开发框架的基本思想是利用SketchUP实现校园三维场景建模,利用ArcGIS平台中 ArcGISEngine组件开发包进行二次开发,实现三维场景驱动。

在校园虚拟三维场景的基础上管理小区内的各类设施,将空间数据、属性数据管理相结合。

采用基于COM技术的集成开发模式,通过可视化软件开发工具将功能进行集成,形成最终的GIS应用。

图1.1说明了系统的开发框架图1.1三维GIS试验系统开发框架图1.3系统功能设计校园三维GIS系统的主要特点和功能有:提供友好的操作简单的用户界面,将地理信息、计算机图像信息以及多媒体信息相结合,增强了通过可视化系统,能对三维景观进行动态漫游及飞行,从整体上更加直观和综合地对三维景观进行全方位的浏览,提供距离/面积量算、空间查询、超链接、三维分析等功能。

要求试验系统真实感强、运行效率高。

系统共分为五个功能模块,分别为三维场景浏览模块、信息查询模块、内部实景超链接模块、数据更新模块及空间分析模块。

图1.2为系统功能结构的示意图。

图1.2三维GIS试验系统开发功能图1.4系统数据库设计系统采用GcoDatabase数据模型来统一管理空间数据和属性数据。

GeoDatabase是Aic/hifos引入的一种全新的空间数据模型,实际上是建立在DBMS之上的统一的、智能化的空间数据库。

GcoDatabase使用了面向对象的方法,使得要素可以有自己的行为和属性,另外要素类具有继承性、多态性和封装性。

这样,以更加符合自然的行为和人的思维方式去组织数据,更精确的模拟真实世界。

图1.3为地理空间数据模型GcoDatabase组织结构示意图。

图1.3三维GIS试验系统开发数据库设计图2.SketchUp模型应用于ArcEngine中虽然户ARCEngine平台支持将其他格式的三维模型作为点、线、多边形三类地图数据的三维标注符号(3DMakerSymbol)显示在三维场景中,这些格式包括邮DsMax创建的*.3ds格式、 MultigenCreator建立的*.flt格式以及sketchUp 建立的*.5种格式,只要显示时将符号调整到合适位臵即可。

但作为符号的话只能视为点状对象进行点缀而已,并不能对其进行GIS分析,与我们用Multipatch 存储三维模型数据来做GIS查询分析的初衷相去甚远,故此处不多赘述。

在sketchUp中建好的三维模型需要转换为Multipatch格式才能在户ARCEngine三维场景中直接加载应用以做查询分析。

既可以在户ARCEngine中编码转换,也可以在sketchUp中通过插件转换。

以下详细论述sketchUpEsri插件转换本文主要通过 sketchUpEs班插件转换生成MultiPatch三维模型,安装好sketchUP6EsRI插件,并将 sketchUp6Toofs工具条添加到户JcGIs应用程序界面。

Sketchupesri6具体安装方法:1安装VS2010,2安装sketchup63.安装sketchupesri6:第一个组件(GIS Plugin)必须放到SketchUp Pro 6.0程序的安装目录下,例如(D:\Program Files\Google\Google Sketchup 6\),否则无法在SketchUp Pro 6.0-Export-3D model-的下拉菜单中没有*.mdb格式。

第二个组件(3D Analyst SketchUp 3D Symbol Support )必须放到ArcGIS 程序的安装目录下C:\Program Files\ArcGis\安装好SketchUp6 ESRI插件后,在ArcMap和ArcScene中会加载一个SketchUp 6 Tools工具。

此工具的作用是将ArcMap和ArcScene 中打开的数据(包括TIN数据、矢量数据、栅格数据)导入到SketchUp 中作为底图或者参考图层进行地物或地形的三维建模。

[7]需要说明的是,所有导入到SketchUp的数据均会保留原来与ArcGIS中一致的坐标信息,这样的话将SketchUp的模型或地形导到ArcGIS中时与原来的位臵能保持完全一致。

如图1.4所示同时在SketchUp的Export/3D Models里的Export Type中会多出ESRI Multipatch(*.mdb)项,这样就可以把skp的模型直接导成Multipatch格式。

并且在导出模型的同时可以设臵每个multipatch模型的属性信息。

将建好的sketchUp模型通过sketchUp中的Expot -3dModelsl具,把skP格式的模型直接导成Multipatch格式。

从skecthUp到户ARCGIs数据转换时,每个选中的sketchup对象都以MultiPatch格式输入到已经存在或最新创建的地理数据库中。

在导出模型的同时设臵每个MultiPatch模型的属性信息,如建筑物名称、地址、使用者或者建筑物照片。

即可在户JcGIs平台中对模型进行可视化、查询、分析等操作。

3系统功能实现三维Gls辅助校园规划系统利用ArcEngine中的MapContr1、sceneContrI作为二维、三维功能开发的显示平台,在此基础上编程开发实现工业园规划相应的功能。

SceneC0ntrDI是嵌入式三维开发组件,负责场景的三维显示以及完成对鼠标操作的响应。

scenecontrol中包含scene,SceneGraph。

scene对象和MaP 对象一样负责图层 ((Layer)的管理,包括图层的添加、移除、显示和隐藏等。

sceneControlI提供助addsxFile方法来导入Scene文档。

sceneContro1通过接口ISceneViewer来进行三维视角及方位的设臵,IsceneViewer对象中包含的Camera便是用来完成类似相机镜头的功能,Camera中包含了设定观察者的位臵的obs~和选取相机的视角的Target。

3DProp的es用来设臵三维要素的一些三维特性,如高度拉伸、图层叠加、光照渲染等功能。

G哪hicsLayer3D则是用来存储场景中的三维符号模型。

以下我们结合工业园规划的实际需要利用这些对象类来创建工业园的三维场景并实现各部分功能。

3.1 加载数据(具体实现代码+贴图)增加加载数据功能来导入.lyr文件及.SxD文件,主要实现代码如下:代码:OPenFileDialogl.Tltle=‛AddData,,OPenFileDialogl.Filter=‛LayerFiles(*.lyr){*.lyr}MapDoeuments,,(*.sxd)1*.sxd,,OPenFileDialogl.InitialDireetory=‛ E:\3Dtest\data\,,‘直接引用Ar。

scene文档SeeneViewe汇trll.DocName=‚ e:\telnP冶nyseene.sxd‛‘添加一个图层SeeneViewe尤 trl.SceneGraph.Seene.AddLayerPLayer‘添加一个图形元素DimPMapAsIBasieMapSetPMap二SeeneViewerCtrl1.SeeneGraph.SeeneDimPGConAsIGraphiesContainer3DSetPGCon=PMap.BasieGraphiesLayerSetPGCon=PGLayerPGCon.AddElementPElementViewer.RedrawFalse在SeeneControl控件中加入栅格图层通过SceneControl的一些属性及方法你将增加栅格影像到你的三维系统中。

加载栅格影像到三维GIS系统主要代码如下:PrivateSubbtl七气ddRasterLayer--Cliek(ByValsenderAsSystem.Objeet, ByValeAsSystem.EventArgs)HandlesbtllAddRasterLayer.CliekDilnfile,filePath,fileName, fileExtensionAsStnngDimlayerAsILayerDimWSFaetAsIW6rksPaeeFaetoryDlmRasterWOrksPaeeAsIRaster从八〕rksPaeeDimRastefDatasetASIRasterDatasetDimRasterlayerAsIRasterLayerOPenFileDlalogl,Filter=‛ RasterFiles(*.tio}*.ti月 Allfiles(*.*)}*.*‛ If(OPenFileDialogl.ShowDialog()<>DialogResult.OK)ThenExitSubfile=OPenFileDialogl.FileNameWSFact=NewRasterW6rksPaceFaetoryRasterwbrksPace=WSFaet.OPenFromFile(filepath,0)RasterDataset=Raster从 /OrksPaee.OPenRasterDataset(fileName)Rasterlayer=NewRasterLayerRasterlayer.CreateFromDataset(RasterDataset)layer=Rasterlayernl‘seene.AddLayer(layer)CatchexAsExeePtionMsgBox(flle+‛‛+ex.Message)Funetlons.AddLayerTbList(lstLayers,Funetions.GetseeneLayers(m一scene))EndSub3.2场景浏览场景浏览功能只需基于户JcEngine组件而不用做太多的开发,如大柴旦工业园二维界面的浏览功能(二维地图的平移、放大、缩小)以及scen日ContrDI的三维浏览功能(三维场景的平移、放大、缩小、导航、飞翔等)。