《使用或Java进行ArcGISEngine开发.ppt》由会员分享,可在线阅读,更多相关《使用或Java进行ArcGISEngine开发.ppt(56页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、分享地理价值使用.Net或Java进行ArcGIS Engine开发 罗雄罗雄分享地理价值ArcGISEngine 概览概览基于基于.Net或或Java构建构建Engine应用程序应用程序版本迁移版本迁移高级功能开发高级功能开发内容概要分享地理价值ArcGIS Engine 概览分享地理价值ArcGIS OverviewArcGIS OverviewArcGIS DesktopArcGIS ServerArcIMSArcGIS Mobile ArcPadArcGIS EngineDesktop GISEmbedded GISServer GISMobile GISGeodatabaseDBMS
2、File-basedXMLArcSDEArcEditorArcViewArcInfoEngine Developer KitServer Developer KitCustomizationDesktop Developer Kit.NET C+VB Java.NET VC+VB.NETADFJavaADFC+ArcObjectsCustomizationXML+VBScriptArcPad Application BuilderJavaScriptHTML/DHTMLXML.NETServicesJSPJavaActiveX(ASP)ColdFusion分享地理价值ArcObjects是一套
3、组件的统称ESRI用ArcObjects开发软件及应用开发者可以使用ArcObjects来自定义软件或构建自己的应用系统ArcObjects是ArcGIS的核心ArcObjectsArcObjects分享地理价值ArcGISArcGIS产品与产品与ArcObjectsArcObjectsArcGIS ServerArcGIS DesktopArcGIS Engine分享地理价值用于构建定制应用的一个完整的嵌入式GIS组件库ArcObjects中的核心类库及组件是AOAO的一个子集开发语言上支持 COM.Net Java C+ArcGIS EngineArcGIS Engine分享地理价值Arc
4、GIS Engine Developer Kit开发者用于创建自定义的GIS和制图应用的开发包 ArcGIS Engine Runtime 运行自定义的Engine应用的可分发的ArcObejctsArcGIS Desktop 9.2后其中已经包含ArcGIS Engine Runtime开发者与最终用户部署都需要安装ArcGIS Engine ArcGIS Engine 组成组成分享地理价值基本服务应用层需要用到的ArcObjects核心对象几何图形的操作与显示数据访问地理数据集,矢量,栅格数据地图分析属性、空间查询,地理数据处理地图显示渲染、标注、制图表达开发组件各种应用层面上的Contr
5、ol及Commands&ToolsArcGISEngine的功能框架的功能框架分享地理价值ArcGIS EngineArcGIS Engine总览总览分享地理价值ArcGISEngine应用程序类型应用程序类型独立运行的应用程序独立运行的应用程序后台非可视化运行程序后台非可视化运行程序嵌入式应用程序嵌入式应用程序分享地理价值基于.Net或Java构建Engine应用程序分享地理价值安装安装VisualStudio2005或或2008.NET2.0 SDK和和Runtime(3.0WPF)安装安装ArcGISEngineRuntime和和SDKfor.NETRuntime也需要独立注册许可也需要
6、独立注册许可Runtime与与SDK许可差别:是否有许可差别:是否有DesignerArcGISDesktop已经包含了已经包含了Runtime准备条件分享地理价值帮助文档帮助文档示例以及代码片段示例以及代码片段VisualStudioIDE集成集成开发控件开发控件预先创建好的预先创建好的Commands、Tools、Toolbars和和MenusEngine for.NET SDK分享地理价值什么是什么是WPF?客户端展现技术客户端展现技术极炫的可视化效果极炫的可视化效果设计理念:用户界面和程序实现分离设计理念:用户界面和程序实现分离在在ArcGISEngine开发中使用开发中使用WPF将将
7、WPF用户控件放到用户控件放到AE应用程序中应用程序中将将AE控件放到控件放到WPF应用程序中应用程序中构建WPF应用程序WPF APPWPF APPWPF 分享地理价值创建一个创建一个WPF应用程序应用程序添加添加AE引用引用将将AE控件对象装载在控件对象装载在WindowsFormsHostglobeControl=new AxGlobeControl();mapHost.Child=globeControl;globeControl.BackColor=System.Drawing.Color.Black;globeControl.BorderStyle=0;步骤分享地理价值引用引用 所
8、使用工具的引用,如所使用工具的引用,如GP调用方式调用方式使用使用GP工具的名字工具的名字GP.Execute(kriging_3d,pArray,null);使用使用AE提供的提供的GP类类SpatialAnalystTools.Idw idw=new();GP.Execute(idw,null);GpDispatch反射方式调用反射方式调用调用GP工具分享地理价值调用调用GP的优越性的优越性高效率、方便易用高效率、方便易用Tips返回返回GP执行结果信息用于排查错误执行结果信息用于排查错误数据存储在数据存储在SDE库中的时候如何调用库中的时候如何调用GP?调用GP工具分享地理价值Engin
9、e.NETAPI都是直接通过都是直接通过RCW(runtimecallablewrapper)方式调用方式调用AO底层的组件,这些托管组件由底层的组件,这些托管组件由CLR(CommonLanguageRuntime)来管理,即通过来管理,即通过GC(Garbageollection)机制自动回收机制自动回收;AEfor.NET释放方法释放方法ESRI.ArcGIS.ADF.ComReleaser.ReleaseCOMObject(comObject);();CLR中的释放方法中的释放方法System.Runtime.InteropServices.Marshal.ReleaseComObje
10、ct(obj);常见问题内存释放分享地理价值常见问题组件注册开发环境开发环境工程属性设置工程属性设置Register for COM interop部署环境部署环境regasmmy.dll/tlb/codebaseregasmmy.dll/unregister分享地理价值AE中的中的COM组件都是组件都是STA线程模式的线程模式的(强线程相强线程相关性)关性),跨线程使用,跨线程使用AE的的Com对象会有问题;对象会有问题;强烈不推荐在强烈不推荐在AE中采用多线程操作中采用多线程操作AE对象,因对象,因此一般将一些独立的耗时较长的数据处理操作放此一般将一些独立的耗时较长的数据处理操作放在子线程
11、(后台线程)中处理;在子线程(后台线程)中处理;DrawShape在子线程中绘制在子线程中绘制将将AE对象作为对象作为UI控件来处理;控件来处理;在主线程中建立事件的委托代理,在子线程中采用在主线程中建立事件的委托代理,在子线程中采用Invoke方法触发;方法触发;常见问题多线程分享地理价值环境配置环境配置Engine SDK、Runtime/JDK 1.5以上、开发工具(如以上、开发工具(如Eclipse)Java环境变量环境变量Linuxsetenv JAVA_HOME /mymachine/java/jdk1.6.0_03setenv PATH$JAVA_HOME/jre/bin:$JA
12、VA_HOME/bin:$PATH 设置设置ARCGISHOME等环境变量:等环境变量:source init_java.shWindowsJAVA_HOME、JRE_HOME、PATHEngine for Java开发分享地理价值理解AO的Java InteropESRIESRI的的Java COM InteropJava COM Interop提供了提供了ArcObjectsArcObjects的的Java Java APIAPI以及用以及用JavaJava语言创建和使用语言创建和使用ArcObjectsArcObjects的运行基础的运行基础分享地理价值构建Java应用程序控制台程序控制
13、台程序EngineInitializer.initializeEngine();有用户界面的程序有用户界面的程序ArcGISVisualJavaBeans:Java-COMinterop以以AWT(AbstractWindowToolkit)控件的方式呈现给)控件的方式呈现给Java开发人员;开发人员;初始化初始化JavaInterop环境:环境:EngineInitializer.initializeVisualBeans();分享地理价值使用Visual Java Beans分享地理价值Java中常见问题接口查询接口查询不是所有的不是所有的AO类都支持接口转换;类都支持接口转换;有单参数的
14、构造函数或代理类接口有单参数的构造函数或代理类接口IxxxProxy才行才行IFeatureClass fc=fw.openFeatureClass(name);FeatureClass featureClass=new FeatureClass(fc);IFeatureClass fc=fw.openFeatureClass(name);IGeoDataset gds=new IGeoDatasetProxy(fc);分享地理价值Java中常见问题Engine控件(控件(MapBean、ToolbarBean等)始终等)始终位于界面的最上面,它遮挡了菜单和下拉框位于界面的最上面,它遮挡了菜单
15、和下拉框原因:原因:EngineJava的控件都是基于的控件都是基于AWT构建的构建的heavyweight组件,所以和组件,所以和swing的的lightweight叠加叠加时会产生覆盖;时会产生覆盖;解决办法:解决办法:在程序初始化的时候,取消在程序初始化的时候,取消lightweight的支持。的支持。JPopupMenu.setDefaultLightWeightPopupEnabled(false);分享地理价值Java中常见问题实现实现ICommand或或ITool接口,接口,Bitmap和和Cursor该该如何获取?如何获取?AEforJavaSDK提供了基础类提供了基础类Bas
16、eCommand和和BaseTool,我们可以直接继承自它们,我们可以直接继承自它们直接获取直接获取picture或或cursorBasicRasterPicture brp=new BasicRasterPicture();IPicture pic=brp.loadPicture(“path,“xx.bmp);handle=pic.getHandle();ISystemMouseCursor cursnew SystemMouseCursor();curs.loadFromFile(“path,“xx.cur);分享地理价值版本迁移分享地理价值AE升级到高版本升级到高版本移除移除AE引用后重
17、新添加新的引用;引用后重新添加新的引用;编译工程,修改提示错误的地方;编译工程,修改提示错误的地方;开发平台升级开发平台升级直接用平台提供的直接用平台提供的update向导将应用程序转换到高版向导将应用程序转换到高版本即可;本即可;如如Engine93forVS2005升级到升级到VS2008;版本更新分享地理价值为什么要迁移?为什么要迁移?ArcGIS9.4不再使用不再使用VBA,推荐用,推荐用Python;9.4版本不再有版本不再有VB6SDK;微软的微软的.NET开发平台是大势所趋;开发平台是大势所趋;两类开发语言的差异两类开发语言的差异对象类型、事件处理、接口查询、对象类型、事件处理、
18、接口查询、Win32API的使用方的使用方式等均有差别;式等均有差别;Commands或或Tools的的Bitmap属性获取方式属性获取方式VB6返回返回esriSystem.OLE_Handle.NET返回返回Int型,常用型,常用Bitmap.GetHbitmap()()VB6或VBA迁移到.NET分享地理价值MicrosoftVisualBasicUpgradeWizard如何迁移?分享地理价值ESRI-ArcGISCodeConverter;ArcGIS8.x到到9.x命名空间自动替换命名空间自动替换DimpPolyAsDimpPolyAs更新更新dll引用引用如用替换如用替换asse
19、mbly如何迁移?分享地理价值高级功能开发分享地理价值可扩展的可扩展的Editing框架框架EngineEditor核心对象的开放核心对象的开放Start/StopEditSessionsEditableLayersControlofEditOperationsEditingEvents自定义自定义EditorTask自定义自定义Snapping环境环境以以VertexCommands为代表的更多的编辑命令为代表的更多的编辑命令新的Editor框架使用分享地理价值新的Editor框架改进要 点Engine 9.2Engine 9.3查看编辑状态并不直接支持,需查看 TargetLayer是否为
20、空IEngineEditor:EditState得到当前正在编辑的Workspace对象并不直接支持,需通过TargetLayer的IDataset的Workspace得到IEngineEditor:EditWorkspace设置被编辑图层不支持IEngineEditLayers:SetCurrentLayer设置当前的Edit Task不支持IEngineEditor:CurrentTask创建自定义Edit Tasks并添加到Task Control不支持Implement IEngineEditTask监听编辑事件 OnFinishSketch不支持IEngineEditEvents得到
21、Edit Sketch不支持IEngineEditSketch:Geometry向OperationStack 中添加edit operations(ToolbarControl)不支持支持分享地理价值Editing 框架演示分享地理价值ArcGIS一种新的动态显示数据或对象移动的技术一种新的动态显示数据或对象移动的技术几乎实时的显示监测目标的地理信息的需求催生几乎实时的显示监测目标的地理信息的需求催生了了DynamicDisplay技术技术DynamicDisplayEngine9.3频繁的刷新速率下显示地理信息频繁的刷新速率下显示地理信息快速几乎无间隙的更新速度快速几乎无间隙的更新速度平滑
22、的、连续的缩放、旋转平滑的、连续的缩放、旋转Dynamic图形图形几乎实时的显示性能几乎实时的显示性能Dynamic Display分享地理价值在在Dynamic显示状态下显示状态下Cache的使用及重用的使用及重用可用程序事先生成可用程序事先生成并可具体指定创建并可具体指定创建Cache的区域的区域与与ArcGISServer的的Cache结构相同并可互用结构相同并可互用加强了对加强了对Cache的管理的管理Cache方面的改进分享地理价值支持支持TextBox对从右到左书写顺序的语言良好支持对从右到左书写顺序的语言良好支持普遍支持了在普遍支持了在Marker周围绘制文本的功能周围绘制文本的
23、功能加强了对文本之间的间距的控制加强了对文本之间的间距的控制在屏幕上绘制在屏幕上绘制CompoundMarkers线型的连续性线型的连续性Text 方面的改进分享地理价值在在DynamicDisplay状态下选择要素状态下选择要素连续的缩放连续的缩放SDK中增加了更多的示例及技术文档中增加了更多的示例及技术文档Bugs的解决的解决其他方面的改进分享地理价值并不是所有显示需求的灵丹妙药并不是所有显示需求的灵丹妙药在默认显示状态下不推荐使用在默认显示状态下不推荐使用打印打印对显示效果要求较高的情况下慎用对显示效果要求较高的情况下慎用在编辑状态下不推荐使用在编辑状态下不推荐使用Dynamic Dis
24、play不适用情况分享地理价值Dynamic Display 演示分享地理价值需要有需要有TrackingAnalyst扩展许可扩展许可通常是对已经存在的轨迹数据或历史数据变迁的通常是对已经存在的轨迹数据或历史数据变迁的一种回放一种回放除了点的轨迹外,也支持线、面要素的动态变化除了点的轨迹外,也支持线、面要素的动态变化时间字段和事件时间字段和事件ID字段是里面比较重要的字段字段是里面比较重要的字段Tracking Analyst分享地理价值一、添加一、添加Tracking扩展扩展使用Tracking Analyst开发步骤分享地理价值二、设置二、设置Tracking环境环境使用Tracking
25、 Analyst开发步骤分享地理价值三、添加三、添加FeatureClass,创建,创建Tracking图层,设置图层,设置Renderer和其他和其他ITemporalLayer属性属性注:注:ITemporalLayer必须在必须在TrackingEnvironment设设置好之后创建置好之后创建使用Tracking Analyst开发步骤分享地理价值四、随时间变化更新轨迹四、随时间变化更新轨迹修改修改TemporalPerspective属性(时间值)来控制当前属性(时间值)来控制当前播放的位置播放的位置使用Tracking Analyst开发步骤分享地理价值Tracking事件与事件与
26、UI的交互需要用到多线程,在主线程的交互需要用到多线程,在主线程里通过里通过Invoke方法激发自定义事件代理:方法激发自定义事件代理:Invoke(newIncrement(OnIncrement);使用Tracking Analyst开发步骤分享地理价值Tracking Analyst演示分享地理价值使用使用Element绘制,也就是将轨迹动态地以绘制,也就是将轨迹动态地以Element的形式添加到地图上的形式添加到地图上优点优点可以很方便地定义符号和文字标识;可以很方便地定义符号和文字标识;很多细节都可以控制,如选择、修改等很多细节都可以控制,如选择、修改等缺点缺点支持不了太多的数量,一
27、般大几百个支持不了太多的数量,一般大几百个Element后速度会后速度会慢;慢;受底图影响大,特别是底图包含大量受底图影响大,特别是底图包含大量label;绘制的绘制的Element位于最上层,会压盖底图的位于最上层,会压盖底图的label(不过(不过这点可以通过控制这点可以通过控制label行为来解决)行为来解决)动态目标追踪的实现方法(一)分享地理价值使用使用MapControl的的DrawShape方法(或方法(或IScreenDisplay.Draw*),也是根据轨迹线的,也是根据轨迹线的shape直接显示直接显示优点优点屏幕绘制,效率比屏幕绘制,效率比Element高,刷新快高,刷新
28、快不会压盖底图标注不会压盖底图标注缺点:缺点:细节控制不方便细节控制不方便刷新后消失,因此需要在刷新后消失,因此需要在OnAfterDraw事件里去重绘事件里去重绘才能保持才能保持动态目标追踪的实现方法(二)分享地理价值IRealTimeFeedManager等接口实现等接口实现gps追踪的模追踪的模拟拟优点优点在内存中构建在内存中构建FeatureLayer,动态更新方便,由于是,动态更新方便,由于是图层加载,显示较快图层加载,显示较快缺点缺点细节控制不方便,需要动态构建细节控制不方便,需要动态构建FeatureClass模拟模拟GPS具体可参考以下例子:具体可参考以下例子:Develope
29、rKitSamplesCOMApplicationsGPSNavigatorVisual_Basic动态目标追踪的实现方法(三)分享地理价值动态图层技术(动态图层技术(IDynamicLayer)优点优点效率高,能支持数万的的轨迹要素效率高,能支持数万的的轨迹要素底图底图Cache,可重用,不受底图复杂度影响,可重用,不受底图复杂度影响无缝平滑缩放无缝平滑缩放缺点缺点细节控制不太方便,选择、查询、移动等都得自己写细节控制不太方便,选择、查询、移动等都得自己写动态目标追踪的实现方法(四)分享地理价值谢谢!欢迎大家接着参与下一个讲座欢迎大家接着参与下一个讲座数据互操作与空间数据互操作与空间ETLETL主讲人:张政主讲人:张政结束