ArcGISEngine的开发与部署培训资料.pdf

上传人:赵** 文档编号:49563484 上传时间:2022-10-09 格式:PDF 页数:90 大小:1.32MB
返回 下载 相关 举报
ArcGISEngine的开发与部署培训资料.pdf_第1页
第1页 / 共90页
ArcGISEngine的开发与部署培训资料.pdf_第2页
第2页 / 共90页
点击查看更多>>
资源描述

《ArcGISEngine的开发与部署培训资料.pdf》由会员分享,可在线阅读,更多相关《ArcGISEngine的开发与部署培训资料.pdf(90页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、ArcGISArcGIS EngineEngine的开发与部署的开发与部署朱 政ESRI中国(北京)有限公司2004年4月目录目录?ArcGIS 9的开发框架?ArcGIS Engine的概念以及功能?ArcGIS Engine的license部署?ArcGIS Engine的开发?实例1 2 3ArcGISArcGIS 9 9 概况概况ArcGIS 9 在8版本上扩展的主要功能地理处理3D 可视化开发工具新产品ArcGIS EngineArcGIS ServerArcGIS ArcGIS 9 9的开发的开发?ArcGIS Engine?ArcGIS Server?ArcGIS Desktop

2、 上的开发ArcGIS ArcGIS 9 9 的开发的开发ArcGIS 9 为开发桌面和服务器应用提供了一个完整的系统,它允许开发人员:1 嵌入GIS地图/功能到其他的应用中2 创建和分发自定义的桌面应用3 配置/客户化 ArcGIS的应用,比如ArcMap,ArcCatalog4 扩展ArcGIS 框架和模型5 创建网络服务和应用ArcGISArcGIS DesktopDesktopArcGISArcGIS EngineEngineArcGISArcGIS ServerServerArcGISArcGIS 9 9 的产品共享的产品共享ArcObjectsArcObjectsArcGISArc

3、GIS 9 9 开发框架开发框架?ArcGIS 9 建立在 ArcGIS 8的基础上?ArcGIS 9是在新的模块化的框架下建立.相同的对象改进的功能?框架改变的几个方面模块化多种APIs跨平台ArcGISArcGIS 模块化的框架模块化的框架?模块化在ArcGIS 9的各个部分中都被考虑了。?ArcGIS对象模型被组织成一系列的库。?库是基于功能来分的对象类。?These libraries define?Type libraries?Name spaces?Java packages?C+header filesArcGISArcGIS EngineEngine关键特征关键特征?标准的GI

4、S框架?有效的license配置方案?跨平台 windows unix?跨语言 com,.Net,C+,Java?ArcGIS的扩展功能?开发控件ArcGISArcGIS EngineEngine的简介的简介?ArcGIS Engine是为开发商建立应用提供的完整的嵌入式的GIS组件库?ArcGIS Engine由两部分组成:?开发包(开发人员)?运行包(最终用户)分发分发ArcGIS ArcGIS EngineEngine能做什么?能做什么??显示多个图层组成的地图?漫游和缩放地图?查找地图中的要素?用某一字段显示标注?显示航片和遥感影像的栅格数据?绘制几何要素?绘制描述性的文字?沿线,或者

5、用多边形,圆等选择要素?根据一定距离选择要素?通过sql表达式查询要素?渲染要素?动态显示实时数据,或时间序列数据?地图定位?几何操作?维护几何要素?创建和更新地理要素和属性ArcGIS ArcGIS EngineEngine的功能的功能ArcGIS ArcGIS EngineEngine开发包开发包?ArcGIS Engine开发包包括了支持开发任务所需要的所有的开发资源。?ComponentsEngine libraries ArcGIS controls?APIsCOM,.NET,Java,and C+?ToolsArcGIS Developer KitDocumentationDeve

6、loper utilitiesArcGIS ArcGIS EngineEngine运行包运行包?ArcGIS Engine运行包包括了支持运行ArcGIS Engine开发的应用程序所需要的资源。ArcGISArcGIS EngineEngine库库?System SystemUI GeoAnalyst?Geometry 3DAnalyst?Display GlobeCore?Server SpatialAnalyst?Output GeoStatisticalAnalyst?Geodatabase Publisher?GISClient ArcReaderControl?GeoDatabas

7、eDistributed?DataSourcesFile?DataSourcesOleDB?DataSourcesRaster?Cato?Location?NetWorkAnalysis?ControlsBird AbstractchickenCoClassegg classegg classwings classwings classnest CoClass*继承产生有组成主要主要LibraryLibrary介绍介绍System System库是ArcGIS框架中最底层的一个库,它包含了一些被其他库使用的一些组件。SystemUI SystemUI库定义了一些在ArcGIS中被用户界面组件使

8、用的类型。象Icommand和Itool这样的接口就在这里定义。Geometry 几何库包含了核心的几何对象,比如点,面,线等。在几何库中还定义和实现了空间参考的对象,包括投影坐标系和几何坐标系。几何库包含了核心的几何对象,比如点,面,线等。在几何库中还定义和实现了空间参考的对象,包括投影坐标系和几何坐标系。Display 显示库包含了支持在输出设备上显示图形的组件,屏幕显示,符号,颜色等都在这个库中定义。显示库包含了支持在输出设备上显示图形的组件,屏幕显示,符号,颜色等都在这个库中定义。Controls 控件库包含了应用程序开发中用到的控件,包括在控件中使用的命令和工具。控件库包含了应用程序

9、开发中用到的控件,包括在控件中使用的命令和工具。Geometry库GeometrySphereEnvelopPointMultipointCurveRayTrianglesTrangleStripTriangleFanMultiPatchGemetryBagSegmentPathPolycurveBezierCurveCircularArcEllipticArcLineRingPolygonPolyLine*Display库SymbolTextSymbolMarkerSymbolLineSymbolFillSymbol3DchartSymbolSimpleMarkerSymbolCartogr

10、aphicMarkerSymbolCharacterMarkerSymbolPictureMarkerSymbolCarto?Carto库包含了为数据显示服务的对象。库包含了为数据显示服务的对象。PageLayout和和Map对象在这个库中,以及支持各种数据类型的图层,渲染。这个库中也包括了对象在这个库中,以及支持各种数据类型的图层,渲染。这个库中也包括了MxdServer和和MapServer对象,它们通常被对象,它们通常被Server用来显示地图数据。用来显示地图数据。GeoDatabase?GeoDatabase包含了所有相关数据组织的定义类型。要素,表,网络,包含了所有相关数据组织的定

11、义类型。要素,表,网络,TIN都在这个库中定义。其中一些类型的实现在各自的数据来源的库中。都在这个库中定义。其中一些类型的实现在各自的数据来源的库中。Carto库 MapElementsElementElementMapPageLayoutMapSurrondMapSurrondFrameElementFrameElementGraphicElementGraphicElementElementElementScaleTextMarkerNorthArrowElement*Layer In Carto*RenderTinRenderClassBreakRenderSimpleRenderCha

12、rtRenderUniqueValueRenderFeatureRenderFeatureRenderRasterRenderFeature LayerLayersLayerDataLayerCompositeLayerDisplayLayerTableLayerAnalyseLayerRasterLayerFeatureLayerDemisionLayerTinLayerCatalogRasterLayerCADLayerAnnotionLayerGeoDatabaseWorkspaceFactoryWorkspaceWorkspaceDatasetsDatasetsGeoDatasetTa

13、bleTableFeatureDatasetFeatureDatasetRasterDatasetRasterDatasetObjectClassObjectClassRelationshipclassRelationshipclassFeatureClassFeatureClassFeatureFeatureObjectObjectRowRowFeatureCursorFeatureCursorCursorCursor*1DataSourcesFile DataSourcesFile库包含了为支持的矢量数据格式提供的工作空间工厂和工作空间.DataSourcesGDB DataSources

14、GDB 库包含了为存储在RDBMS中的矢量和栅格数据提供的工作空间工厂和工作空间。GeoDatabaseDistributed GeoDatabaseDistributed 库包含了需要执行checkout/checkin 的离线GeoDatabase的对象。DataSourcesOleDB DataSourcesOleDB 库为通过OleDB方式提供的数据提供空组空间。DataSourcesRaster DataSourcesRaster 包含了为基于文件方式的栅格数据提供的工作空间工厂和工作空间。GISClient GISClient库包含了作用于远程GIS服务的对象。这些远程服务可以有A

15、rcGIS Server和ArcIMS提供。Server库包含了连接ArcGIS Server的对象,以及管理这个连接的对象。GeoAnalyst GeoAnalyst库包含了核心的空间分析功能,这些功能是在spatialAnalyst和3DAnalyst扩展都会用到的功能。3DAnalyst 3DAnalyst库包含了数据的3d分析对象,也包括显示3d数据,在这个库中有一个控件SceneControl可用。GlobeCore GlobeCore库包含了globe数据分析的对象,也包含了显示globe数据,在这个库中有一个控件GlobeControl可用。SpatialAnalyst Spat

16、ialAnalyst库包含了在栅格和矢量数据上执行空间分析的对象。控件控件?MapControl?PageLayoutControl?TocControl?ToolbarControl?SceneControl?GlobeControl?ReadControl工具集工具集选择绘图地图打印SceneGlobe标准ArcGISArcGIS Engine licenseEngine license部署和部署和分发分发ArcGISArcGIS EngineEngine的两种的两种licenselicense?esriLicenseProductCodeEngine?esriLicenseProduct

17、CodeEngineGeoDBArcGIS ArcGIS EngineEngine的其他可用的的其他可用的licenselicense?esriLicenseProductCodeArcView?esriLicenseProductCodeArcEditor?esriLicenseProductCodeArcInfo用合适的用合适的licenselicense初始化应用程序初始化应用程序?用合适的license初始化应用程序,既能使得应用程序可以到达license许可的功能,也能保证它在分发的任何机子上成功的运行1 检查license是否可用2 检查应用的扩展模块的license是否可用(如果

18、需要)3 用相应的license初始化应用程序举个例子举个例子?用相应的license初始化应用程序的例子?应用程序定位:ArcEditor级别?可用的license:Engine?EngineGeoDB?ArcView?ArcEditor?ArcInfoAOInitialize用到的类:Create a new AOInitialize objectIs the EngineGeoDBproduct licensed?Initilaize the application with the EngineGeoDB product.Is the EngineGeoDB product now c

19、hecked out?License configuration successful.Is the ArcEditor product licensed and avaliable?Is the ArcInfo product licensed and available?Initilaize the application with the ArcEditor product.Is the ArcEditor product now checked out?Initilaize the application with the ArcInfo product.Is the ArcInfo

20、product now checked out?License configuration successful.License configuration successful.YesNoYesYesYesYesYesNoNoNoLicense configuration unsuccessful.Exit ApplicationLicense configuration unsuccessful.Exit ApplicationLicense configuration unsuccessful.Exit ApplicationNo控件开发控件开发licenselicense需求需求控件运

21、行控件运行licenselicense需求需求分发分发ArcGIS ArcGIS Engine RuntimeEngine Runtime?直接运行ArcGIS Engine Runtime的Setup?把ArcGIS Engine Runtime Setup包括在你的应用程序的安装程序中把把ArcGISArcGIS Engine Runtime SetupEngine Runtime Setup包括在你包括在你的应用程序的安装程序中的方法的应用程序的安装程序中的方法?At the End of an Msi-base setup?Within a Scripted setup?Within

22、a batchREM Launch MSI Silently-NO UI msiexec.exe/i%MSI_PATH%/qn ArcGIS ArcGIS Engine RuntimeEngine Runtime的系统需求的系统需求?Windows NT sp6a?Windows 2000?Windows xp Professional?Windows 2003 ServerArcGISArcGIS Engine Engine 应用应用?独立的GIS 应用程序ConsoleGUI applications?嵌入式的应用GIS in other productsArcGIS ArcGIS Eng

23、ineEngine开发资源开发资源?ArcGIS Developer Help system?ArcGIS Developer Series?ArcGIS Developer Online?ESRI Support Center?Training ArcGISArcGIS Engine Engine 开发帮助开发帮助?Getting Started?Developing with ArcGIS?ArcGIS Engine?Development Environments?Technical Documents?Add-Ins?Developer Tools?Library Reference?

24、Samples移植从移植从 8.3 8.3 to 9.0to 9.0?ArcGIS 8 应用程序可以不用改变的在ArcGIS 9平台上运行?重新编译不是必要的,但是运行时的考虑?不是所有的ArcGIS 8.3 的对象都包括在ArcGIS Engine中?Some WinAPIs with references to ProgIDs will fail.ProgIDToCLSID()esriCore.xxx?UID will automatically map 8.3 to 9 types.esriCore.Editor编译时考虑?OLBs unreferenced esriCore.olb a

25、nd add new libraries?ProgIDs with esriCore.xxx need to be converted?Method signatures that changed代码转换的代码转换的Add inAdd in?Esri VB6 Code Converter?-VBCodeConverter.dll?Esri DotNet Code Converter -ConverterDotNetCodeConverter.dll?阅读ArcGIS Engine Developer向导!?了解ArcObjects编程的基础?具体步骤:1.安装 ArcGIS Engine开发包

26、.2.决定你将开发的应用程序的类型3.选择一种API和开发环境.4.编写应用程序代码.5.分发应用程序.编程开始之前需要做什么?编程开始之前需要做什么?选择一种选择一种ArcGISArcGIS Engine APIEngine API?APIs 是到达底层的ArcObjects的函数?不同的APIs使用的是相同的底层的对象和接口?COM,.NET,Java,and C+.APIs APIs 和开发环境和开发环境?COM Visual Studio 6.0(VB,VC+),Delphi?.NETVisual Studio.NET(VB.NET,C#,VC+)?C+Visual Studio 6.

27、0,Borland C+,C+?JavaJBuilder,Eclipse,JDK使用使用 COM APICOM API编程编程?RequirementsSimply reference or import type libraries(.olbs)?.Program FilesArcGIScom?Types of applicationsVirtually any typeWindows and control basedCross product:Desktop and ArcGIS EngineCustom COM objects使用使用.NET API.NET API编程编程?Requi

28、rements.NET Framework 1.1 Reference ESRI.NET assemblies(.dlls)?.Program FilesArcGISDotNet?Primary Interop Assemblies(PIA)?Signed by ESRI?Registered in GAC when installed?Types of applicationsVirtually any typeWindows and control basedCross product:Desktop and ArcGIS EngineWeb access classes使用使用Java

29、APIJava API编程编程?RequirementsJDK 1.4.xReference ESRI packages(.jar)?.Program FilesArcGISjava arcobjects.jar jintegra.jar arcgis_visualbeans.jar?Types of applicationsVirtually any typeWindows,utility,and control basedCross platform(Windows and UNIX)使用使用 C+APIC+API编程编程?RequirementsReference C+header fi

30、les(.h).Program FilesArcGISincludeCPPAPI?ArcSDK.h?Types of applicationsVirtually any typeWindows,utility,and control basedCross platform(Windows and UNIX)开发实例开发实例?ActiveX(Visual Basic 6.0)?Java Bean?Windows Controls(C#)Visual Basic 6.0Visual Basic 6.0环境中的开发环境中的开发1 引用相应的库,加载ArcGIS 控件2 在控件中加入相应的地图文件3

31、添加工具条4 创建弹出式菜单5 创建一个子定义的工具6 自定义工具条加载加载ArcGISArcGIS控件控件1 新建一个project2 在添加Components对话框中,选择ESRI MapControl,ESRI PageLayoutControl,ESRI TOCControl,ESRI ToolbarControl,在ToolBox中会以这样的图标出现3 在添加references对话框中,选择ESRI CartoObject Library,ESRI Display Object Library,ESRI Geometry Object Library,ESRI System Ob

32、ject Library,ESRI SystemUI Object Library在在FormForm中嵌入中嵌入ArcGIS ArcGIS 控件控件1 打开已有的Form2 通过双击或者拖动的方式把工具箱中的ArcGIS控件加入到From中在在MapControlMapControl和和PageLayoutPageLayout中中添加地图文档添加地图文档?Private Sub Form_Load()?在Pagelayout中检查和加载地图文档?Dim sFileName As String?sFileName=.DataGulf of St.Lawrence.mxd?If PageLayo

33、utControl1.CheckMxFile(sFileName)Then?PageLayoutControl1.LoadMxFile sFileName?End If?End SubPrivate Sub PageLayoutControl1_OnPageLayoutReplaced(ByVal newPageLayout As Variant)加载相同的地图文档到MapControl中MapControl1.LoadMxFile PageLayoutControl1.DocumentFilename Set the extent of the MapControl to the full

34、extent of the data MapControl1.Extent=MapControl1.FullExtent End Sub设置设置TOCControlTOCControl,ToolBarControlToolBarControl和和PageLayoutControlPageLayoutControl的联系的联系Private Sub Form_Load()在Pagelayout中检查和加载地图文档Dim sFileName As String sFileName=.DataGulf of St.Lawrence.mxd If PageLayoutControl1.CheckMxF

35、ile(sFileName)Then PageLayoutControl1.LoadMxFile sFileName End If 设置联系TOCControl1.SetBuddyControl PageLayoutControl1 ToolbarControl1.SetBuddyControl PageLayoutControl1 End Sub在在ToolBarControlToolBarControl中添加工具中添加工具Dim sProgID As String 添加PageLayout中的浏览工具sProgID=esriControlTools.ControlsPageZoomInTo

36、ol ToolbarControl1.AddItem sProgID,True,esriCommandStyleIconOnly sProgID=esriControlTools.ControlsPageZoomOutTool ToolbarControl1.AddItem sProgID,False,esriCommandStyleIconOnly sProgID=esriControlTools.ControlsPagePanTool ToolbarControl1.AddItem sProgID,False,esriCommandStyleIconOnly 添加Map浏览工具sProgI

37、D=esriControlTools.ControlsMapZoomInTool ToolbarControl1.AddItem sProgID,True,esriCommandStyleIconOnly sProgID=esriControlTools.ControlsMapZoomOutTool ToolbarControl1.AddItem sProgID,False,esriCommandStyleIconOnly sProgID=esriControlTools.ControlsMapPanTool ToolbarControl1.AddItem sProgID,False,esri

38、CommandStyleIconOnly 为为PageLayoutPageLayout创建弹出式菜单创建弹出式菜单菜单定义Option Explicit Private m_pToolbarMenu As IToolbarMenu 菜单定义IToolbarMenu指得是什么?Private Sub Form_Load()创建新的菜单Set m_pToolbarMenu=New ToolbarMenu 在菜单中添加命令m_pToolbarMenu.AddItem sProgID,False,esriCommandStyleIconAndText sProgID=esriControlTools.

39、ControlsPageZoomOutFixedCommand m_pToolbarMenu.AddItem sProgID,False,esriCommandStyleIconAndTextsProgID=esriControlTools.ControlsPageZoomWholePageCommand m_pToolbarMenu.AddItem sProgID,False,esriCommandStyleIconAndTextsProgID=esriControlTools.ControlsPageZoomPageToLastExtentBackCommand m_pToolbarMen

40、u.AddItem sProgID,True,esriCommandStyleIconAndTextsProgID=esriControlTools.ControlsPageZoomPageToLastExtentForwardCommand m_pToolbarMenu.AddItem sProgID,False,esriCommandStyleIconAndText 把此菜单与PageLayoutControl挂钩m_pToolbarMenu.SetHook PageLayoutControl1 End SubPrivate Sub PageLayoutControl1_OnMouseDo

41、wn(ByVal button As Long,ByValshift As Long,ByVal x As Long,ByVal y As Long,ByVal pageX As Double,ByVal pageY As Double)右键弹出菜单If button=vbRightButton Then m_pToolbarMenu.PopupMenu x,y,PageLayoutControl1.hWnd End If End Sub使得在使得在TOCControlTOCControl中的标注可中的标注可编辑编辑?TOCControl1.LabelEdit=esriTOCControlMa

42、nual 在在MapControlMapControl上画图形上画图形?Private Sub MapControl1_OnAfterDraw(ByVal display As Variant,ByVal viewDrawPhase As Long)?Dim pViewDrawPhase As esriViewDrawPhase?pViewDrawPhase=viewDrawPhase?If pViewDrawPhase=esriViewForeground Then?刷新前景的时候画?MapControl1.DrawShape m_pEnvelope,m_pFillSymbol?End If

43、?End Sub创建一个自定义的工具创建一个自定义的工具?创建一个ActiveX Dll的工程?添加相关的引用?实现两个接口ICommand和ITool?编译注册?添加到对应的ToolBarControl中自定义自定义ToolBarControlToolBarControl?自定义ToolBarControl就意味着可以定制工具条分发分发?Private Sub Form_Load()?Create a new AoInitialize object?Set m_pAoInitialize=New AoInitialize?If m_pAoInitialize Is Nothing Then?

44、MsgBox Unable to initialize.This application cannot run!?Unload Form1?Exit Sub?End If?Determine if the product is available?If m_pAoInitialize.IsProductCodeAvailable(esriLicenseProductCodeEngine)=esriLicenseAvailable Then?If m_pAoInitialize.Initialize(esriLicenseProductCodeEngine)esriLicenseCheckedO

45、ut Then?MsgBox The initialization failed.This application cannot run!?Unload Form1?Exit Sub?End If?Else?MsgBox The ArcGIS Engine product is unavailable.This application cannot run!?Unload Form1?Exit Sub?End If?End Sub用可视化的用可视化的Java BeanJava Bean建立建立ArcGISArcGIS EngineEngine的开发实例的开发实例?1 建立开发环境?2 用可视化

46、的组件家里一个GUI?3 加载地图文档?4 添加工具?5 Buddying upToolBarControl和TocControl?6 创建弹出式菜单?7 创建一个自定义的工具?8 自定义工具条需求需求?1 An installation of the ESRI ArcGISEngine Developer Kit.?2 An installation of Java 2 SDK,preferably 1.4.2 or later?3 A Java IDE of your choice or your favourite text editor?Java programming languag

47、e.建立开发环境建立开发环境?设置环境变量?Path to ArcGIS/bin?Path to Java SDK/bin?Path to Java SDK/jre/bin?把下面的jar文件加入到classpath中:?ArcGISjavaoptarcobjects.jar?ArcGISjavaoptarcgis_visualbeans.jar?ArcGISjavajintegra.jar.NetNet环境中环境中ArcGIS ArcGIS EngineEngine的开的开发实例发实例1 在Microsoft Visual Studio.NET.中引用相应的库,加载ArcGIS 控件2 在控件中加入相应的地图文件3 添加工具条4 创建弹出式菜单5 创建一个子定义的工具6 自定义工具条用用ArcGISArcGIS EngineEngine开发应用程开发应用程序的开发环境序的开发环境?Windows 开发人员:Microsoft Visual Studio and Delphi?Java开发人员:Eclipse,Sun ONE Studio,and Borland.s JBuilder培训的培训的pdfpdf下载地址下载地址?ftp:/211.155.249.80

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com