已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
ArcGIS Server Object Extensions Step By Step(一)开发环境:MS VS2010ArcGIS Server for .net (10.0)注:软件安装步骤环节请参考网上相关资料1、使用VS2010新建项目,选择ArcGISServer Object ExtensionsRest Template(选择.net Framework3.5才显示)2、建立项目后,会有一个cs文件,可以查看到他是继承自ServicedComponent类和IRequestHandler2、IServerObjectExtension、IObjectConstruct接口。至于ServicedComponent类和IRequestHandler2、IServerObjectExtension、IObjectConstruct接口的具体作用,后面我会再说明。3、打开类我们可以看到它所拥有的方法和成员变量,通常都会使用到的方法:Init()、Shutdown()、CreateRestSchema()、SampleOperHandler(),及成员变量IServerObjectHelper serverObjectHelper。4、在Init方法和Shutdown方法中,我们可以添加初始化对象和释放对象,他们在MapServer的启动和关闭时被调用。因此我们可以在这里添加读取配置文件和保存配置文件的方法。5、CreateRestSchema方法可以被理解为定义操作的地方,我们需要扩展提供的服务在这里进行定义和添加,它会在这个类被构造时,通过reqHandler = new SoeRestImpl(soe_name, CreateRestSchema() as IRESTRequestHandler;的方式加入到REST接口中。以下代码为我为该类添加的一个操作,OAAnalysis是这个操作暴露出的接口名称,new string Geometry,GeometryType, LyrID 为输入参数的名称,new string html,json,image 为输出结果的格式,OAAnalysisOperHandler为这个对外接口的具体实现方法。private RestResource CreateRestSchema()RestResource rootRes = new RestResource(soe_name, false, RootResHandler); RestOperation OAAnalysisOper = new RestOperation(OAAnalysis,new string Geometry,GeometryType, LyrID ,new string html,json,image ,OAAnalysisOperHandler); rootRes.operations.Add(OAAnalysisOper);return rootRes;6、具体实现方法OAAnalysisOperHandler是我将默认创建的方法SampleOperHandler所进行的一个重命名,它是具体实现内容,它的参数是由RestOperation类约定好的。private byte OAAnalysisOperHandler(NameValueCollection boundVariables, JsonObject operationInput, string outputFormat, string requestProperties, out string responseProperties)7、在这个方法里,我们要做3件事。第一,获得输入;第二,执行操作;第三,输出结果。下面的代码片段1是从输入的JsonObject中获取地理要素Geometry(输入的值在REST API中通过键值对形式传递进来,并转化为operationInput的JsonObject对象)。代码片段1long? parm1Value;bool found = operationInput.TryGetAsLong(GeometryType, out parm1Value);if (!found | parm1Value=null)throw new ArgumentNullException(GeometryType);JsonObject parm2Value;found = operationInput.TryGetJsonObject(Geometry, out parm2Value);if (!found | parm2Value=null)throw new ArgumentNullException(Geometry);esriGeometryType type = (esriGeometryType)parm1Value;IGeometry queryGeometry = Conversion.ToGeometry(parm2Value, type);下面的代码片段2是将执行操作的结果以Json格式的字符串输出。这里你还可以输出Image图形或者Html,以及其他互联网支持的格式(视频、压缩文件、文档等)。代码片段2string outputStr = 执行成功!;JsonObject result = new JsonObject();result.AddString(output, outputStr);return Encoding.UTF8.GetBytes(result.ToJson();8、通过实现了自己的OperHandler方法后,这个类就算可以编译了。我们需要使用到VS Tools的命令提示工具注册编译后的类库regasm /codebase。9、通过下面代码将你的这个程序集信息注册到ArcGIS Server中。(使用VS建立控制台程序)using System;using System.Collections.Generic;using System.Linq;using System.Text;using ESRI.ArcGIS.esriSystem;using ESRI.ArcGIS.Server;using ESRI.ArcGIS;using ESRI.ArcGIS.ADF.Connection.AGS;namespace FeatureToKMLRegistration class Program static void Main(string args) / Must run as an user in the agsadmin group on the SOM. ESRI.ArcGIS.ADF.Connection.AGS.AGSServerConnection agsServerConnection = new ESRI.ArcGIS.ADF.Connection.AGS.AGSServerConnection(); agsServerConnection.Host = localhost; agsServerConnection.Connect(); ESRI.ArcGIS.Server.IServerObjectAdmin2 serverObjectAdmin = agsServerConnection.ServerObjectAdmin as ESRI.ArcGIS.Server.IServerObjectAdmin2; / 扩展类名,和程序集同名 string extensionName = FeatureToKML; / 注销时需要输入参数 if (args.Length = 1 & args0 = /unregister) / 检测是否已经注册SOE if (ExtensionRegistered(serverObjectAdmin, extensionName) / 删除SOE. serverObjectAdmin.DeleteExtensionType(MapServer, extensionName); Console.WriteLine(extensionName + successfully unregistered); else Console.WriteLine(extensionName + is not registered with ArcGIS Server); else / 检查SOE是否已经注册. if (!ExtensionRegistered(serverObjectAdmin, extensionName) /获取属性页. ESRI.ArcGIS.Server.IServerObjectExtensionType3 serverObjectExtensionType = serverObjectAdmin.CreateExtensionType()as ESRI.ArcGIS.Server.IServerObjectExtensionType3; / 程序集的CLSID. serverObjectExtensionType.CLSID = FeatureToKML.FeatureToKML; /serverObjectExtensionType.CLSID = C41E8674-F186-4a0c-8FC9-AAB7885EFD00; serverObjectExtensionType.Description = Returns KML of a feature at the input location for the input layer; serverObjectExtensionType.Name = extensionName; / 显示的名称. serverObjectExtensionType.DisplayName = Feature To KML; / Required to enable exposure of SOE with ArcGIS Server REST endpoint. serverObjectExtensionType.Info.SetProperty(SupportsREST, true); serverObjectExtensionType.Info.SetProperty(SupportsMSD, false); / 注册SOE.到Server serverObjectAdmin.AddExtensionType(MapServer, serverObjectExtensionType); Console.WriteLine(extensionName + successfully registered with ArcGIS Server); else Console.WriteLine(extensionName + is already registered with ArcGIS Server); Console.ReadLine(); / Checks whether an extension with the passed-in name is already registered with the passed-in server. static private bool ExtensionRegistered (ESRI.ArcGIS.Server.IServerObjectAdmin2 serverObjectAdmin, string extensionName) / Get the extensions that extend MapServer server objects. ESRI.ArcGIS.Server.IEnumServerObjectExtensionType extensionTypes = serverObjectAdmin.GetExtensionTypes(MapServer); extensionTypes.Reset(); / If an extension with a name matching that passed-in is found, return true. ESRI.ArcGIS.Server.IServerObjectExtensionType extensionType = extensionTypes.Next(); while (extension
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 快乐时光:多彩的校园生活小学主题班会课件
- 城市桥梁建设施工方案
- 2026员工福利调整通知函(4篇范文)
- 科学探索:揭秘科技的秘密小学主题班会课件
- 第8讲《搭配问题》(排列组合基础)暑假衔接学案-人教版三升四数学(2026新教材适配)
- 抵制不良风气营造健康氛围小学主题班会课件
- 对未按时提交项目报告的催办函4篇范文
- 普通螺栓及地脚锚栓施工方案
- 小水电站自动化改造施工方案及技术措施
- 文化艺术魅力无穷小学主题班会课件
- 湖北省武汉市江汉区北湖小学2025年数学三下期末质量检测模拟试题含解析
- (2026年)手术安全核查与风险评估课件
- 2025北京市朝阳区太阳宫乡社区工作者招聘考试真题及答案
- 2026版中央安全生产考核巡查明查暗访应知应会
- 肥西反邪教协会工作制度
- 2026年慢性阻塞性肺疾病基层规范化诊疗指南解读
- TSG08-2026《特种设备使用管理规则》全面解读课件
- 钦州市灵山县三隆镇横岗岭村玻璃用砂岩环评报告
- 探秘脂环族环氧树脂热阳离子聚合反应:原理、影响与应用
- 网络安全漏洞扫描与修复记录表
- 全国农产品质量安全检测技能竞赛理论知识考试试题题库2025年附答案
评论
0/150
提交评论