关键词不能为空

当前您在: 主页 > 英语 >

实习指导书_第八章_ArcGIS Engine三维开发

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-02-13 19:35
tags:

-

2021年2月13日发(作者:物理变化)


ArcGIS Engine


的三维开发



第八章




ArcGIS Engine


的三维开发



8.1



ArcGIS


三维分析及其控件简介



8.1.1



ArcGIS


三维分析简介



ArcG IS


三维分析提供了对表面数据有效的可视化和分析。


使用三< /p>


维分析,


可以从多个角度来浏览表面数据,


查询表面,从表面上一选


定的位置来确定什么对象可见,


以及 通过叠加栅格和矢量数据来创建


一幅逼真的透视图。



三维分析



3D

Analyst



添加了两个专用的三维可视化应用程序:


ArcScene



ArcGlobe


,它们扩展了


ArcGIS


Desk top


的功能,并且扩展



ArcCa talog



ArcMap


的三维功能 。



ArcScene


允许用户制作具 有透视效果的场景,


在这个场景中可以


对地理信息系统数据进行 浏览和交互。


用户可以在表面上叠加栅格和


矢量数据,


并从矢量数据源创建线、


面和体。


用户也可以使 用


ArcScene


中的三维分析工具创建和分析表面。



ArcGlobe


提供在标准计算机硬件上 对巨型三维栅格、


地形和矢量


数据集进行实时漫游和缩放,


在此过程中基本不会感觉到速度上的问


题。这主要是依靠一种新引入 的索引和快速检索数据的方法实现的。



利用三维分析扩展


ArcCatalog



从而实现对三维数 据的管理并且


创建具有三维视觉属性的图层。用户可以在


Arc Catalog


中使用与


ArcScene

中相同的浏览工具预览三维场景和数据。



利用三维分析扩 展


ArcMap


,从而可以由


GIS< /p>


数据生成新的表面,


以及分析表面、


查询 表面某一位置的属性值和分析表面不同位置的可


见性。


用户还可 以计算表面面积和表面之上或者表面之下的体积,



沿表面上的 三维线生成剖面。



1



ArcGIS Engine


的三维开发



8.2



ArcGIS


三维显示简介



ArcGIS Desktop


中,可用于三维场景展示的程序 为


ArcGlobe



ArcScen e



由于两者的差别,


在三维场景展示 中适用的情况有所不同。


由于


Engine


Desktop


底层技术都是基于


AO


的,因此该比较结果在功


能性和整体效率方面同样适用与


GlobeControl



Scen eControl




ArcScene


简介:


< p>
ArcScene


是一个适合于展示三维透视场景的平台,


可以在三维场


景中漫游并与三维矢量与栅格数据进行交互。

ArcScene


是基于


OpenGL

的,支持


TIN


数据显示。显示场景时,

< br>ArcScene


会将所有数据加载到


场景中,


矢量数据以矢量形式显示,


栅格数据默认会降低分辨率来显


示以提高效率。




1


ArcScene


界面




ArcGlobe


简介:


< p>
ArcGlobe



ArcGIS9.0


之后出现的新产品,设计用于展示大数据


量的场景,

支持对栅格和矢量数据无缝的显示。


ArcGlobe


基于 全球视


2



ArcGIS Engine


的三维开发



野,所有数据均投影到全球立方投影


(World Cube Projection)


下,


并对数据进行分级分块显示。


为提高显示效率,


ArcGlobe


按需将 数据


缓存到本地,矢量数据可以进行栅格化。





2


ArcGlobe


界面



ArcGlo be



ArcScene


的主要区别:




1


)投影 坐标系统的不同:



ArcGlobe


将所有数据投影到球体表面上,


使场景显示更接近现实


世界。适 合于全市,全省,全国甚至全球大范围内的数据展示。



Arc Scene


将所有数据投影到当前场景所定义的空间参考中,


默 认


情况下,场景的空间参考由所加入的第一个图层空间参考决定。


ArcScene


中场景表现为平面投影,适合于小范围内精细场景刻画。

< p>



2


)缓存与内存管理 机制的不同:



ArcGlobe


和< /p>


ArcScene


最重要的区别在于此。


ArcGlobe


设计用于海


量数据展示,所以为提高显示效率 而进行数据缓存是很必要的。


3



ArcGIS Engine


的三维开发



ArcGl obe


将数据分块并按级别建立缓存和索引,才使得即使在


Ar cGlobe


中显示海量数据仍可以高速的展示与漫游。



ArcScene


会将所有数据读入场景中完全显示,


因此会占用大量显


存,


物理内存和虚拟内存,


这也是


ArcScene


适于小数据量小场景 精细


展示的原因之一。



< p>
3


)分析功能的不同:



ArcGlobe


可以极好的展示大数据的场景,同时提供高速的漫游。



ArcScene


对传统的三维分析功能支持的更好 。例如


Desktop



3D


Analyst


工具条在


ArcScene< /p>


中被很好的支持,并支持


Tin


模型的显 示。


ArcGlobe


不支持


Tin< /p>


的显示,但支持其作为高程数据加入场景。


ArcGlobe


支持


Terrain


数据集但


ArcScene


不支持。




4


)显示差别


< br>ArcGlobe


中用户可以选择是否将矢量数据栅格化后显示,


该功能


对注记数据的显示也有很大帮助。


用户可以选择 将注记


(Annotation)


附着显示于地球表面或像广告 牌一样面向当前用户。


ArcScene


中不支


持注记


(Annotation)


数据的显示。



ArcGlobe


中矢量数据栅格化后可< /p>


以大幅提高显示效率,我们在


ArcGlobe


场景建设中采取“能够栅格


化的矢量数据尽量栅格化”的策略也来自于此。



1.



ArcGIS


三维系统的设计



该系统分为四个模块,


分别是文件的操作、场景的浏览、点查询


和矢量文件生成


TIN


。下面分别对这四个 模块做详细介绍,其参考代


码请参阅“例子程序”中的


Chap ter8




2.1



文件操作



该模块包括打开工程文件( 打开


sxd


文件)、打开栅格文件(打



Raster


文件)和保存图片文件。所用到的控件有:


SceneControl


4



ArcGIS Engine


的三维开发



控件(用于 显示打开的工程文件和栅格文件)、


Button


控件、


OpenFileDialog


控件、


Sav eFileDialog


控件、


TabControl


控件(页面


布局控件)、


TOCControl


控件(用于显示图层)。其布局如下:






3


文件操作的界面布局(红线内的)





1


控件的名称和类型对照表



控件类型



SceneControl


TOCControl


Button


Button


Button


Text


属性







打开


sxd


文件



控件名称



mSceneControl


mTOCControl


OpenSxdFile


备注



显示数据




显示图层



打开工程的文件



打开栅格的文件



抓图



分为两个页面,“基

< p>
本操作”和“图层”



打开


Raster


文件



OpenRasterFile


保存图片文件



SaveImage


tabControl1


TabControl

< p>
两个页面分别为


“基本操作”和


“图层”



除了上述表所列出的属性需要设置,另外还要将


TOCControl



5



ArcGIS Engine


的三维开发



Buddy


属性设置为


mSceneControl,

其方法如下:




1




选中


TOCControl


控件,右击弹出 菜单并选择“属性”。




2




弹出对话框,选择


General


页面,并 找到


Buddy


复选框,选



mSceneControl


,如下图。





4


设置


TOCControl


控件的


Budd y


属性



将控件的属性设置完毕之后,


为三个


Button


控件添加


Click


事件,


并添加以下处理代码:



OpenSxdFile


按钮控件的


Click


事件代码:


/*********************************************** *************************/



/*


打开


sxd


文件



按钮按下事件< /p>


*/



/******************* ************************************************** ***/



//


打开


sxd


工程文件




private



void



OpenSxdFile_ Click


(


object



sender


,


EventArgs



e


)


{



//


文件过滤




mOpenFileDialog< /p>


.


Filter


=

< br>


文件


|*.sxd


;



//


打开文件对话框打开事件




if


(< /p>


mOpenFileDialog


.


Sh owDialog


() ==


DialogResult


.


OK


)


{



//

< br>从打开对话框中得到打开文件的全路径


,


并将该路径传入 到


mSceneControl





mSceneContro l


.


LoadSxFile


(


mOpenFileDialog


.


FileN ame


);


6



ArcGIS Engine


的三维开发



}


}


OpenRasterFile


按钮控件的


Click


事件代码:

< br>




/********** ************************************************** ************/



/*


打开


Raster


文件



按钮按下事件


*/



/**************** ************************************************** ******/



//


向工程中添加栅格数据




private



void



OpenRasterFi le_Click


(


object



sender


,


EventArgs



e


)


{



string



sFileName


=


null


;



//


新建栅格图层




IRasterLayer



pRasterLayer


=


null


;



pRasterLayer


=


new



RasterLayerClass


();



//


取消文件过滤




mOpenFileDialog< /p>


.


Filter


=

< br>


所有文件


|*.*


;



//


打开文件对话框打开事件




if


(< /p>


mOpenFileDialog


.


Sh owDialog


() ==


DialogResult


.


OK


)


{



//

< br>从打开对话框中得到打开文件的全路径




sFileName


=


mOpen FileDialog


.


FileName

;



//


创建栅格图层




pRasterLayer


.


CreateFromFilePath

(


sFileName


);



//


将图层加入到控件中




mSceneContro l


.


Scene


.

AddLayer


(


pRasterLayer

< p>
,


true


);



//


将当前视点跳转到栅格图层




ICamera



pCamera


=


mSceneC ontrol


.


Scene


.


SceneGraph


.


ActiveView er


.


Camera


;



//


得到范围




IEnvelope



pEenvelop


=


pRast erLayer


.


VisibleExtent


;



//


添加


z


轴上的范围




pEenvelop


.


ZMin


=


m SceneControl


.


Scene


.


Extent


.


ZMin


;



pEe nvelop


.


ZMax


=


mSceneControl


.


Scene< /p>


.


Extent


.


ZMax


;



//


设置相机




pCamera

< p>
.


SetDefaultsMBB


(


pEenvelop


);



mSceneControl


.


Ref resh


();


}


}


SaveImage


按 钮控件的


Click


事件代码:



7



ArcGIS Engine


的三维开发




/************************************** **********************************/



/*


保存图片文件



按钮按下事件


*/



/**************** ************************************************** ******/



//


抓图,将场景保存成图片文件




private



void



SaveImage_Cl ick


(


object



sender


,


EventArgs



e


)


{



string



sFileName


=



;



//


保存对话框的标题




mSaveFileDialog< /p>


.


Title


=



保存图片



;



//


保存对话框过滤器




mSaveFileDialog< /p>


.


Filter


=

< br>


图片


|*.bmp|JPG


图片


|*.jpg


;



//


图片的高度和宽度




int



Width


=


mSceneCon trol


.


Width


;



int



Height


=


mSceneCo ntrol


.


Height


;



if


( < /p>


mSaveFileDialog


.


Sh owDialog


() ==


DialogResult


.


OK


)


{



sFileName


=


mSave FileDialog


.


FileName

;



if


(


mSaveFileDialog


.


FilterIndex


== 1)


//


保存成


BMP


格式的文件



{



mSceneControl


.


Sce neViewer


.


GetSnapshot

< br>(


Width


,


Height


,



esri3DOutputImageType


.


BMP


,


sFileName


);


}



else


//


保存成


JPG


格式的文 件



{



mSceneCo ntrol


.


SceneViewer


.


GetSnapshot


(


Widt h


,


Height


,



esri 3DOutputImageType


.


JPEG


,


sFileName


);


}



MessageBox


.


Show


(



保存图片成功!



);


mSceneControl


.


Refresh

< p>
();


}


}


2.2



场景浏览



有两种方法定制场景的浏览 ,第一种方法是利用


arcgis


的向导,

定制常用的浏览方法,如漫游、放大、缩小等等,该方法简单,并且


不需要编写代码 ,第二种方法是通过添加代码的方法更改场景的


CurrentTool


属性,从而实现场景浏览的功能,下面对以上两种方法


一一介绍:



8



ArcGIS Engine


的三维开发



第一种方法


:


第一步:添加


ToolbarControl


控件,该控件位于“工具箱”中的



ArcGIS Windows Forms


”选项中,把它的名字设置




”< /p>


mToolbarControl



,< /p>




Dock



属性设置为



Top

< br>”



并将其


Buddy


属性设置为


mSceneControl,


设置 方法与


mTOCControl


控件相同。


第二步:进入“


mToolbarControl


”属性对话框中的“


items


”页


面,


并单击



Add< /p>




按钮。


弹出


Control


Commands


对 话框,



Control


Comma nds


对话框中选中“


Category


”列表框中的“


Scene


”选项,在



Commands


”列表中就会出现与“

< br>Scene


”关联的命令,双击命令就


可以将该命令加入 到“


mToolbarControl


”工具条中,如下图:< /p>





5


mToolbarControl


属性对话框




9


-


-


-


-


-


-


-


-



本文更新与2021-02-13 19:35,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/652305.html

实习指导书_第八章_ArcGIS Engine三维开发的相关文章

  • 余华爱情经典语录,余华爱情句子

    余华的经典语录——余华《第七天》40、我不怕死,一点都不怕,只怕再也不能看见你——余华《第七天》4可是我再也没遇到一个像福贵这样令我难忘的人了,对自己的经历如此清楚,

    语文
  • 心情低落的图片压抑,心情低落的图片发朋友圈

    心情压抑的图片(心太累没人理解的说说带图片)1、有时候很想找个人倾诉一下,却又不知从何说起,最终是什么也不说,只想快点睡过去,告诉自己,明天就好了。有时候,突然会觉得

    语文
  • 经典古训100句图片大全,古训名言警句

    古代经典励志名言100句译:好的药物味苦但对治病有利;忠言劝诫的话听起来不顺耳却对人的行为有利。3良言一句三冬暖,恶语伤人六月寒。喷泉的高度不会超过它的源头;一个人的事

    语文
  • 关于青春奋斗的名人名言鲁迅,关于青年奋斗的名言鲁迅

    鲁迅名言名句大全励志1、世上本没有路,走的人多了自然便成了路。下面是我整理的鲁迅先生的名言名句大全,希望对你有所帮助!当生存时,还是将遭践踏,将遭删刈,直至于死亡而

    语文
  • 三国群英单机版手游礼包码,三国群英手机单机版攻略

    三国群英传7五神兽洞有什么用那是多一个武将技能。青龙飞升召唤出东方的守护兽,神兽之一的青龙。玄武怒流召唤出北方的守护兽,神兽之一的玄武。白虎傲啸召唤出西方的守护兽,

    语文
  • 不收费的情感挽回专家电话,情感挽回免费咨询

    免费的情感挽回机构(揭秘情感挽回机构骗局)1、牛牛(化名)向上海市公安局金山分局报案,称自己为了挽回与女友的感情,被一家名为“实花教育咨询”的情感咨询机构诈骗4万余元。

    语文