桌面gis开发报告

2024-06-25

桌面gis开发报告(精选6篇)

篇1:桌面gis开发报告

学 号 1221030205 売徐诫產女 f 实习报告 GIS 程序设计实习起止日期:

2015 年 7 月 13 日 至 2015 年 7 月 19 日 学 生 姓 名

吴馁

级 12 级地信 2 班 成绩

指导 教师(签 字)

地质与测绘学院

2015 年 7 月 20 日

UwMlMri 财—写 hl M2F Vt*rk*Wi M ; ; Wg«B »

二、实习内容 利 熟悉开发环境:Visual Studio 2010;C#;Arc En gi ne 10.1 &讥功能需求分析 J 基于组件技术开发应用型地理信息系统 组件式技术已成为当今软件技术的潮流之一。组件式 GIS 软件的基本思想 是把GIS 各大功能模块划分为几个控件。各个 GIS 控件之间,以及 GIS 控件与 其他非 GIS控件之间,可以方便地通过可视化的软件开发工具集成起来,形成 最终的 GIS 应用。

重点完成的工作包括:1)建立 ArcGIS Engine 应用程序框架;2)实现对 矢量数据(Shape File 格式)的访问;3)实现采用简单、唯一值、分类等多种 方式对面状矢量数据进行渲染(Ren de)。

三、实习步骤:

实习一:初识 ArcGIS Engine 开发环境 1、新建一个 Windows 窗体应用程序

*

¥« IM

a » HTAdCML wr»* cuke 占筒空 Ci*ud i m rS曙田黑 石序事理口 W J ■Mwi* <* ^et^SnsittSLr-

2、在新建窗体中添加控件 在工具箱中选择添加 toolbarco ntrol , TOCCo ntrol , Map Co ntrol 控件

在解决方案资源管理器中双击 program.cs 在主函数中添加 ESRI.ArcGIS.Ru ntimeMa nager.Bi nd(ESRI.ArcGIS.ProductCode.E ngi ne);使得文件可以加载到 MapControl 中。

t iisin? Syrt en: uainf Sjrt cn.EQlluctiniu.GcnoTiu :

usinf Syst en.Li.nn :

VFuudovs..I-namespMe 大董归竦 |(jts“tir cl*fs Rrngrim 弓 E)/// //<宙用程帛的壬庐口点* /// [ ; UTtu*ad] static void I ESRJ T

A T ^GIS,R r-ii 训卄-F r.^indCESRI.ArcGIS.P ndii tCod.Enfine): 川 pl i, i— EnabltVisual StyL es(”, A((-pJd-iti 3r.* S»tConpai , : ibleTe-xiEendecirg^efault(f;Apulut w RnrJn 艸 5 口:

()| :

右击 toolbarcontrol 选择属性,如图选择 Items 选项,添加如图控件

:鲁 ArcGiS 丄。一匕国曲电 ■oclbarLontrol

=[Rh Arc5I5 W 1 Fn 斗車 N^mF:

^xTCXTC

-on Bin.Is T CIA I EC T E N JO 口雹 T bl«t t s>s C4^e«ry 39 i Edt F»

Ed.t tlik^ 卩« «.lm i 5il«cti ;ga Find Ugg G CJL-= I I

亡 1 帀宓 G] flbe IrwjuL ry ■jt C tLLg-hCHi t Ttk WL liMint“k iftjLAiys.t ULL IM

E^rvie 电二 Fw 沪匸卫严 Ql 右击 MapCo ntrol 属性,在 Ge neral 的 map docume nt 中添加要加载的地图文件

0-MET j.Fl “ T«t Canlrols, Comcrundi u 苹 J 1

A TE GIS

10.1 Engine TonlbarCerrtrail :韦寺 切:£厉 ItLl En^ne TOCCCr-Iroll NamE.JETOCCGHEriDl 1 —— n i-1 闻冋 4 CCT5 10.1 Enijrie KapCCXltrol M BTIW.aXMaotertfiiH HmTtl

| Itws| | 园片 [I]

¥ ± f?

Q T LSM

[^KQtate 』.认 Ir«i^

* S cr

^■tScralL Left

* S cralt E: gtil

f Scroll V,土 J DSTI

Ln * t

■ *1 j

If C ITU Ui U

通过以上步骤添加的控件还只是单独存在,而我们的程序需要各控件间协同工作,因此要进 行控件绑定。分别右击 ToolbarControl、TOCControl 控件,将 Buddy 设置为 axMapControll。

试运行一下如图

可以看出基本框架已经搭建好了,但是还得调整一下布局 在工具箱的所有 Windows 窗体下选择 —: ■ ■控件,放在窗体里,如图 褐 ArrGIS 10.1.Cnaift* Too b^rControl 亘 ircGlE 1D.1 Engine a>cMapControl 1 分别选择窗体里 TOCControl,MapControl 的属性,将其 Dock 值设置为 fill,如图 调整窗体布局如图 八 For ml ArrGlE W.l Engmw Tc«cltia.rC0ffTTtrol 即址| JkrcGIS 10.1 fnyn ircG]S 10.L Erkgir^ MdpCantiali ■l=S N^ ITHQ;

jMMapQinifoll 叫 Fomn l

实习二:建立 ArcGIS Engine 应用程序框架 2.1 地图浏览 1、新建项目,添加控件 新建 windows 窗体应用程序,选择工具箱中 StatusStrip(状态栏),将其拖入到窗体,再选择工具箱中的 ToolbarCo ntrol 控件拖入窗体,修改 dock 值为 TOP,再将 SplitC on tai ner 控件拖入窗体,Dock 设置为 Fill,将 TabControl 控件拖入 Panel1,将 Alignment 属性设置为 Bottom,Dock 属性设置为 Fill。点击 TabPages 属性右边的按钮,弹出 TabPage 集合编辑器,将 tabPage1 的 Name 设置为 ”Layer ; “ Text 设置为 图层”;将 tabPage2 的 Name 设置为 “ Property, Text 设置为 属性”。

选择图层”选项卡,拖入 TOCControl 控件,设置 Dock 属性为 Fill,选择属性”选 项卡,拖入所有 Windows 窗体|PropertyGrid 控件,设置 Dock 属性为 Fill。

拖入 TabControl 控件到 Panel2,设置 Dock 属性为 Fill。

结果如图所示:

f ■ :F CEI I

口 ”3 £3 T4

2、力卩 shp 数据 在工具箱中选择 MenuStrip 控件,添加到左上角,命名为文件,下拉选项为打开矢量数 据和打开栅格数据,如图:

选中文件控件下的加入矢量数据控件,双击事件并写入代码,在开始使用 ArcGIS Engine 进行编码前,首先需要添加 ArcGIS 的引用,在解决方案管理器中右键点击 添加引用”,如 图:

usi ng ESRI.ArcGIS.Carto;usi ng ESRI.ArcGIS.C on trols;usi ng ESRI.ArcGIS.esriSystem;usi ng ESRI.ArcGIS.Display;usi ng ESRI.ArcGIS.Geometry;usi ng ESRI.ArcGIS.SystemUI;usi ng ESRI.ArcGIS.DataSourcesRaster;///////////////为 SHP 数据功能 增加的类库 usi ng ESRI.ArcGIS.DataSourcesFile;usi ng ESRI.ArcGIS.Geodatabase;using Syste m.IO;

键入的代码如图:

rrivarte void 打 JF® TocISt ripHenLiIten_C1 ick“"ot j ezt sendsr.E”jentAras e)I

|apenF^leDialogl.Filter = * sl“.apefile^L l *.shp)|*.shp”;openFileDialojl.MuL ti select = false;DialofResult pDialngFjegul!= apenFileDialogl.Shcmt)ialog(“: if(pDialagfiEsult == Dialog?esalt,OK){ st iinf pPart 上 = oTEnFileQialogl.FiLeHajne;st i pF alder = Syst em, Iu, Path ・ recto ryWaJiie [pF art h);string piFileNa*e = System.IQ,Fath, GetFileWsme(praTh): IWuLkipaucFc.I.1;pWu:kipaJc-Fabt

□ cfi 1 cW J ikipa.J cFiut J().T” orbcpico pWockzpacs-pWorkspaceFCpenFrcnFi ^pFolder, Q)IFe^iur^Wo rkrp ■-pFe ature^fc.rk sp are — p.Wo rkrp ac>? ww IF ta.+.lveV^crkrpi re;TF P

-.+nr^-i?pFC — pFpsrtiirpVorlz“ffpar a.rtppnFpatUTe 匚 1 hfm(pFi 1 pTffajie): IFeatureLayer pFLayer = new FeartuceLayerO ; ; pFLavein Featured lass = rFC;pFLayetn Name = pFC ・

Al;asNanie ILaye r pLayer-pFLayer as ILayer;IT Tap pMap = ^KWafCantrol 1 IVIap: pMap.AddLayer(pLayer)axJIapControll ・

ActiveV^ew ・

Ref resh();

实习三:矢量要素符号化 1、简单渲染 选中“简单渲染”菜单,在属性框中点击事件按钮,在事件列表中双击 Click 事件;或 者双击“简单渲染”菜单,在方法内输入处理代码。部分代码如下:

private void 简单渲染 ToolStripMenuItem_Click(object sender, EventArgs e){

IFeatureLayer pFLForRender = axMapControl1.get_Layer(0)as IFeatureLayer;SimpleRender(pFLForRender, @”“);} private void SimpleRender(IFeatureLayer pFeatureLayer, string sFieldName){

// 设置用于渲染的颜色 IRgbColor pColor = new RgbColor();pColor.Red = 255;pColor.Blue = 0;pColor.Green = 0;// 设置用于渲染的符号的基本属性(面状符号)ISimpleFillSymbol pSFSBase = new SimpleFillSymbol();pSFSBase.Style = esriSimpleFillStyle.esriSFSSolid;// 设置填充方式 pSFSBase.Outline.Width = 0.4;// 设置边框的宽度 pSFSBase.Color = pColor as IColor;// 设置简单渲染的相关属性 ISimpleRenderer pSR = new SimpleRenderer();pSR.Symbol = pSFSBase as ISymbol;// 接口转换,对渲染方式进行设置 IGeoFeatureLayer pGFL = pFeatureLayer as IGeoFeatureLayer;pGFL.Renderer = pSR as IFeatureRenderer;// 地图刷新 axMapControl1.Refresh();} 2、唯一值渲染 private void 唯一值渲染 ToolStripMenuItem_Click(object sender, EventArgs e){

IFeatureLayer pFLForRender = axMapControl1.get_Layer(0)as IFeatureLayer DefineUniqueValueRender(pFLForRender, @”CONTINEN)T;“ private void DefineUniqueValueRender(IFeatureLayer pFeatureLayer, string sFieldName){ // 变量声明

bool bValFound;// 判断要素值是否存在 int iFieldIndex;// 用于存储字段所在的索引值 // 设置颜色列表,用于随机生成颜色(用于填充面状要素)//设置颜色的基本属性,包括色调(H)、饱和度(S)以及亮度(V IRandomColorRamppRCR = new RandomColorRam(p);pRCR.StartHue = 76;pRCR.EndHue = 188;pRCR.MinSaturation = 20;pRCR.MaxSaturation = 40;pRCR.MaxValue = 85;pRCR.MaxValue = 100;pRCR.UseSeed = true;pRCR.Seed = 43;// 设置唯一值渲染的相关属性 IUniqueValueRenderer pUVR = new UniqueValueRenderer();pUVR.FieldCount = 1;pUVR.set_Field(0, sFieldName);// 遍历要素类的所有要素,并为每个要素设置基本的渲染形式 // 遍历要素类中的所有要素 IFeatureClass pFC = pFeatureLayer.FeatureClass;IFeatureCursor pFCursor = pFC.Search(null , false);// 通过遍历,返回要素指针(FeatureCursor)IFeature pFeature = pFCursor.NextFeature();// 获取当前第一个要素 // 获得指定字段的索引值 IFields pFields = pFCursor.Fields;iFieldIndex = pFields.FindField(sFieldName);// 为不同的要素,设置不同的填充颜色 pRCR.Size = pFC.FeatureCount(null);// 获得应产生的颜色的数目 bool bOK;pRCR.CreateRamp(out bOK);// 判断随机颜色生产是否成功? // 获得随机生成的颜色列表 IEnumColors pEnumColors = pRCR.Colors;pEnumColors.Reset();IColor pColorForFeature = pEnumColors.Next();// 开始遍历,为每个要素设置基本的渲染信息 while(pFeature!= null){

// 为每个要素设置基本的渲染符号 ISimpleFillSymbol pSFSForFeature = new SimpleFillSymbol();pSFSForFeature.Style =

}

esriSimpleFillStyle.esriSFSSolid;pSFSForFeature.Outline.Width = 0.4;pSFSForFeature.Color = pColorForFeature;// 获得当前要素中指定字段的名称 string sFeatureName;sFeatureName = pFeature.get_Value(iFieldIndex)as string;// 设置唯一值渲染的相关属性 pUVR.AddValue(sFeatureName, sFieldName, pSFSForFeature as ISymbol);pUVR.set_Label(sFeatureName, sFeatureName);pUVR.set_Symbol(sFeatureName, pSFSForFeature as ISymbol);// 设置该值渲染 信息 // 获得下一组要素和颜色 pFeature = pFCursor.NextFeature();pColorForFeature = pEnumColors.Next();} // 接口转换,对渲染方式进行设置 IGeoFeatureLayer pGFL = pFeatureLayer as IGeoFeatureLayer;pGFL.Renderer = pUVRas IFeatureRenderer;// 地图刷新 axMapControl1.Refresh();} 3、分级渲染 先打开 ArcMap 讲要导入数据的属性表打开添加一个字段命名为 X,并进行 计算几何处理,分级渲染便以这个字段里的值分级,分为两级,最小值到 90,和 90 到最大值。代码如下:

private void 分类渲染 ToolStripMenuItem_Click(object sender, EventArgs e){

IFeatureLayer pFLForRender = axMapControl1.get_Layer(0)as IFeatureLayer;ClassBreakRender(pFLForRender, @”x“);

private void ClassBreakRender(IFeatureLayer pFL, string sFieldName){ IRandomColorRamppRCR = new RandomColorRam(p);IClassBreaksRenderer pCBR = new ClassBreaksRenderer();pRCR.StartHue = 76;pRCR.EndHue = 188;pRCR.MinSaturation = 20;pRCR.MaxSaturation = 40;pRCR.MinValue = 85;pRCR.MaxValue = 100;pRCR.UseSeed = true;pRCR.Seed = 43;pCBR.Field = sFieldName;pCBR.BreakCount = 2;IFeatureClass pFC = pFL.FeatureClass;pRCR.Size = 3;bool bOK;pRCR.CreateRamp(out bOK);if(bOK == true){ IEnumColors pEC = pRCR.Colors;pEC.Reset();IColor pColorForFeature = pEC.Next();for(int i = 0;i < pCBR.BreakCount;i++){

pSFSForFeature = new SimpleFillSymbol();pSFSForFeature1 = new SimpleFillSymbol();esriSimpleFillStyle.esriSFSSolid;pSFSForFeature.Outline.Width = 0.4;pSFSForFeature.Color = pColorForFeature;switch(i){

case 0: pCBR.set_Break(i, 90);pCBR.set_Label(i,ISimpleFillSymbol ISimpleFillSymbol pSFSForFeature.Style = ”-92-90“);

pCBR.set_Descriptio n(i, ”-92-90“);pCBR.set_Symbol(i, pSFSForFeature as ISymbol);pSFSForFeaturel.Color = pSFSForFeature.Color;break;case 1:

pCBR.set_Break(i, 153);pCBR.set_Label(i, pCBR.set_Descriptio n(i.”-90-90“);”-90-90“);pCBR.set_Symbol(i, pSFSForFeature as ISymbol);break;} pColorForFeature = pEC.Next();} IGeoFeatureLayer pGFL = pFL as IGeoFeatureLayer pGFL.Renderer = pCBR as IFeatureRenderer;axMapCo ntrol1.Refresh();} } 四、实习结果 1、实习一结果

2、实习二结果

3、实习三结果 叫-F-orml.* I — 1 口 Map F m Conlne^Tts

k融 轻■§网 iw?7 沽”玉跖 D5 羽却価

“时 F(XE :

I-.二

立 I 丰绘屢壬

[瓯-上;-1 Igl 巧? W1DM 兰严呷 MW7974 昨舁

五、实习感受

通过此次实习,了解了用ARC Engine进行地理信息系统的二次开发的大致 流程,利用 ARC Engine 开发可以很好地定制自己所需的功能,而且也不是很难, 在 VS 中敲代码时很多方法和接口就自动提示出现,都不需要记住那么多方法,只要了解那些方法的功能,需要用时能够调用就行。开发的关键还是在于各种 接口以及控件方法的引用。此次实习也只是接触了皮毛,要想更好地利用其进 行地理信息系统的开发还是得熟悉和了解各种接口和方法的功能,要学会利用 帮助文档来查询所需的各种借口和方法。

篇2:桌面gis开发报告

实 训 地 点:四川建筑职业技术学院

实训起止时间: 18-19周

班 组: 测量1004班第2组

报 告 人: 蔡 江

指 导 老 师: 张船红 刘春阁

说明实训的目的: 通过实训,了解程序开发的全过程,系统地掌握VB应用程序设计、编译和调试等基本技能,而且能为今后从事专业测绘工作或解决实际工程中的有关测量问题打下基础,在文档编写能力、逻辑思维能力和实际工作能力等方面得到锻炼。在实训中培养严格认真的态度、踏实求是的工作作风、吃苦耐劳的精神和团结协作的集体观念。

任务:试训的任务是导线平差计算和COMGIS组件开发编写开发方案; 设计方案:根据以起始点的坐标和起始边的坐标方位角,以及所观测的导线边长和转折角,计算各导线点的坐标的思想结合相应的公式:

(1)坐标方位角的推算公式可以依次计算各边的坐标方位角:

αA1=αBA+180°+βα12=αA1+180°+βα2C=α12+180°+β+)α

′CD

A

=α2C+180°+β

C

α′CD=αBA+4³180°+∑β

测左

计算终边坐标方位角的公式为: α终边′=α始边+n²180°+∑β

测左

(式中n为导线观测角个数)′-α

终边角度闭合差的计算公式:fβ测=α

终边

(2)图根导线角度闭合差的允许值:

fβ容=±60″n(式中n为多边形内角的个数)

(3)计算各边的坐标增量。

ΔXAB=DAB²cosαAB

ΔYAB=DAB²sinαAB(4)计算各导线点的坐标公式:

X前=x后+Δx改 Y前=y后+Δy改

最后,推算出终止边上C点的坐标,其值应与原有值相等,以作检核。进行程序的理论设计,再根据理论设计界面(如基本数据、观测左角、观测边长、表格),在设计好界面后便开始根据理论知识编写公共代码、按键单击事件代码和核心代码,最后便进行程序调试和测试。过程:

(1)程序方案设计:确立程序设计的思想和相映理论知识,对程序制作流程做一个简单的设计。

(2)界面设计:根据程序的需要进行界面设计,确立界面需要键入的元素(基本数据、观测左角、观测边长、表格),对这些元素进行设计.(3)代码编写:根据所需理论知识编写公共代码、按键单击事件代码和核心代码。

(4)程序调试和测试:运行程序查看是否存在错误。(5)根据导线平差计算同样的流程进行完成水准平差计算。

遇到的问题: 实验总体来说是顺利的,因为教材上有相映程序来做参考,虽然也会出一些问题,但是总体来说是没有多大难度的。当然也会出现一个问题比如对变量设置的一些小问题,但经过商量及请教他人都能及时解决。处理方法和技巧 :按照提示对出现错误的程序进行修正,细心查看程序的编写问题出在什么地方,对于提示程序行出错的问题,要细致查看。

实训心得体会:本次实训收获颇多,感受颇深。收获是学到了许多课堂以外的东西,许多时候现实工作与课堂内容存在着很大的差距,这时我们就必须以实际情况为准。感觉学到了很多实在的东西,对以前零零碎碎的测绘程序设计知识有了综合应用的机会,很好地巩固了理论知识,提高了实际操作能力,同时也拓展了与他人的交际合作能力,为以后走上工作岗位打下了基础。同时我也认识到在工作中,实事求是的工作作风,吃苦耐劳的奉献精神,团结协作的集体精神 是必不可少的。我将把这次实训经历当作宝贵的财富,作为今后学习和工作的一种激励。

篇3:桌面gis开发报告

目前哲学领域中通用的适用技术概念是指适应于该国或该地区的自然环境现状、市场规模、社会文化环境、现有的技术状态等因素, 能获得社会、经济、环境的综合效益最佳的技术。本文综合运用几种符合教育技术专业技术背景的“适用技术”来开发桌面虚拟实验, 旨在突破限制桌面虚拟实验在教育中广泛应用的技术瓶颈, 为促进桌面虚拟实验在教育领域中的应用提供一个思路。

一、实验简介

转动惯量是描述刚体转动惯性大小的物理量, 是研究和描述刚体转动规律的一个重要物理量。通过这个实验, 使学生明白刚体转动惯性的大小不仅取决于刚体的总质量, 而且与刚体的质量分布以及转轴位置有关。本实验的实验原理是:用两个质量相同的刚体, 保持其中一个刚体的滑块 (图1中 (2) , 共有四个) 的位置不动。调整好另外一个刚体的滑块的位置以改变此刚体的质量分布或转轴的位置, 挪开挡板 (图1中 (6) ) 后, 在相同的力矩作用下两个刚体绕轴由静止同时开始转动, 通过观察小球 (图1中 (8) ) 落地的先后来定性地判断出刚体转动惯量的大小, 从而得出实验结论。

二、实验开发流程

虚拟现实的三个特征是沉浸性、交互性和想象性。在搭建虚拟现实情景的过程中, 要想实现投入的沉浸感和灵活的交互, 单纯使用3DMAX通常无法满足需求。具有强大建模功能的3DMAX可以制作出逼真的三维效果, 然而其交互性相对来说较差。而Flash的交互性和表现力正好可以弥补这一不足, 但Flash只是一种制作二维动画的软件, 以前用Flash所做的桌面虚拟实验仅仅是仿三维界面, 在表现三维动画方面力不从心, 这样, 虚拟性又稍逊一筹。如何将二者有机结合起来呢?Swift3D的出现使得将三维模型导入Flash成为现实。从而, 在Flash中实现了真正意义上的三维动画。

利用3DMAX、Swift3D和Flash开发桌面虚拟实验的流程图如下所示:

下面结合转动惯量实验具体阐述一下利用这3个软件来开发桌面虚拟实验的过程。

1. 三维建模

Flash本身没有建模功能。Swift3D虽然自身也具有挤压和放样两种常用的建模功能, 但是相比专业的3D软件还有很大差距。为了弥补这一缺陷, Swift3D提供了导入外部3D模型的接口, 可以非常方便地导入三维模型, 目前支持DXF和和DXD两种格式。这样, 在实验中用到的模型可以在3DMAX中建好。建模的过程相当关键, 因为这关系到在以后的过程中能否对其进行控制以及工作量和开发效率的问题。

建模过程中应该注意的问题有:

(1) 在建模之前, 首先要分析实验过程和实验原理以确定实验部件应该单独建造还是整合成组, 以便在Swift3D和Flash中对其进行单独控制。例如, 在本实验中, 转杆 (图1中 (7) ) 和中轴 (图1中 (5) ) 可以组合成组, 但是两个滑块就不可以。因为在Swift3D中要实现当滑块在不同位置时的动画效果。

(2) 应该为各个部件单独命名, 做到见名知意, 目的是在进行控制的时候便于查找, 也便于管理。

(3) 应该把各个器件整合到3D M A X中的同一个场景中, 然后将需要单独渲染导出以外的模型隐藏, 再渲染导出JPEG文件或者生成DXF文件。避免在以后的制作过程中重新调整模型的视角和模型的比例大小。否则在增加了工作量的同时, 还会影响到桌面虚拟实验的沉浸性。

2. 导出

这里的导出操作主要分为两种。一是在3DMAX中导出, 得到D X F文件和J P E G文件;另外一种是将在Swift3D中制作出三维动画导出为swf文件。

在3DMAX中建完模型之后, 主要导出为两种格式:DXF和JPEG。模型应该以什么格式导出, 主要取决于实验要达到的教学目标, 以及这个实验要实现的实验效果和实验目的。正如流程图中所示, 如果需要三维动画演示, 就应该将模型导出为DXF文件;如果不需要三维动画演示, 就应该将其导出为JP EG格式。例如在本实验中, 实验要求实现在调整好滑块的位置, 挪开挡板后, 转杆要转动的效果。这样就需要将这一部分导出为DXF格式的文件, 然后在Swift3D中实现三维动画效果。而像实验台、底座 (图1中 (3) ) 、滑轮 (图1中 (4) ) 这些模型, 就可以将其导出为JPEG格式的图片, 导入Flash中直接使用就可以了。

此外, 最好把实验台、滑轮和底座一起输出为图片格式, 这主要是因为这些模型不需要制作三维动画效果, 并且也不需要对其进行控制。这种做法除了可以保证各个设备的透视视角相同, 增加虚拟实验的虚拟性外, 还可以减少在制作实验过程中的工作量, 因为在将JPEG格式的文件导入到Flash中后, 需要将背景去掉才可以使用。

3. 导入

对于扩展名为D X F的文件, 利用S w i f t3D中的“文件/导入”菜单命令就可以将其导入到Swift3D中, 从而实现对三维模型的控制, 制作出所需要的三维动画效果;把DXF格式转化为swf格式后, 就可以将swf文件导入到Flash中, 作为一个影片剪辑;对于扩展名为JPEG格式的文件, 直接导入到Flash中, 将其“打散”去掉背景颜色后, 再根据需要将其转变为影片剪辑、图形或者按钮就可以了。

在制作三维动画的时候应该注意这样几个比较关键的步骤:

(1) 移动中心点

如果中心点和转动部分的重心不在同一线上, 制作出来的三维动画会发生摇摆现象。在调整的过程中可以选中“只移动中心点”选项按钮, 用鼠标进行粗略调整后, 再利用下方的“对象位置”和“重心位置”进行细微调整, 从而避免出现摇摆现象。

(2) 材质的选择

材质的好坏直接决定了制作出的虚拟实验的逼真程度和教学效果。Swift3D本身带有一些材质, 并且可以对某些材质进行编辑和制作。由于在这个实验中要多次用到同一个动画, 并且要在Flash中的调用。所以统一材质是非常必要的。

(3) 相机的镜头长度务必保持一致

否则在导入到Flash中后可能会出现大小不一的问题。Swift3D自身带有许多三维动画效果, 利用Swift3D中自带的动画效果就可以满足本实验的要求。

将s w f文件导入到F l a s h中的操作步骤比较简单, 在此不再赘述。简单说明该过程的两个关键问题的解决办法和技巧。在这个实验中, 因为当滑块位置不同的时候, 转杆的转速是不一样的。当滑块在中间部分的时候与在两边的时候相比, 转动速度要快。可以通过在各个关键帧中间插入空帧来实现速度的变化。其次, 通常来说, 转杆需要转两圈或者更多小球才能落地。如果重新复制一下影片剪辑中的帧, 虽然可以达到目的, 但是毫无疑问, 这将增加文件的大小。可以通过添加几行简单的代码来实现, 在影片剪辑的第一帧加入如下代码:v a r i:Number=1;在最后一帧加入如下代码:

这样通过修改变量i的值就可以很容易的控制转杆转动的圈数, 而且还能保证文件的大小基本上不会变化。

4. 添加交互

swf文件和JPEG文件导入Flash之后, 虚拟实验的制作最终是在Flash中完成的。

将不需要添加交互的设备, 例如实验台、底座、挡板等等, 摆放到合适的位置。制作这个虚拟实验的难点是当把滑块移动到某个位置, 挪开挡板后, 就播放相应位置的三维动画。可以通过以下方法解决这个难题。首先定义一个全局变量, 作为调用swf文件的标志。当滑块滑动到某个位置的时候, 利用hitTest () 方法来触发某个函数, 从而为这个全局变量赋值。然后为虚拟实验添加一个标尺 (图1中 (1) ) , 限制滑块的“灵活”移动, 让滑块只能在刻度尺标有刻度的地方停顿。刻度尺的添加使得在保证教学效果的前提下, 降低了制作该虚拟实验的难度, 同时还让学生对滑块的位置有一个从定性到定量的升级, 更有利于学生理解这个实验的原理。具体操作步骤如下:

将左右两个环做成影片剪辑, 分别命名为mLeftCircle和mRightCircle。在杆上截取一段适当的距离, 将其制作为影片剪辑。将影片剪辑实例化后, 保证影片剪辑和滑杆重合, 同时将其命名为mLeftArea1到mLeftArea6。将挡板做成影片剪辑, 实例化后将其命名为mBoard。在主场景中添加一个祯, 命名为a s。选中该帧后, 打开动作面板后添加代码。

利用_g l o b a l属性定义两个全局变量。当滑块m L e f t C i r c l e位于刻度尺最左边刻度的时候, 将markerL赋值为1;当滑块位于中间刻度的时候, 将markerL赋值为2;当滑块位于最右边刻度处时, 将markerL赋值为3。因为两边滑块的最初位置是在中间刻度处, 所以相应地也应该将两个全局变量赋初值为2。编写代码如下:

_global.markerL=2;

_global.markerR=2;

当鼠标在滑块上按下, 实现对滑块的拖动。通过设置startDrag () 方法的参数, 保证滑块在滑杆范围内移动。同时记录下影片剪辑mLeftArea1到mLeftArea3的坐标位置。编写代码如下:

当鼠标松开, 滑块停止拖动。然后检测滑块和哪个影片剪辑发生碰撞, 即检测滑块停留的位置。判断出滑块停留的位置后, 为全局变量赋值, 记录下滑块停留的位置。假设与mLeftArea1发生碰撞, 编写代码如下:

调整好滑块的位置后, 点击挡板以挪开挡板。然后通过检测两个全局变量的值判断滑块的位置, 进而调用相应位置的三维动画。编写代码如下:

三、展望

本篇论文从解决“技术的复杂性”这个角度来解决桌面虚拟实验在教育中的应用较少的问题, 希望能抛砖引玉, 挖掘更多的平民化技术开发桌面虚拟实验, 为桌面虚拟实验的大众化铺平道路。也期望通过桌面虚拟实验在教育中大量应用, 逐渐形成完善的运用模式。

参考文献

[1]何克抗, 李文光.教育技术学[M].北京:北京师范大学出版社, 2002

[2]黄荣怀.信息技术与教育[M].北京:北京师范大学出版社, 2002

[3]王殿元.大学物理实验[M].北京:北京邮电大学出版社, 2004

[4]吴俊海, 王俊伟.3ds max8入门必练[M].北京:清华大学出版社, 2006

[5]Joey Lott Robert Reinhardt.Flash8ActionScript宝典[M].北京:电子工业出版社, 2006

[6]黄慕雄.高校教学型虚拟实验室建设的现状与建议[J].电化教育研究, 2005, 9:77-80

[7]朱海, 李瑞芬, 赵辉.谈虚拟现实技术及实践教学的虚拟化[J].现代远距离教育, 2005, 3:64-66

篇4:浅谈Java桌面应用程序开发

【摘 要】Java对于服务器,个人电脑和移动设备来说是一项伟大的技术。由于需要java的跨平台的特性,因此java在服务器和移动设备方面的应用是非常成功的。Java开发的桌面程序既有友好易用的图形用户界面,也能够实现相应的功能。【关键词】桌面开发

AWT

Swing SWT Java与桌面端现在流行的桌面平台要数Windows、Mac和 Linux。但它们不是十全十美的,Windows主宰着桌面操作系统的市场,其上有巨大的应用和开发群体,但它昂贵且有许多安全漏洞。Linux有着稳固的基础,它是开源的软件,比Windows更可靠。Mac非常容易操作且不是黑客的目标,但与Windows和Linux比起来,Mac的硬件和软件可选的余地非常的有限。Windows、Linux和Mac 在桌面的流行创造了多样性,这种多样性正是Java需要的,这就使得Java在桌面有举足轻重的地位。跨平台的支持Java 运行于所有相关的操作系统,包括Windows、Mac和Linux。也就是说把现有的应用从一个操作系统移植到另一个操作系统而不用做太多的改动,所以Java是首选的桌面开发平台。或许用微软的可视化工具很容易构建.NET应用,但是这将使软件被绑定在了Windows平台上。也许有人想用Linux 代替Windows 从而避免由微软操作系统的漏洞带来的问题,但是用户不能容忍的问题之一是当从Windows移植到Linux时所带来的巨大的费用。如果应用程序用Java构建,就没有了这些问题,Java的图形用户界面看上去会跟使用的操作系统一样,而并不需要做什么改动。丰富的特征最初,Java只有非常有限的一些特征去构建图形用户界面,思想就是用与平台无关的Java应用程序接口打包不同的操作系统的本地图形用户界面,称之为抽象的窗口工具。它仅有普通的部件如文件域、文本区、选择框、单选按钮、列表框和按钮被AWT支持,图形和图像的特性支持非常有限,也就是说,只能够构建简单的applet程序。认识到需要更高级的图形用户界面组件和图形能力,Sun公司开发了Swing,Java 2D,Java 3D,图像的输入/输出,Java高级图像(JAI)和很多其它的组件。这些中的一些窗体组件现在已经是Java 2标准版(J2SE)里的一部分。例如Swing、Java 2D、图像的输入/输出都是Java的核心API,它们随着Java开发工具包(JDK)和Java运行环境一起被提供给用户。Java图形界面工具Java有三个主要的图形界面工具:AWT,Swing和SWT。Swing 是构建java图形界面标准的API(应用程序接口),一些AWT类由Swing继承而来。SWT是一个非常有前途的新的窗体工具,由IBM资助。但是事实上,这三者相互补充,它们满足不同的需求。AWT抽象窗口工具包(Abstract Windowing Toolkit)(AWT)是Java的平台独立的窗口系统,图形和用户界面器件工具包。AWT是Java基础类(JFC)的一部分,为Java程序提供图形用户界面(GUI)的标准API。AWT提供了JavaApplet和Java Application中可用的用户图形界面GUI中的基本组件(components)。由于Java是一种独立于平台的程序设计语言,但GUI却往往是依赖于特定平台的,Java采用了相应的技术使得AWT能提供给应用程序独立于机器平台的接口,这保证了同一程序的GUI在不同机器上运行具有类似的外观(不一定完全一致)。SwingSwing是一个用于开发Java应用程序用户界面的开发工具包。它以抽象窗口工具包(AWT)为基础使跨平台应用程序可以使用任何可插拔的外观风格。Swing开发人员只用很少的代码就可以利用Swing丰富、灵活的功能和模块化组件来创建优雅的用户界面。工具包中所有的包都是以swing作为名称。SWTSWT是IBM为它的Eclipse集成开发环境而开发的图形用户界面工具。SWT可以在Eclipse环境外使用,而且提供对操作系统本地图形用户界面的直接访问。因此,基于SWT的Java应用程序拥有本地的图形用户界面并且可以和本地别的应用程序和部件集成在一起。SWT社区现在正在设计浏览器API,这些API可以产生基于IE或者Mozilla的HTML窗口。SWT现在可以在AIX,HPUX,Linux,QNX,Solaris,和Windows下面运行。误解与Bug对于java/Swing一直有着误解,诸如:Java/Swing太慢了,或者是Java/Swing需要更多的内存。也许老式的奔腾运行JDK1。2确实很慢,但是PIII级别的CPU运行JDK1。4环境是足够快的。一个应用程序中鼠标在1毫秒和在10毫秒的反映的差异,从使用者方面来说是没什么区别的。Java不但在企业级的上千人同时在线的服务器中表现良好,而且在仅有有限资源的移动设备上的表现也是很出色的。总结Java作为一种网络技术,是为了在浏览器中能够运行小应用程序而发布,但是它从开始就有运行独立的桌面应用程序的能力。不幸的是,AWT没有提供足够的桌面端的程序所需的特性。Swing着手于解决这些问题,但是它有不少的bug。今天,Java有构建大型桌面端应用程序的能力并修复了bug。Java独有的优点是“只写一次,到处运行”——在Windows,Linux,Mac和其它操作系统上运行Java代码的能力。【参考文献】[1]Eric,Java编程思想[M],第4版,机械工业出版社,2007年4月[2]Metsker S J,Java设计模式[M],第2版,电子工业出版社,2012年09 月[3]毕建信,基于MVC设计模式的Web应用研究与实现[D],武汉理工大学出版社,2006年5月

篇5:桌面gis开发报告

摘 要:针对GIS专业GIS项目设计与开发课程教学存在的问题,从课程特点、社会需求、学生素质提升等方面出发,对课程教学方法进行了优化探索,为专业建设提供参考。

关键词:GIS项目设计与开发;教学方法;专业实践

中图分类号 G642.0 文献标识码 A 文章编号 1007-7731(2015)14-178-02

地理信息系统(Geographic Information System,简称GIS)是一门集计算机科学、测绘科学、地理学、遥感科学、信息科学等多学科技术为一体的新兴学科[1-2]。随着国家各级部门信息化进程的发展及国内从事GIS工程开发的企事业单位的发展壮大,整个社会对GIS专业的专门人才的需求量也迅速增加[3]。GIS项目设计与开发是GIS专业的一门专业核心课程,旨在培养学生从事GIS应用工程的分析和设计的能力[4],知识内容涉及众多学科领域,是一门理论教学与实践环节紧密结合的课程。该门课程教学质量的好坏将直接影响学生日后从事GIS项目开发、设计的能力和水平[5],从而在很大程度上决定了毕业生的就业率以及用人单位对学校毕业生水平的评价。由于该门课程实践性强,许多没有丰富GIS项目开发经验的教师很难深入地剖析课程的核心内容,导致学生无法从课堂获取所需知识,从而严重影响了课程教学效果。针对这种情况,笔者从教学内容选取与组织、实验教学环节安排、GIS竞赛组织、科研创新训练等方面进行了初步探讨,以期能够提高教学效果。GIS项目设计与开发课程特点

GIS项目的开发模式经历了独立开发、宿主型二次开发、基于GIS组件的二次开发、WebGIS开发等方式,目前WebGIS开发方法正成为GIS开发的主流方法。WebGIS是Internet技术应用于GIS开发过程的产物,它是基于网络的客户机/服务器结构的系统,Internet是客户端和服务器之间信息交换的桥梁,用户和服务器可以分布在不同的地点和不同的计算机平台上。目前主流的WebGIS平台包括ARCIMS、MapGIS IMS、SuperMap IS、TopMap World、MapXtreme等国内外成熟产品。WebGIS以其跨平台、灵活、可扩展等优点深得GIS开发人员的青睐,众多高校GIS专业教师也因此开始在GIS项目设计与开发课程中讲授WebGIS的开发方法与流程。

与其它课程相比,GIS项目设计与开发有着自身的特点,主要包括以下3个方面:(1)综合性强。该课程为多学科交叉课程,课程内容涵盖地理学、地图学、工程学、数据库、测绘科学等众多方面。这就要求课程主讲教师具备相关的学科背景知识,且该课程应有一定数量的先修课程以助于学生更好地掌握本门课程的内容。(2)理论与实践结合紧密。与其它课程不同,该课程的理论教学与实践环节必须环环紧扣、相辅相成,不可独立进行,理论教学内容作为实践环节的理论指导,实践环节则作为理解与巩固理论内容的手段。缺乏理论指导的实践环节,会使学生知其然而不知其所以然;未经实践环节巩固的理论知识,会使学生觉得枯燥乏味、难以理解。(3)方法与工具更新速度快。GIS项目设计与开发涉及多种平台、体系结构、开发语言、开发工具等因素,且这些因素种类繁多、日新月异。因此,该课程的教学内容必须紧跟市场需求变化的步伐,不断地将相关前沿内容融入到课程教案之中,这不仅要求教师能够时刻掌握学科前沿知识,也要求课程教案经常更新,时刻与行业最新研究进展接轨。课程教学方法优化探索

2.1 引入实际案例教学 GIS工程涉及许多的方法理论,如软件过程模型包括瀑布模型、演化模型、增量模型等8种模型,教师授课时若单纯地讲授理论知识,则学生很难区分不同概念之间的区别,容易混淆,且易产生枯燥乏味的感觉。为了避免这一情况的出现,教师在讲授该类型的知识时,应创造条件引入实际案例,结合案例讲解相关内容,通过将复杂抽象的知识转变为形象生动的实例,可以加深学生对理论知识的理解,激发学生学习的兴

趣,最终收获事半功倍的效果。

教师在进行案例选取时应优先考虑自己熟悉并具有丰富项目经验的案例类型,一方面可以确保在教学过程中能做到游刃有余、收放自如;另一方面可以将该案例贯穿课程的始终。笔者在教学过程中,以亲身参与的某煤矿3D GIS分析与管理系统项目为例,在问题定义、需求分析、可行性分析、总体设计、详细设计、编码、测试、维护等阶段均以该案例为参照进行讲解,使学生对GIS项目设计与开发的全过程有了一个整体的了解。如在讲解GIS系统功能模块设计时,以煤矿3D GIS分析与管理系统为例讲述功能模块的划分原则及常用方式,使采用不同的划分方法所产生不同结果之间的区别一目了然,加深了学生对该部分内容的掌握程度,极大地调动了学生学习的积极性。

在案例选择时,教师还应考虑所选案例的时效性,即所选的案例应为当前实际生产中广泛应用的类型。通过对案例的分解学习,学生不仅可以掌握课程大纲划定的知识,还可以提前熟悉该类型项目的设计流程与开发方法,为将来的就业打下基础。引导学生参与案例讨论,并指导他们以程序员、UI工程师、软件设计师的角色来分析问题并探讨解决方案,可以为学生今后从事软件工程师的工作打下基础。

2.2 实践内容做到与时俱进 许多从事GIS软件开发的人员都有个共同的观点:学校课堂上讲授的知识在参加工作以后派不上用场。笔者通过与部分GIS软件工程师交流得知这种现象并不是个例,甚至有很多软件工程师们当初并不是从学校毕业后就直接进入工作岗位的,而是通过参加各类计算机培训机构之后才在如今的单位谋得一席之位。由此可见,高校的GIS教学方式到了必须改变的时候了。各类培训机构之所以能培训出符合社会需求的人才,究其原因,是它们能够实时掌握行业的发展动态,了解哪些专业内容是符合当今行业需求。因此,高校GIS专业在进行课程实践环节教学时,应实现实践内容的与时俱进。例如,10a前ComGIS开发是个热门的技术,高校在课程实践环节指导学生学习ComGIS的开发方式是值得推崇的,很多学生毕业后也继续从事着ComGIS的研发工作;然而,10a后的今天,ComGIS已经是一个过时的技术,取而代之的是WebGIS、3D GIS、VR GIS等新技术。如果今天的高校GIS专业教师仍然只讲授ComGIS开发,由于很多企事业单位已经没有ComGIS开发的岗位,学生毕业后就会面临择业难的问题,则难免发出“学无所用”的感叹。笔者如今在指导学生进行GIS项目设计与开发课程实践时,把ComGIS作为一个基本内容进行介绍之后,将更多地时间用来教会他们使用FLEX Builder+ArcGIS Server、JavaScript+ArcGIS Server、Visual C#+ARCIMS、3ds Max+Unity3d+Visual C#等主流GIS项目开发方法,以及对SQL Server 2008、Oracle等主流数据库的操作方法。此外,还向学生介绍了以Android、IOS等平台为代表的移动GIS产品的研发思路。

2.3 组织学生参加各类GIS竞赛 目前,随着GIS行业的蓬勃发展,各类面向高校学生的GIS大赛也如雨后春笋般涌现出来,且受到了各相关院校、广大教师的重视以及学生的欢迎[6]。目前,影响力较大的GIS大赛包括“SuperMap杯全国高校GIS大赛”、“ESRI杯中国大学生GIS软件开发大赛”、“中地数码杯全国高校学生MAPGIS二次开发大赛”等,参赛人数逐年递增,作品形式逐渐丰富。与一般的课程作业不同,GIS开发大赛不仅要求学生具备扎实的理论知识,还要求学生具有对知识的综合应用、创新、团队协作等能力,而这些恰恰是学生今后进入职场所必备的技能。结语

现今IT产业链中,地理信息技术(GIS)产业已成为强劲的生产力,正日益受到业界的深度关注和热切追捧,美国更将GIS、纳米技术、生物技术列为当今社会最具发展潜力的三大技术领域。目前,我国GIS技术已广泛应用于国土、城建、交通、能源、环保、航天航空、农业、林业、教育卫生、公共事务处理、国防、外交和政府决策的诸多行业和领域,并且应用深度上不断进行了研究探索,未来凡是与地理信息空间有关的社会、经济和人们生存、生活的 98%领域都将会应用到GIS技术。

参考文献

篇6:桌面gis开发报告

富钴结壳资源量计算和资源评价是大洋富钴结壳矿区圈定工作的重要内容之一.阐述了基于 GIS 组件 MO 构建富钴结壳资源量计算系统的主要功能模块组成和设计思路.该系统利用 VC 采取面向对象的`方法编程,设计开发了富钴结壳资源量计算评价程序,实现了地质块段法等多种计算方法.该系统吸纳了资源评价和矿区圈定中水深、丰度、品位和坡度等几个重要评价指标,可方便地实现钴结壳资源量计算,为大洋富钴结壳矿区圈定和矿产资源开发提供依据和参考.

作 者:程永寿 冯志勇 殷汝广 张富元 CHENG Yongshou FENG Zhiyong YIN Ruguang ZHANG Fuyuan 作者单位:程永寿,CHENG Yongshou(天津大学,天津,300072;国家海洋信息中心,天津,300171)

冯志勇,FENG Zhiyong(天津大学,天津,300072)

殷汝广,YIN Ruguang(国家海洋信息中心,天津,300171)

张富元,ZHANG Fuyuan(国家海洋局第二海洋研究所,浙江,杭州,310012)

本文来自 360文秘网(www.360wenmi.com),转载请保留网址和出处

【桌面gis开发报告】相关文章:

Web单页技术在桌面程序开发中的应用11-21

桌面图标桌面更改显示05-22

gis开发博士论文题目05-04

桌面管理06-10

桌面部署07-20

桌面互动投影05-05

虚拟桌面系统05-01

桌面云架构05-15

桌面终端管理05-18

远程虚拟桌面06-07

上一篇:监察法试卷及答案下一篇:怎样才能生动有趣地上好美术欣赏课