分享
分享赚钱 收藏 举报 版权申诉 / 124

类型使用arcgis-server开发应用程序.ppt

  • 上传人:无敌
  • 文档编号:383220
  • 上传时间:2018-04-04
  • 格式:PPT
  • 页数:124
  • 大小:5.31MB
  • 配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    使用arcgis-server开发应用程序.ppt
    资源描述:

    1、使用ArcGIS Server开发应用程序 初步课程(.NET),前 言,1-3,该课程所需预备知识,前期课程ArcGIS介绍课程 I 和 II有扩展过ArcGIS桌面应用程序或者是ArcObjects的开发经验ArcObjects方面的知识理解 COM 知道如何访问开发者资源Internet方面的知识互联网开发语言 (ASP.NET, JSP, JavaScript, )服务器、管理员、协议、帐号以及安全性等ArcGIS Server方面的知识理解ArcGIS Server的体系结构,1-4,回顾:什么是ArcGIS Server?,用来构建基于互联网的GIS应用程序的软件组件被设计用来集中

    2、式应用程序暴露高级的GIS功能支持多用户是一个开发产品,1-5,回顾: ArcGIS Server 产品,GIS Server 组件ArcObjects 库ArcObjects 开发工具Web 应用程序开发框架(ADF)Web 应用程序运行时.NET 和 Java开发工具扩展模块Spatial, 3D, StreetMap USA通过授权文件得到软件许可,1-6,回顾:哪些ArcObjects功能是有效的?,基本的服务核心功能,几何操作等数据访问访问栅格和矢量数据图形分析高级的空间和SQL查询图形表现标注、符号化、专题图开发组件开发工具、图形显示、3D控件、工具条、内容表等,ArcGIS Se

    3、rver,1-7,使用ArcObjects和Web技术来构建集中式的GIS应用桌面程序扩展ArcMap, ArcCatalog, ArcScene 和 ArcGlobeEngine应用程序客户化标准的独立应用程序Web应用程序ASP, JSPWeb services企业级应用,回顾:可以用来构建何种应用?,1-8,ArcGIS Server开发过程,步骤创建和处理数据决定应用的类型 开发应用功能通过一个Web应用来使得功能有效部署,1-9,开发者资源,ArcGIS 开发帮助开发手册特定的语言帮助 (VB, VC+, .NET, Java)对象模型图图书以及技术文档例子开发工具Add-ins 和

    4、 toolsArcGIS 开发者在线最近的开发信息,讨论组等等,ArcGIS Server 安装,1-11,概况,安装ArcGIS Server 与开发工具Web 应用程序开发框架 (ADF)配置ArcGIS Server许可开发资源开发环境回顾产品许可,1-12,安装ArcGIS Server的步骤,安装前的准备安装GIS server组件选择正确的开发工具选项安装ADF开发工具Post-installation配置Server授权 Server系统配置,1-13,1. 安装前的准备,.NET 开发 API需要.NET Framework 1.1从MSDN上免费下载Java开发API需要Ja

    5、va JDK 1.4.1从Sun上下载开发环境任何COM语言.NET 2003Java IDE,1-14,2. 安装 GIS Server 组件,Server Object ManagerSOM 服务Server Object ContainerArcObjects 对象.NET 集合Java 类,选择需要的组件进行安装。,1-15,3. ArcGIS Server 开发工具选项,语言相关的组件COM.NETJava帮助文档工具例子,1-16,4. ArcGIS Server ADF 开发工具,.NET ADF的安装与Visual Studio .NET 进行整合开发者资源例子需要 Visua

    6、l Studio .NET 2003,1-17,5. Post-installation,Post-installation是安装过程的一个部分,允许对Server进行配置和授权配置设立帐号授权使软件组件有效可以从菜单中运行Start All Programs ArcGIS ArcGIS Server Post Install,1-18,授权Server,提供一个途径为系统中的ArcObjects进行解锁需要一个软件授权文件 ( *.ecp),1-19,ArcGIS Server 许可管理,允许设计和部署ArcGIS Server应用程序.ecp文件包含使得ArcGIS Server相应功能有

    7、效的代码arcgisserverstreetmapserverstreetmapusaspatialserver3dserver授权在两个CPU上部署解决方案只需要在SOC机器上进行授权,1-20,6. 系统配置,配置开发资源和环境开发资源执行 register_in_menu.reg 文件开发环境VB6 和 .NET注册开发add-ins (VB6 and .NET),ArcGIS Server 配置的进一步理解,1-22,ArcGIS Server 组成: 客户端,ArcGIS Server的客户端必须是有联网功能的应用程序可以是一下软件内部网 ArcGIS 桌面ArcGIS Engine

    8、InternetWeb 浏览器ArcGIS 桌面自定义的客户端Engine开发的应用,1-23,ArcGIS Server 组成: Web 服务器,有Web服务能力的机器软件需求Web 服务器开发环境ArcGIS 软件安装ADF 组件 .NET/JavaADF 开发工具,1-24,ArcGIS Server 组成: GIS 服务器,能提供GIS 服务的一台或多台机器软件需求支持的操作系统开发环境ArcGIS 软件安装Server Object Manager (SOM)Server Object Container (SOC)ArcObjectsServer 开发工具,注意Web服务器和GIS

    9、服务器的区别,1-25,GIS server 术语,SOM 是操作系统的一个服务 需要有负载均衡的能力管理对SOC的请求SOC处理来自SOM的请包含一个或者多个Server objectsServer objects粗颗粒的对象保持这传入的请求通过Server Objects可以调用适当的细颗粒的 ArcObjects,1-26,ArcGIS Server 安装需要考虑的,希望如何安装和配置?单台计算机 多台计算机谁来做开发?将在采用何种方式开发?Web 服务 (ASP.NET, JSP, Web services)COM 对象将在哪里安装不同的组件?,1-27,典型的单机安装 (开发),在一

    10、台机器上运行安装客户端IE 或者 ArcGIS 桌面应用程序Web 服务器Internet Information ServerGIS 服务器Visual Studio .NET 2003ArcGIS ServerSOM 组件SOC 组件ADF 开发包Server 开发包,容易安装,适合初学者以及简单应用。不利之处是失去了动态负载均衡的能力,对应大量的客户端并发访问。,1-28,典型分布式安装,安装不同部分在多台机器上客户端IE 和 ArcGIS 桌面应用程序Web 服务器Internet Information ServerADF 组件GIS server 管理器SOMGIS server

    11、容器Visual Studio .NET 2003GIS serverSOCServer 开发工具包,功能强大,构架复杂。,1-29,ArcGIS Server配置的层次,ArcGIS Server 配置管理组和帐号访问组和帐号操作系统配置为相应的文件和目录添加权限,1-30,5. Post-installation,配置 GIS server设置使用者与组帐号授权使软件组件有效可以从菜单中开始运行Start All Programs ArcGIS ArcGIS Server Post Installation,可以在运行安装的过程中Post,也可以在随后的任何时间从菜单中启动Post的过程。

    12、,1-31,配置 ArcGIS Server: 组帐号,安装程序自动创建两个本地组agsadmin: 包含所有将用来管理Server的帐号agsusers:包含所有将用来访问Server的帐号需要区分Server使用者中哪些是管理哪些是访问的。需要手工把帐号加入相应的组中,1-32,配置 ArcGIS Server: 使用者,SOC 和 SOM 使用特定的帐号来运行安装设置该帐号是特别的agsSOM 帐号被 SOM服务来使用 (ArcSOM.exe)服务在系统启动的时候启动有权使用SOM的配置和日志文件夹agsSOC帐号被 SOC进程来使用 (ArcSOC.exe)能够访问系统的资源有权使用W

    13、indows的临时目录,1-33,使用已经存在的帐号,也可以使用已经存在的帐号来启动SOM和SOC在一个分布式安装中容易管理注意帐号的权限必须在同一个域中,为了方便起见,可以把该两个帐号都制定到系统的Administrator上。,1-34,6. 系统配置,使用操作系统的工具去管理Server计算机管理工具Windows Explorer三个部分管理帐号,把帐号添加到不同的组中设置文件和文件夹的权限,设置相应的访问权限配置虚拟目录,允许通过URL来访问Server的输出,1-35,添加Server的管理员,添加用户帐号到 agsadmin组中Server的管理员有权限去做 添加、删除、修改、启

    14、动和停止 server objects把通用的帐号加入到组中把登录帐号加入到组,拥有对Server管理的权限使用ArcCatalog去管理server objects,1-36,添加Server的访问者,添加用户帐号到 agsusers 组Server的访问者有权限去做连接 创建请求把通用的帐号加入到组中把登录帐号加入到组,拥有对Server访问的权限,1-37,配置数据目录,对SOC进程授权访问数据源数据源Map 文档地理定位器数据授予agsSOC 帐号对数据源和文件读的权限Example: c:StudentData,1-38,配置输出目录,SOC 需要对输出目录进行读写把临时文件文件图像

    15、文件 (_ags.xxx)其他文件 (_ags.xxx)授予 agsSOC帐号对输出文件夹的读写权限Example: C:inetpubwwwroottemp安装程序自动授予的访问权限$systemtemp (SOM and SOC),1-39,配置虚拟目录,让Web客户端通过URL访问临时资源指向一个SOC用来进行输出的目录例如C:inetpubwwwroottempHTTP:/Razz2/temp使用IIS管理器来创建,1-40,使用 ArcCatalog来管理GIS server,使用桌面应用程序来管理GIS server提供访问 GIS servers功能管理GIS serverSOM

    16、SOCServer Objects,1-41,用 ArcCatalog来访问GIS Server,用来连接到GIS server指定机器名、IP地址或者URL列表有效的 server objectsInternet Server 需要填写帐号ArcCatalog 保存连接信息,1-42,GIS server 属性,管理连接到SOC机器例子主机名超时属性虚拟目录登录属性,1-43,GIS server 主机属性,添加 SOC 机器到SOM需要所有机器都在局域网内 必须有 GIS server ArcObjects 和 SOC 组件,1-44,GIS server 目录,添加和删除SOC用来写临时

    17、文件和图像的目录路径需要:对所有SOC都是可以访问的,1-45,添加Server目录,必须指定Output 目录相应的虚拟目录清除模式清除以 _ags_ 为前缀的文件最大文件期,1-46,常规的 GIS server 属性,Startup timeout 用来初始化Server Object的时间长度Logging 属性,1-47,添加 server objects,Map serverGeocode server,Geocode Server是用来提供GeoCoding的功能的,本次课程不作深入探讨。,1-48,Server object 参数: Map,为map server object

    18、定义 MXD 和输出目录地图文档定位 MXD文档数据框 列表处 MXD文档中有效的数据框输出目录 需求 SOC 帐号需要对MXD有读取的权限,1-49,数据访问设置: Images,如果设置了输出目录 MIME and URL access如果没有指定输出目录MIME-onlyMIME 更有效不需影像清除URL影像被写入和清除,1-50,Server object 池模型,为Server Object定义池模型池化Pooled最小、最大实例非池化Non-Pooled最大实例客户端超时设置Maximum 保持时间Maximum 等待时间,1-51,Server object 进程设置,定义 se

    19、rver objects 隔离层次隔离层次每个实例一个单独的进程所有实例共享一个进程循环多长时间需要对进行进行关闭并重启,1-52,Logging 属性,Log 文件路径可以指定任何路径 Log 文件大小 每次SOM服务启动都会创建新的文件如果达到了指定大小也会创建新的文件Log 层次: None, Error, Warning, Normal, Detailed, Debug需求Server 帐号需要有写入的权限,开发ArcGIS Server 应用的基础,1-54,ArcGIS Server 应用方式,Web 应用ASP.NET/JSPWeb serviceDesktop 应用ArcGIS

    20、 Desktop, EngineGIS server 库扩展模块必须理解Server APIs 和 库之间的关系如何访问 server objects,1-55,ArcGIS Server APIs,根据客户端应用的构建方式,API用来连接到一个GIS ServerCOM 客户端使用 ArcGIS Server APIASP.NET 客户端.NET ADF APIArcGIS Server Web serviceSOAP,1-56,GIS Server 库,包含了访问SOM与Server Objects的对象用来连接、访问和管理server objects通过一个 COM client主要对象

    21、GISServerConnectionServerObjectManagerServerObjectAdmin可以完成与ArcCatalog相同的操作,1-57,从COM客户端连接到一个GIS Server,使用 GISServerConnection coclassConnect: 需要一个主机名或IP地址ServerObjectAdmin ServerObjectManager COM 类型库esriServer.olb,Public Sub ConnectToGISServer() Dim serverConnection as IGISServerConnection serverCo

    22、nnection = New GISServerConnection serverConnection.Connect(“Sparticle”) End Sub,1-58,从一个ASP客户端连接到一个GIS Server,使用 .NET ADF APIServerConnectionHost: 需要一个主机名或IP地址ServerObjectAdminServerObjectManager.NET 对象集合ESRI.ArcGIS.Server.WebControls,Public Sub ConnectToGISServer()Dim serverConnection as ESRI.ArcG

    23、IS.Server.WebControls.ServerConnection serverConnection = new ESRI.ArcGIS.Server.WebControls.ServerConnectionserverConnection.Host = “Sparticle” serverConnection.Connect End Sub,1-59,GIS server 连接和安全性,客户端应用程序必须使用以下两个GIS Server组中的一个帐号属于agsusers组访问 server objects属于agsadmin组管理server objects,1-60,Admini

    24、strator server objects,ServerObjectAdmin: 用来管理 GIS server和 server object 属性添加/删除server objects启动、停止、暂停server objects显示属性和统计信息,Dim serverCn As IGISServerConnection = New GISServerConnectionserverCn.Connect(Sparticle)检查server object是否启动,如果没有则启动它Dim serverAdmin As IServerObjectAdmin = serverCn.ServerOb

    25、jectAdminDim status As IServerObjectConfigurationStatus = serverAdmin.GetConfigurationStatus(RedlandsMap, MapServer)If Not status.Status.esriCSStarted Then serverAdmin.StartConfiguration(RedlandsMap, MapServer)End If,1-61,Managing server objects,ServerObjectManager: 用来访问 server objectsMapServerGeoco

    26、deServer为了访问 server object, 必须创建一个 server context,Public Sub GetServerObjectInfo() 读出每个ServerObject的名称 Dim SOM As IServerObjectManager SOM = serverConnection.ServerObjectManager() Dim enumConfigInfo As IEnumServerObjectConfigurationInfo enumConfigInfo = SOM.GetConfigurationInfos() Dim configInfo As

    27、IServerObjectConfigurationInfo enumConfigInfo.Reset configInfo = enumConfigInfo.Next Do Until configInfo Is Nothing MessageBox.Show(configInfo.Name) configInfo = enumConfigInfo.Next LoopEnd Sub,1-62,Server context,Server context 是一个进程 (ArcSOC.exe)作为访问server object 和ArcObjects的入口需要小心地管理Server Context

    28、的生命周期,Server Context,1-63,访问 server objects,使用IServerObjectManager:CreateServerContextName: server object 名称Type: MapServer 或者 GeocodeServerIServerContextServerObject: 取得 server objectReleaseContext: 释放 context (server object),Dim serverConnection As IGISServerConnection = New GISServerConnectionser

    29、verConnection.Connect (Sparticle)Dim SOM As IServerObjectManager = serverConnection.ServerObjectManagerDim serverContext As IServerContext = SOM.CreateServerContext(RedlandsMap, MapServer)Dim mapServer As IMapServer = serverContext.ServerObject.serverContext.ReleaseContext,(名称,类型),1-64,管理server obje

    30、ct生命周期,普通步骤(COM应用程序)连接创建一个 context访问 server object释放 context, Connect Dim pSC As IGISServerConnection Set pSC = New GISServerConnection pSC.Connect Razz2 Create a context Dim pSOM As IServerObjectManager Set pSOM = pSC.ServerObjectManager Dim pSCX As IServerContext Set pSCX = pSOM.CreateServerContex

    31、t(RedlandsMap, MapServer) Access server object Dim pSO As IServerObject Set pSO = pSCX.ServerObject Dim pMapServer As IMapServer Set pMapServer = pSO Dim i as integer i = pMapServer.QueryFeatureCount _ (pMapServer.DefaultMapName,0,Nothing) MsgBox “Feature count is “ & i release server object pSCX.Re

    32、leaseContext,1-65,MapServer 对象,用来显示和查询绑定在MapServer对象上的地图文档是粗颗粒的 ArcObject在GIS server API中属于Carto 库在 server context中运行,1-66,MapServer 对象的使用,有关绘制与查询的方法ExportMapImage, ExportLayoutIdentifyFindQueryFeatureCount,public sub GetFeatureCount(queryFilter as IQueryFilter) Dim sc As IServerContext = SOM.Create

    33、ServerContext(RedlandsMap, MapServer) Dim mapServer As IMapServer = sc.ServerObject取得MapServer对象 queryFilter.WhereClause = “StreetName = Lugonia” Dim featureCount As Integer 调用QueryFeatureCount方法,取得一个图层满足条件的要素的数目 featureCount = mapServer.QueryFeatureCount(mapServer.DefaultMapName,0,queryFilter) MsgB

    34、ox “Number of streets with the name Lugonia are” & featurecountEnd Sub,1-67,使用远程的 ArcObjects,开发人员访问远程的 ArcObjects当使用GIS Server来开发客户端应用程序的时候SOM 把一个Server Object连接到客户端应用程序应用程序请求对象代理运行在context中的返回对象,DCOM,DCOM,1-68,在server contexts中创建对象,所有的 ArcObjects 必须在Server上创建不要使用 “New”关键字来声名 ArcObjects类型客户端应用只需要安装A

    35、DF (ArcObjects的代理)使用 IServerContext:CreateObject传递的参数是一个ProgID,Dim pSCX As IServerContextSet pSCX = pSOM.CreateServerContext(RedlandsMap, MapServer)在Server Contexts中创建Point对象Dim pt as IPointSet pt = pSCX.CreateObject(esriGeometry.Point)使用该Point对象.pSCX.ReleaseContext,1-69,在Context之间传递对象,一个Context不可以直

    36、接使用在另一个Context中创建的对象必须序列化对象对象必须实现IPersistStream接口 (serializable)例如:把GeoCoded点传递到一个Map Server中使用 SaveObject和LoadObject方法,在 geocode servers context中保存点对象Dim sPoint As String = geocodeContext.SaveObject(geocodedPoint)在maps server context中装载点对象 Dim mapPoint As IPoint = mapContext.LoadObject(sPoint),1-70

    37、,Context 对象的字典,Server context 包含一个对象字典可以用来保存引用到的普通对象Context没有释放前有效使用SetObject和GetObject方法例如:保存WorkSpace对象,Dim wFactory As IWorkspaceFactorySet wFactory = pSCX.CreateObject(“esriDataSourcesGDB.AccessWorkspaceFactory”)Dim workspace As IworkspaceSet workspace = wFactory.OpenFromFile(“c:arcgisRedlandsRe

    38、dlands.mdb”,0)保存对象到字典Set pSCX.SetObject(“RedlandsWS”,workspace)从字典中装载对象Dim redWs As Iworkspace = pSCX.GetObject(“RedlandsWS”),1-71,创建自己的 context对象,可以创建一个空的 server context提供创建对象的能力,而无需引用预定义的server objects对象仍然在服务器上创建非池化的和高隔离的例如:引用一个写在服务器端的自定义的COM对象,Dim pSCX As IServerContextSet pSCX = pSOM.CreateServe

    39、rContext(, )Set pt = pSCX.CreateObject(esriGeometry.Point)Set myObject = pSCX.CreateObject(“myLib.myObject”) 创建自定义的库中的对象myObject.DoSomethingCool(pt) 使用自定义对象.pSCX.ReleaseContext,1-72,理解对象池模型,怎样管理server object的生命周期池化(Pooled)在客户端请求中共享对象支持无状态事务在启动的时候对象就进行了初始化支持大量用户非池化(Non-pooled)每个客户端都创建新的对象支持有状态的事务支持少数

    40、用户性能上没有池化的快,1-73,Client-server 事务: 池化,连接到SOM并请求server object SOM访问context 并返回一个代理客户端通过代理访问Server Object客户端释放server object回到池中,Server Context,1-74,在ASP.NET中使用池化对象,连接创建 context短期使用server object释放 context例如 请求一个image,从应用程序的状态中取得server objectDim serverManager As IServerObjectManager = Application.Get(so

    41、m)Dim mapContext As IServerContext = serverManager.CreateServerContext(Redlands,MapServer)Dim mapServer As IMapServer = mapContext.ServerObject从会话状态中取得地图描述对象Dim stringDesc As String = Session(md)Dim mapDesc As IMapDescription = mapContext.LoadObject(stringDesc)输出一个imageDim imageDesc As IImageDescrip

    42、tionDim imageType As IImageTypeDim imageDisp As IImageDisplayDim mapImage As IImageResult = mapServer.ExportMapImage(mapDesc, imageDesc)程序完成后释放Context对象mapContext.ReleaseContext(),1-75,Client-server 事务: 非池化,连接到 SOM 并请求 server object SOM 访问 context 并返回一个代理客户端通过代理访问 server object客户端释放 server object, 对

    43、象被销毁,Server Context,请注意与池化对象的区别,1-76,在ASP.NET中使用非池化对象,连接创建 context长期使用server object释放 context例如 请求一个 image,从会话状态中取得Server contextDim mapContext As IServerContext = Session(mapContext)Dim mapServer As IMapServer = mapContext.ServerObject Dim mapInfo As IMapServerInfo = mapServer.GetServerInfo(mapServ

    44、er.DefaultMapName)取得缺省的地图描述对象Dim mapDesc As IMapDescription = mapInfo.DefaultMapDescription输出imageDim mapImage As IImageResult = mapServer.ExportMapImage(mapDesc, imageDesc).,会话结束后释放server contextDim sc As ESRI.ArcGIS.Server.IServerContextsc = Session(sc)If Not sc Is Nothing Then sc.ReleaseContext()

    45、End If,1-77,维持非池化对象的状态,在应用程序会话期间保存ServerContextPage_Load事件使用对象Session_End事件,连接到主机Dim serverConnection As IGISServerConnectionserverConnection = New GISServerConnectionserverConnection.Connect(Sparticle)取得SOMDim serverManager As IServerObjectManagerserverManager = serverConnection.ServerObjectManager

    46、取得非池化对象的server contextDim mapContext As IServerContextmapContext = serverManager.CreateServerContext(RedlandsMap, MapServer)在会话状态中保存地图的contextSession(mapContext) = mapContext在会话结束事件释放context(Global.asax)Dim sc As ESRI.ArcGIS.Server.IServerContextsc = Session(sc)If Not sc Is Nothing Then sc.ReleaseCo

    47、ntext()End If,1-78,使用有状态的接口和方法,使用有状态的接口和方法改变底层的 server object的属性访问ArcObjects本身IMapServerObjects例如IEnumLayer:DeleteLayer (改变对象)IGeometryEnvironment:AutoDensifyTolerance (改变环境),1-79,访问细颗粒的 ArcObjects,有状态的事务Server 库提供访问细颗粒的ArcObjects能力IMapServerObjectsMapLayerIGeocodeServerObjects,永久改变MapServer对象的三个途经:修改MXD文档后重启服务器;使用IMapDescription、ApplyMapDescription等方法改变属性;使用底层的细颗粒ArcObjects,用来添加图层、修改图层渲染方式等操作,然后调用RefreshServerObjects方法。,

    展开阅读全文
    提示  道客多多所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:使用arcgis-server开发应用程序.ppt
    链接地址:https://www.docduoduo.com/p-383220.html
    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    道客多多用户QQ群:832276834  微博官方号:道客多多官方   知乎号:道客多多

    Copyright© 2025 道客多多 docduoduo.com 网站版权所有世界地图

    经营许可证编号:粤ICP备2021046453号    营业执照商标

    1.png 2.png 3.png 4.png 5.png 6.png 7.png 8.png 9.png 10.png



    收起
    展开