地球科学与技术学院
《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技术在 MierosoftVisualStudio.Net开发环境下以ArcEngine提供的SoeneControl作为三维显示平台,TOCControl作为图层导航控件,其他功能通过开发实现,包括模型更新导入功能、属性编辑功能、建筑定位查询功能、三维交互测量功能、三维空间分析功能等。系统的数据层利用ArcGIS的GeoDatabase数据模型进行三维空间数据的统一管理。 设施
1.1系统开发平台
小区三维 GIS系统选择 WindowsXP为操作系统, AicGISEngine10为开发平台SketchUP软件为地理要素的的建模平台,采用 MierosoftVisualstudio.Net2010为编程开发环境。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安装sketchup6
3.安装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平台中对模型进行可视化、查询、分析等操作。
图1.5建模图像实例
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:\elnP冶nyseene.sxd‛ ‘添加一个图层
SeeneViewe尤 trl.SceneGraph.Seene.AddLayerPLayer ‘添加一个图形元素 DimPMapAsIBasieMap
SetPMap二SeeneViewerCtrl1.SeeneGraph.Seene DimPGConAsIGraphiesContainer3D SetPGCon=PMap.BasieGraphiesLayer SetPGCon=PGLayer
PGCon.AddElementPElement Viewer.RedrawFalse
在SeeneControl控件中加入栅格图层
通过SceneControl的一些属性及方法你将增加栅格影像到你的三维系统中。加载栅格影像到三维GIS系统主要代码如下: PrivateSubbtl七气
ddRasterLayer--Cliek(ByValsenderAsSystem.Objeet, ByValeAs System.EventArgs)HandlesbtllAddRasterLayer.Cliek
Dilnfile,filePath,fileName, fileExtensionAsStnng DimlayerAsILayer
DimWSFaetAsIW6rksPaeeFaetory
DlmRasterWOrksPaeeAsIRaster从八〕rksPaee DimRastefDatasetASIRasterDataset
DimRasterlayerAsIRasterLayer OPenFileDlalogl,Filter=‛ RasterFiles(*.tio}*.ti月 Allfiles(*.*)}*.*‛ If(OPenFileDialogl.ShowDialog()<>DialogResult.OK)ThenExitSub file=OPenFileDialogl.FileName
WSFact=NewRasterW6rksPaceFaetory
RasterwbrksPace=WSFaet.OPenFromFile(filepath,0)
RasterDataset=Raster从 /OrksPaee.OPenRasterDataset(fileName) Rasterlayer=NewRasterLayer
Rasterlayer.CreateFromDataset(RasterDataset) layer=Rasterlayer
nl‘seene.AddLayer(layer) CatchexAsExeePtion
MsgBox(flle+‛‛+ex.Message)
Funetlons.AddLayerTbList(lstLayers,Funetions.GetseeneLayers(m一scene)) EndSub
3.2场景浏览
场景浏览功能只需基于户JcEngine组件而不用做太多的开发,如大柴旦工业 园二维界面的浏览功能(二维地图的平移、放大、缩小)以及scen日ContrDI的三维浏览功能(三维场景的平移、放大、缩小、导航、飞翔等)。这里不做过多介 绍。这里主要介绍二维视图三维视图联动功能。在校园三维场景中,经不经意 的旋转缩放和平移操作往往容易导致方位的迷失,使得迅速定位产生困难。 为了防止在三维漫游或者飞翔时无法准确地定位,我们将工业园的二维底图 作为导航视图加入了MaPcontrl中,使得我们在三维场景中进行实时漫游或者 飞翔时,在二维导航地图中可以实时显示出相应的视点位臵,以便对漫游或者飞 翔时的所在位臵有个总体的认识。同时,在二维地图中改变观察位臵时,相应地 在三维场景中视点也可以跳到对应的位臵。
a放大操作:通过放大工具在SceneControl中画出矩形框,以屏幕与该矩形框 的长度比或宽度比作为Camera的缩放比率,目标点为该矩形框的中心点,观察者位臵不变;
b缩小操作:通过缩小工具在SceneControl中画出矩形框,以该矩形框与屏幕 的宽度比或长度比作为Camera的缩放比率,目标点为该矩形框的中心点,观察者位臵不变;
c全图操作:以原始Scene的范围作为Camera的视野范围;
d漫游操作:改变观察者位臵的(x、Y、Z)值,改变Camera的视野范围;
e飞行操作:通过控制鼠标来实现场景的三维飞行速度、方向进行自由浏览。 (具体实现代码+贴图)
3.3属性查询
校园二维界面的以图查属性功能只需基于ArcEngine组件而不用做 太多的开发,这里不做过多介绍。这里主要介绍大柴旦工业园区三维建筑物的以 图查询属性功能。为了便于规划设计者全方位地查看三维实体,需要获得地理实体在三维场景中无法直接反映出来的详细属性信息。由于可供查询的三维地理实
体是采用mdb格式存储的,初始存储时只是保存了该地物的类型与唯一ID号,相关的属性数据需要我们自己添加,而且是另外存储在属性表中的。为了方便与数据库的属性表一一对应,在系统中需要对每一地理实体进行统一编码,以便实现点击查询三维模型时与相关的属性记录对应。 (具体实现代码+贴图) 代码:
MessageBox.Show(‚当前点未能查找到任何要素‚): retUrfl;
IDisplay3DpDisplay3D=gyyseeneControl.Seene.SeeneGraphasIDisplay3D: //显示信息窗体
m_frmldentify.PHit3DSet=PHit3DSet: m_frmldentify.pDisPlay3D=pDisPlay3D m_frmldentify.InitFrmldentify():
m_frmldentify.Loeation=System.Windows.Forms.Cursor.Position: m_frmldentify.Show();
m_rrmxdentiry.Foeus()://获得焦点 retllrn;
上述代码中,主要是通过LocateMultipte方法获取三维地理实体的Feature 并保存在pHit3DSet中,然后将pHit3DSet中的对象传递给属性显示窗体,获取 三维地理实体的其他属性值,并在该窗体中显示出来。 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: 判断是否为要素图层
if(pLayer15IFeatureLayer)
IFeaturepFeature二(IFeature)pHit3D.objeet:
listBoxLyr.Items.Add(pLayer.Name)://在列表中添加图层名 pDisplay3D.AddFlashFeature(pFeature.
为此,我们新增一个窗体Fnnldenti厅用来弹出相关三维地物的属性信息, 在其中添加一个ListBox控件显示选中的地物,添加一个ListView用来显示详细的地物属性信息。在SeeneControl的OnMouseDo认叽事件中,添加如下代码: privatevoidgyyseeneControl一 nMouseDown(objeetsender, ISeeneControlEventsOnMouseDownEvente) gyyseeneControl.Seene.Clearseleetion();
if(e.button二l从too1Seleeted==9)//左键点击了查询按钮才发生 Frmldentify叱 frmldentify=newFrmldentify():
gyyseeneControl.SeeneGraPh.IsNavigating二false:
IHit3osetpHit3DSet;,//获取的Feat盯e保存在pHit3DSet中
gyyseeneControl.SeeneGraph.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选择了相应的地理实体后,触发115旧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: 刀将选择的图层相应属性添加到ListView中
for(intj二 0;j(pFeature.Fields.FieldCount:j++) ListViewltem11=newListViewltem(): 11.Subltems.Clear():
11.Subltems[0].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.objeet);
3.3属性编辑
校园规划涉及了大量的属性,方便地管理这些属性数据非常有必要。属性 编辑功能可以为工业园规划设计及管理人员提供方便的信息更新功能,包括项 目、资源以及设施的修改(或删除)等。属性编辑的实现主要通过DataGridView控件与数据库作连接,通过数据库设计时建立的属性与模型数据的ID一一对应关系,连接属性数据库后,调用SQL语句更新数据库。
属性编辑的实现主要通过DataGridView控件与数据库作连接,通过数据库 设计时建立的属性与模型数据的ID一一对应关系,连接属性数据库后,调用SQL 语句更新数据库。
(具体实现代码+贴图)
3.4模型交互
有时为了调整规划方案,需要改变建筑的高度、颜色、风格、层数等规划指 标或者替换不同的建筑模型以及其它地理实体,以求建筑物自身及周围环境的协 调,我们需要在三维建模软件中改变建筑的高度、颜色、风格、层数等参数,然
后重新导入到场景中。 (具体实现代码+贴图) 代码:
publievoidAddMultiPatch(IScenepseene, IMultipatehpMultiPatch, StringLayerNa啤,int eolor)
IGraphies正ayer娜layer=PSeene.BasieGr即hiesLayer: ILayerEffeetspLayerEffeets二(ILayerEffeets)pGlayer: PLayerEffeets.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配nt二(IFillsha匹Element)莎el胭ent; PPolyelement.S卿bol二PFs卿: PGelement.Ge伽etry二茄e骊etry: pGlayer=newGraphiesLayer3DClass(): ILayerplayer二(ILayer)pGlayer; Player.Name=LayerN舰e:
pseene.AddLayer(player,true):
IGraphiCSContainer3DpGeon3d二(IGraphiCSContainer3D)pGlayer: 茄eon3d.AddEle毗nt(pGelement): pseeneGraph.RefreshViewers():
3.5空间分析
空间分析包括距离量测、缓冲区分析、日照分析等。
二维的量测直接利用ArcEngine组件即可实现,这里主要介绍三维场景中的 量测功能。三维GIS辅助工业园规划系统的交互测量功能是使用测量工具在工 业园的三维场景中画线,通过获取绘制线上每一节点的坐标信息计算得到绘制线 间的空间距离。通过鼠标单击事件来传递绘制消息。在测量状态下,通过鼠标单 击开始画线,鼠标移动绘制线段,再次单击完成一节线段,右键单击结束整个线 段的绘制,同时获取绘制线段上每一节点的二维屏幕坐标,转化为工业园场景中 的三维地理坐标,通过空间坐标计算得到整个线段所代表的距离。 (具体实现代码+贴图) 具体功能代码实现如下:
privatevoidgyyseeneControl_onMouseD卿 n(objeetsender,
ISeeneContro1Events_onMouseDo们Evente) {
三维量测
if(toolseleeted3)//左键点击了量测按钮才发生 if(e.button { 2)
bFinishDr砰=true; fr动istanee.Show(); }
elseif(e.button==3) retllrn;
fr动istanee二 newFrmDistanee():
ISeeneGraphpseeneGraph=gyyseeneControl.Seene.SeeneGraPh: IPointpLoeatePoint二 newPointClass(): 又 pLoeatePointasIZAware).ZAWare=true: objeetp区腼ler; objeetpp()bjeet:
objeet口皿155二TyPe.Missing:
pseeneGraph.Locate(pseeneGraph.AetiveViewer,e.x,e.y, ESRISeenePiekMode.ESRISeenePiekAll,
true, outpLoeatePoint, outpp加ner, outpp(}bjeet); if(temPolyline!二null)
刀获得临时绘制线段的起点到新的定位点之间的距离 temPolyline.ToPoint=PLoeatePoint:
doubled3dDistanee二Get3Ddistanee(telnPolyline.FrolnPoint, telnPolyline.ToPoint);
d3dDistanee=Math.Round(d3dDistanee,2): PGraphiesCo:ltaille:〃3D.DeleteEle口
ent(PGi〃aPhiesContailler3D.get_Ele.e:It(PGz〃aPlliesContainer3D.Ele 口entCount一1)): pGraphiesContainei、
3DDeleteElement(pGraPhiesContainer3D.get_Ele.ent(pGraphiesContainer3D.Ele
melltCount一l)): bstartMesure二true; returrl;
//将新的定位点添加到临时绘制线段中
IPointColleetionpDrawLinePtColleet=newPolylineClass(): (pDr洲 LinePtColleetasIZAware).ZAWare=true: IPointpstartPoint二 newPointClass(): (pstartPointasIZAware).ZAware二true:
pstartPoint.PutCoords(temPolyline.FromPoint.X,temPolyline.FromPoint.Y);
PStartPoint.Z二temPolyline.FromPoint.Z+d3dDistanee/50: IPointpEndPoint二 newPointClass(): (pEndPointaslzAware).ZAware=true:
pEndPoint.PutCoords(temPolyline.ToPoint.X,temPolyline.ToPoint.Y): pEndPoint.Z二te呼olyline.ToPoint.Z+d3dDistanee/50:
pDrawLinePtColleet.AddPoint(pstartPoint,refm皿155,refm_miss):
pDrawLinePtColleet.AddPointColleetion(temPolylineasIPointColleetion): pDra影LinePtColleet.AddPoint(pEndPoint,refm_miss,refm_miss); pGraphiesContainer3D.DeleteElement(丙
raphiesContainer3D.get_Element(pGraphiesContainer3D.Ele mentCount一l)):
pGraphiesContainer3D.DeleteElement(pGraphiesContainer3D.get_Element(pGraphiesContainer3D.Ele mentCount一l)):
重新绘制添加了定位点的临时线段
ISimpleLinesymbolpsimpleLinesymbol=newSimpleLinesymbolClass(): PSimPleLinesymbol.Style=ES见SimPleLinestyle.ESRISLSSolid: IRgbColorpRgbColor=newRgbColorClass(): PRgbColor.Red二255: PRgbColor.Green二255:
(psimpleLinesymbolasILinesymbol).Color二pRgbColor; IElementpLineElement=newLineElementClass():
PLineElement.Geometry=PDr胡 LinePtColleetasIPolyline: (pLineElementasILineElement).Symbol二 psimpleLinesymbolasILinesymbol;
pGraphiesContainer3D.AddElement(pLineElement): 显示测量结果
fr动 1stanee.label3.Text=temPolyline.Length.Tostring()+‘m(米)’: gyyseeneControl.SeeneGraph.RefreshViewers(): telnPolyline二null: bMesureing=false: eISe
telnPolyline二 newPolylineClass(): (temPolylineasIZAware).ZAware=true: temPolyline.FromPoint=PLoeatePoint: if(bstartMesure)
3.6建筑物内部实景显示功能
对建筑物内部实景的表现可通过360度全景展示功能来实现(图4.9)。360度全 景是一种基于静态图像在微机平台上能够实现虚拟现实技术。让人们通过可视化 窗口能够进行360度全景观察,而且通过交互操作,可以实现自由浏览,从而体 验三维的vR视觉世界。360度全景是由两大部分组成:全景摄影与虚拟全景,全景摄影是指把相机环360度的一组照片通过无缝处理,所拼接成的一张全景图
像,而全景图像是指大于双眼正常有效视角(大约水平90度,垂直70度)或双眼余光视角(大约水平180度,垂直90度),乃至360度完整场景范围的照片。然后运用网络技术将真实的场景还原在可视化窗口中显示,并具有较强的互动性,可以用鼠标控制环视的方向,可左可右,可上可下,可近可远,可大可小,有身临其境的感觉,称之为虚拟全景。在构建三维小区Gls系统的过程中可充分利用虚拟全景技术显示建筑物内部的设施和结构实景。在构建系统中可通过
IHyPeilink接口来实现网页的超链接来加载对建筑物内部360度全景的flash超链接显示 (代码+贴图)
4技术总结
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- xiaozhentang.com 版权所有 湘ICP备2023022495号-4
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务