ImageVerifierCode 换一换
格式:DOCX , 页数:21 ,大小:590.84KB ,
资源ID:24572723      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/24572723.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(GIS课程设计技术设计书.docx)为本站会员(b****2)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

GIS课程设计技术设计书.docx

1、GIS课程设计技术设计书 地球科学与技术学院GIS课程设计作业基于SKETCHUP和ARCENGINE的三维GIS开发设计文档 教师 * 班级 地理信息系统 组员 * 设计时间 2011年8月28至9月21日 基于SKETCHUP和ARCENGINE的三维GIS开发前言 校园三维GIS系统以虚拟片区为研究区域,建立起了逼真的虚拟表示校园内各类设施的三维可视化平台。通过基于ArcGis平台建立试验片区二维数据,导入SketchUp中进行三维建模,并通过Gcodatabase数据模型有效地组织和管理包括三维模型数据在内的各种空间数据利用ARCEngine进行系统平台的开发,实现了三维模型数据的可视

2、化,并在可视化的基础上,实现了各类三维空间查询、空间量算及空间分析等功能。本设计书详细介绍了校园三维GIS系统的总体设计、系统数据库设计以及系统中功能模块的开发。通过一个实际的开发实例展示了利用SketchUp实现快速场景建模,并利用.NET平台对AicGIS二次开发,完成场景驱动,以实现三维GIS系统的整个流程。1系统总体设计校园三维GIS系统旨在提供一个校园三维显示的平台,在该平台上用户可以查看编辑三维建筑物属性、定位兴趣点、量算距离高度以及实现三维空间分析等操作。系统是采用COM技术在 MierosoftVisualStudio.Net开发环境下以ArcEngine提供的SoeneCon

3、trol作为三维显示平台,TOCControl作为图层导航控件,其他功能通过开发实现,包括模型更新导入功能、属性编辑功能、建筑定位查询功能、三维交互测量功能、三维空间分析功能等。系统的数据层利用ArcGIS的GeoDatabase数据模型进行三维空间数据的统一管理。设施1.1系统开发平台小区三维 GIS系统选择 WindowsXP为操作系统, AicGISEngine10为开发平台SketchUP软件为地理要素的的建模平台,采用 MierosoftVisualstudio.Net2010为编程开发环境。ArcGISEngine10由一组核心的AioobjeetS开发包组成,其对象与平台无关,能

4、够在各种编程接口中调用,开发者通过它提供的强大工具构建定制的GIS功能。所有用 ArcGISEngine构建的应用需要 ArcGISEngine运行库,它提供了ArcGIS应用的核心功能,这样程序发布时就不要求用户在机器上必须安装ArcGIS,而只安装一个运行库和相应的许可文件,不同级别的功能是由许可文件控制。通过ArcGISEngine提供的嵌入式的GIS组件,就能向以非Gis为核心的应用程序中嵌入特定GIS功能。有本试验系统的开发目的与所要实现的功能要求,即侧重于表现小数据量、小范围区域内精细场景的刻画,要求能够支持Tin模型和复杂三维符号的显示等,因此选择采用 ArcGISEngine提

5、供的SceneC0ntrol控件进行三维系统的开发。1.2系统开发框架系统开发框架的基本思想是利用SketchUP实现校园三维场景建模,利用ArcGIS平台中 ArcGISEngine组件开发包进行二次开发,实现三维场景驱动。在校园虚拟三维场景的基础上管理小区内的各类设施,将空间数据、属性数据管理相结合。采用基于COM技术的集成开发模式,通过可视化软件开发工具将功能进行集成,形成最终的GIS应用。图1.1说明了系统的开发框架 图1.1三维GIS试验系统开发框架图1.3系统功能设计校园三维GIS系统的主要特点和功能有:提供友好的操作简单的用户界面,将地理信息、计算机图像信息以及多媒体信息相结合,

6、增强了通过可视化系统,能对三维景观进行动态漫游及飞行,从整体上更加直观和综合地对三维景观进行全方位的浏览,提供距离/面积量算、空间查询、超链接、三维分析等功能。要求试验系统真实感强、运行效率高。系统共分为五个功能模块,分别为三维场景浏览模块、信息查询模块、内部实景超链接模块、数据更新模块及空间分析模块。图1.2为系统功能结构的示意图。图1.2三维GIS试验系统开发功能图1.4系统数据库设计系统采用GcoDatabase数据模型来统一管理空间数据和属性数据。GeoDatabase是Aic/hifos引入的一种全新的空间数据模型,实际上是建立在DBMS之上的统一的、智能化的空间数据库。GcoDat

7、abase使用了面向对象的方法,使得要素可以有自己的行为和属性,另外要素类具有继承性、多态性和封装性。这样,以更加符合自然的行为和人的思维方式去组织数据,更精确的模拟真实世界。图1.3为地理空间数据模型GcoDatabase组织结构示意图。图1.3三维GIS试验系统开发数据库设计图2.SketchUp模型应用于ArcEngine中虽然户ARCEngine平台支持将其他格式的三维模型作为点、线、多边形三类地图数据的三维标注符号(3DMakerSymbol)显示在三维场景中,这些格式包括邮DsMax创建的*.3ds格式、 MultigenCreator建立的*.flt格式以及sketchUp建立的

8、*.5种格式,只要显示时将符号调整到合适位置即可。但作为符号的话只能视为点状对象进行点缀而已,并不能对其进行GIS分析,与我们用Multipatch存储三维模型数据来做GIS查询分析的初衷相去甚远,故此处不多赘述。在sketchUp中建好的三维模型需要转换为Multipatch格式才能在户ARCEngine三维场景中直接加载应用以做查询分析。既可以在户ARCEngine中编码转换,也可以在sketchUp中通过插件转换。以下详细论述sketchUpEsri插件转换本文主要通过 sketchUpEs班插件转换生成MultiPatch三维模型,安装好sketchUP6EsRI插件,并将 sketc

9、hUp6Toofs工具条添加到户JcGIs应用程序界面。 Sketchupesri6具体安装方法:1安装VS2010,2安装sketchup63.安装sketchupesri6:第一个组件(GIS Plugin)必须放到SketchUp Pro 6.0程序的安装目录下,例如(D:Program FilesGoogleGoogle Sketchup 6),否则无法在SketchUp Pro 6.0-Export-3D model-的下拉菜单中没有*.mdb格式。第二个组件(3D Analyst SketchUp 3D Symbol Support )必须放到ArcGIS 程序的安装目录下C:Pr

10、ogram FilesArcGis安装好SketchUp6 ESRI插件后,在ArcMap和ArcScene中会加载一个SketchUp 6 Tools工具。此工具的作用是将ArcMap和ArcScene中打开的数据(包括TIN数据、矢量数据、栅格数据)导入到SketchUp中作为底图或者参考图层进行地物或地形的三维建模。7需要说明的是,所有导入到SketchUp的数据均会保留原来与ArcGIS中一致的坐标信息,这样的话将SketchUp的模型或地形导到ArcGIS中时与原来的位置能保持完全一致。如图1.4所示同时在SketchUp的Export/3D Models里的Export Type中

11、会多出ESRI Multipatch(*.mdb)项,这样就可以把skp的模型直接导成Multipatch格式。并且在导出模型的同时可以设置每个multipatch模型的属性信息。将建好的sketchUp模型通过sketchUp中的Expot -3dModelsl具,把skP格式的模型直接导成Multipatch格式。从skecthUp到户ARCGIs数据转换时,每个选中的sketchup对象都以MultiPatch格式输入到已经存在或最新创建的地理数据库中。在导出模型的同时设置每个MultiPatch模型的属性信息,如建筑物名称、地址、使用者或者建筑物照片。即可在户JcGIs平台中对模型进行

12、可视化、查询、分析等操作。 图1.5建模图像实例3系统功能实现三维Gls辅助校园规划系统利用ArcEngine中的MapContr1、sceneContrI作为二维、三维功能开发的显示平台,在此基础上编程开发实现工业园规划相应的功能。SceneC0ntrDI是嵌入式三维开发组件,负责场景的三维显示以及完成对鼠标操作的响应。scenecontrol中包含scene,SceneGraph。scene对象和MaP对象一样负责图层 (Layer)的管理,包括图层的添加、移除、显示和隐藏等。sceneControlI提供助addsxFile方法来导入Scene文档。sceneContro1通过接口ISc

13、eneViewer来进行三维视角及方位的设置,IsceneViewer对象中包含的Camera便是用来完成类似相机镜头的功能,Camera中包含了设定观察者的位置的obs和选取相机的视角的Target。3DProp的es用来设置三维要素的一些三维特性,如高度拉伸、图层叠加、光照渲染等功能。G哪hicsLayer3D则是用来存储场景中的三维符号模型。以下我们结合工业园规划的实际需要利用这些对象类来创建工业园的三维场景并实现各部分功能。3.1 加载数据(具体实现代码+贴图)增加加载数据功能来导入.lyr文件及.SxD文件,主要实现代码如下:代码:OPenFileDialogl.Tltle=”Add

14、Data,OPenFileDialogl.Filter=”LayerFiles(*.lyr)*.lyrMapDoeuments,(*.sxd)1*.sxd,OPenFileDialogl.InitialDireetory=” E:3Dtestdata,直接引用Ar。scene文档SeeneViewe汇trll.DocName=“ e:telnP冶nyseene.sxd”添加一个图层SeeneViewe尤 trl.SceneGraph.Seene.AddLayerPLayer添加一个图形元素 DimPMapAsIBasieMap SetPMap二SeeneViewerCtrl1.SeeneGra

15、ph.Seene DimPGConAsIGraphiesContainer3D SetPGCon=PMap.BasieGraphiesLayerSetPGCon=PGLayer PGCon.AddElementPElement Viewer.RedrawFalse在SeeneControl控件中加入栅格图层通过SceneControl的一些属性及方法你将增加栅格影像到你的三维系统中。加载栅格影像到三维GIS系统主要代码如下: PrivateSubbtl七气 ddRasterLayer-Cliek(ByValsenderAsSystem.Objeet, ByValeAs System.Event

16、Args)HandlesbtllAddRasterLayer.Cliek Dilnfile,filePath,fileName, fileExtensionAsStnng DimlayerAsILayer DimWSFaetAsIW6rksPaeeFaetory DlmRasterWOrksPaeeAsIRaster从八rksPaee DimRastefDatasetASIRasterDataset DimRasterlayerAsIRasterLayerOPenFileDlalogl,Filter=” RasterFiles(*.tio*.ti月 Allfiles(*.*)*.*” If(O

17、PenFileDialogl.ShowDialog()DialogResult.OK)ThenExitSubfile=OPenFileDialogl.FileName WSFact=NewRasterW6rksPaceFaetoryRasterwbrksPace=WSFaet.OPenFromFile(filepath,0)RasterDataset=Raster从 /OrksPaee.OPenRasterDataset(fileName) Rasterlayer=NewRasterLayerRasterlayer.CreateFromDataset(RasterDataset)layer=R

18、asterlayernlseene.AddLayer(layer) CatchexAsExeePtionMsgBox(flle+”+ex.Message)Funetlons.AddLayerTbList(lstLayers,Funetions.GetseeneLayers(m一scene) EndSub3.2场景浏览场景浏览功能只需基于户JcEngine组件而不用做太多的开发,如大柴旦工业园二维界面的浏览功能(二维地图的平移、放大、缩小)以及scen日ContrDI的三维浏览功能(三维场景的平移、放大、缩小、导航、飞翔等)。这里不做过多介绍。这里主要介绍二维视图三维视图联动功能。在校园三维场景

19、中,经不经意的旋转缩放和平移操作往往容易导致方位的迷失,使得迅速定位产生困难。为了防止在三维漫游或者飞翔时无法准确地定位,我们将工业园的二维底图作为导航视图加入了MaPcontrl中,使得我们在三维场景中进行实时漫游或者飞翔时,在二维导航地图中可以实时显示出相应的视点位置,以便对漫游或者飞翔时的所在位置有个总体的认识。同时,在二维地图中改变观察位置时,相应地在三维场景中视点也可以跳到对应的位置。a放大操作:通过放大工具在SceneControl中画出矩形框,以屏幕与该矩形框的长度比或宽度比作为Camera的缩放比率,目标点为该矩形框的中心点,观察者位置不变;b缩小操作:通过缩小工具在Scene

20、Control中画出矩形框,以该矩形框与屏幕的宽度比或长度比作为Camera的缩放比率,目标点为该矩形框的中心点,观察者位置不变;c全图操作:以原始Scene的范围作为Camera的视野范围;d漫游操作:改变观察者位置的(x、Y、Z)值,改变Camera的视野范围;e飞行操作:通过控制鼠标来实现场景的三维飞行速度、方向进行自由浏览。(具体实现代码+贴图)3.3属性查询校园二维界面的以图查属性功能只需基于ArcEngine组件而不用做太多的开发,这里不做过多介绍。这里主要介绍大柴旦工业园区三维建筑物的以图查询属性功能。为了便于规划设计者全方位地查看三维实体,需要获得地理实体在三维场景中无法直接反

21、映出来的详细属性信息。由于可供查询的三维地理实体是采用mdb格式存储的,初始存储时只是保存了该地物的类型与唯一ID号,相关的属性数据需要我们自己添加,而且是另外存储在属性表中的。为了方便与数据库的属性表一一对应,在系统中需要对每一地理实体进行统一编码,以便实现点击查询三维模型时与相关的属性记录对应。(具体实现代码+贴图)代码:MessageBox.Show(“当前点未能查找到任何要素“):retUrfl; IDisplay3DpDisplay3D=gyyseeneControl.Seene.SeeneGraphasIDisplay3D:/显示信息窗体m_frmldentify.PHit3DSe

22、t=PHit3DSet:m_frmldentify.pDisPlay3D=pDisPlay3Dm_frmldentify.InitFrmldentify():m_frmldentify.Loeation=System.Windows.Forms.Cursor.Position:m_frmldentify.Show();m_rrmxdentiry.Foeus():/获得焦点retllrn;上述代码中,主要是通过LocateMultipte方法获取三维地理实体的Feature并保存在pHit3DSet中,然后将pHit3DSet中的对象传递给属性显示窗体,获取三维地理实体的其他属性值,并在该窗体中

23、显示出来。 publievoidInitFrmldentify() 1istBoxLyr.Items.Clear()刀清除图层列表ListBox中的内容listviewLyrAtribt.Items.Clear():/清除属性列表Listview中的内容if(pHit3DSet二二null)retUrn;for(inti二0:i(pHit3DSet.Hits.Count: xHit3opHit3D二(IHit3D)pHit3DSet.Hits.get一lement(i) IPointPPoint=PHit3D.Point: ILayerpLayer=(ILayer)pHit3D.伽ner:判断

24、是否为要素图层 if(pLayer15IFeatureLayer) IFeaturepFeature二(IFeature)pHit3D.objeet:listBoxLyr.Items.Add(pLayer.Name):/在列表中添加图层名pDisplay3D.AddFlashFeature(pFeature.为此,我们新增一个窗体Fnnldenti厅用来弹出相关三维地物的属性信息,在其中添加一个ListBox控件显示选中的地物,添加一个ListView用来显示详细的地物属性信息。在SeeneControl的OnMouseDo认叽事件中,添加如下代码: privatevoidgyyseeneCo

25、ntrol一 nMouseDown(objeetsender, ISeeneControlEventsOnMouseDownEvente)gyyseeneControl.Seene.Clearseleetion();if(e.button二l从too1Seleeted=9)/左键点击了查询按钮才发生Frmldentify叱 frmldentify=newFrmldentify():gyyseeneControl.SeeneGraPh.IsNavigating二false: IHit3osetpHit3DSet;,/获取的Feat盯e保存在pHit3DSet中gyyseeneControl.Se

26、eneGraph.LoeateMultiple(gyyseeneControl.SeeneGraph.Aetivevie贾er,e.x,e.y,ESRISeenePiekMode.ESRISeenePiekAll,false, outpHit3DSet);pHit3DSet.onePerLayer():if(pHit3DSet.Hits,Count二二0)i+;/计数i加else/不是要素层就从 pHit3DSet中删去,因删除后总数减,计数i不加pHit3DSet.Hits.Remove(i);pDisPlay3D.FlashFeatures():在Lis旧ox选择了相应的地理实体后,触发1

27、15旧oxL几seleeted玩dexChanged()事件,并在ListView控件中显示该地理实体的详细属性,如图5一8所示。 privatevoidlistBoxLyr_SeleetedlndexChanged(objeetsender,EventArgse)listviewLyrAtribt.Items.Clear();/消除ListView中的内容 IHit3DpHit3D二(IHit3D)pHit3DSet.Hits.get_Element(listBoxLyr.Seleetedlndex): IFeaturepFeature=(IFeature)pHit3D.objeet:刀将选

28、择的图层相应属性添加到ListView中for(intj二 0;j(pFeature.Fields.FieldCount:j+) ListViewltem11=newListViewltem(): 11.Subltems.Clear(): 11.Subltems0.Text=pFeature.Fields.get_Field(j).N舰e: 11.Subltems.Add(pFeature.get_Value(j).Tostring(): 1istViewLyrAtribt.Items.Add(11):pDisplay3D.FlashGeometry(PHit3D.伪门er,PHit3D.ob

29、jeet);3.3属性编辑校园规划涉及了大量的属性,方便地管理这些属性数据非常有必要。属性编辑功能可以为工业园规划设计及管理人员提供方便的信息更新功能,包括项目、资源以及设施的修改(或删除)等。属性编辑的实现主要通过DataGridView控件与数据库作连接,通过数据库设计时建立的属性与模型数据的ID一一对应关系,连接属性数据库后,调用SQL语句更新数据库。属性编辑的实现主要通过DataGridView控件与数据库作连接,通过数据库设计时建立的属性与模型数据的ID一一对应关系,连接属性数据库后,调用SQL语句更新数据库。(具体实现代码+贴图)3.4模型交互有时为了调整规划方案,需要改变建筑的高

30、度、颜色、风格、层数等规划指标或者替换不同的建筑模型以及其它地理实体,以求建筑物自身及周围环境的协调,我们需要在三维建模软件中改变建筑的高度、颜色、风格、层数等参数,然后重新导入到场景中。(具体实现代码+贴图)代码:publievoidAddMultiPatch(IScenepseene, IMultipatehpMultiPatch, StringLayerNa啤,inteolor)IGraphies正ayer娜layer=PSeene.BasieGr即hiesLayer: ILayerEffeetspLayerEffeets二(ILayerEffeets)pGlayer:PLayerEff

31、eets.TransPareney二9; IRgbColorpRgbColor二 newRgbColorClass():pRgbColor.邪B二eolor: IGeometryPGe伽etry=pMultiP水h: ISimpleLinesymbolpls娜二 newSimpleLinesymbol():Pls犯n.百idth二4:pls物.Color二(IColor)pRgbColor:Pls帅.Style二ESRISimpleLinestyle.ES犯SLSSolid: ISimpleFillsymbolpFsy口二 newSimpleFillsymbo1ClasS():pFsym.Color二(IColor)pRgbColor;pFsym.Style二ESRISimpleFillstyle.ES刃SFSHoll衅:pFs帅.outline“Plsym:IElement因element二 newMultiPatehElementClass(): IFillshapeElementppolyele配

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1