ArcGIS For Silverlight API 开发中利用WebService调用ArcObjects
2010-11-25 15:26
507 查看
ADF之所以强大,除了其本身的类库外,它还能在服务器端调用AO,来完成比如在线编辑或者Geoemtry的处理工作;而ESRI官方的说法,建立在REST服务基础上的程序目前都不具备在线编辑的功能(因为要与服务器端的数据库打交道),但他们把这项功能作为日程,提到了研发计划内。目前而言,要在SilverlightAPI中完成数据编辑工作,他们的劝告是,“如果你不怕把你的双手弄脏,那就去做吧”。
AO本身是COM组件,.NET是利用COMInterop技术与其打交道的,这显然是Silverlight的客户端环境办不到的。这就需要与服务器端进行通信。Silverlight与服务器端通信,最常用的是WebClient类,稍复杂的还有HttpWebRequest类,而传统的ASP.NET WebService与更强大的WCF则为远程调用AO提供了可能。
下面是我做测试的一段代码:
进行程序调试,可以正确显示出点坐标信息。 通过这个功能的成功测试后,就可在Silverlight环境下开发ARCGIS的强大应用功能了。
AO本身是COM组件,.NET是利用COMInterop技术与其打交道的,这显然是Silverlight的客户端环境办不到的。这就需要与服务器端进行通信。Silverlight与服务器端通信,最常用的是WebClient类,稍复杂的还有HttpWebRequest类,而传统的ASP.NET WebService与更强大的WCF则为远程调用AO提供了可能。
下面是我做测试的一段代码:
using System; using System.Text; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Services; using ESRI.ArcGIS.esriSystem; using ESRI.ArcGIS.Carto; using ESRI.ArcGIS.Controls; using ESRI.ArcGIS.ADF; using ESRI.ArcGIS.SystemUI; using ESRI.ArcGIS.Utility.COMSupport; using ESRI.ArcGIS.Geometry; using ESRI.ArcGIS.Display; using ESRI.ArcGIS.DisplayUI; using ESRI.ArcGIS.Geodatabase; using ESRI.ArcGIS.DataSourcesGDB; using ESRI.ArcGIS.DataSourcesFile; [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] // 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。 // [System.Web.Script.Services.ScriptService] public class Service : System.Web.Services.WebService { public Service () { //如果使用设计的组件,请取消注释以下行 //InitializeComponent(); } [WebMethod] public string HelloWorld() { IAoInitialize aoInit = new AoInitializeClass(); aoInit.Initialize(esriLicenseProductCode.esriLicenseProductCodeEngine); StringBuilder sb = new StringBuilder(); IFeatureClass pInFClass; IWorkspaceFactory pWSF; pWSF = new ShapefileWorkspaceFactoryClass(); IFeatureWorkspace pFeatWS; pFeatWS = OpenShapfileWorkspace(@"E:/WorkSpace/map/Shp") as IFeatureWorkspace; pInFClass = pFeatWS.OpenFeatureClass("YY_YGX"); IFeatureCursor pFeatureCursor = pInFClass.Search(null, false); IFeature feature = pFeatureCursor.NextFeature(); while (feature != null) { IGeometryCollection igColl = feature.Shape as IGeometryCollection; IPointCollection pPointCol = igColl.get_Geometry(0) as IPointCollection; sb.Append("Point===" + pPointCol.get_Point(0).X + " | "); feature = pFeatureCursor.NextFeature(); } return sb.ToString(); } /// <summary> /// 打开表空间 /// </summary> /// <param name="Location"></param> /// <returns></returns> public IWorkspace OpenShapfileWorkspace(string Location) { IWorkspace ws = null; IWorkspaceFactory wsf = new ShapefileWorkspaceFactoryClass(); ws = wsf.OpenFromFile(Location, 0); return ws; } }
进行程序调试,可以正确显示出点坐标信息。 通过这个功能的成功测试后,就可在Silverlight环境下开发ARCGIS的强大应用功能了。
相关文章推荐
- ArcGIS API for Silverlight 调用WebService出现跨域访问报错的解决方法
- ArcGIS API for Silverlight 调用WebService出现跨域访问报错的解决方法
- ArcGIS API for Silverlight 调用WebService出现跨域访问报错的解决方法
- ArcGIS API for Silverlight开发入门(9)外传:在程序中调用AO
- [专家讲座] ArcGIS API for Silverlight开发入门(5):任务外包——Tasks(转)
- ArcGIS API for javascript开发笔记(六)——REST详解及如何使用REST API调用GP服务
- arcgis api for silverlight开发系列之一:平台搭建及第一个应该用程序
- ArcGIS API for Silverlight开发入门(1):Getting Started
- ArcGIS API for Silverlight开发入门(2):一个基础地图实例
- ArcGIS API for Silverlight开发入门(0):为什么要用Silverlight API?
- [专家讲座] ArcGIS API for Silverlight开发入门(6):图层类型小结(转)
- ArcGIS API for Silverlight开发入门准备
- ArcGIS API for javascript开发笔记(六)——REST详解及如何使用REST API调用GP服务
- ArcGIS API for Silverlight之Web Mapping开发:根据图层属性查询
- ArcGIS API for Silverlight开发入门(2):一个基础地图实例
- ArcGIS API for Silverlight开发入门(5):任务外包——Tasks
- ArcGIS API for Silverlight开发入门(4):用户与地理信息之间的桥梁--GraphicsLayer
- ArcGIS API for Silverlight开发入门(4):用户与地理信息之间的桥梁--GraphicsLayer
- [专家讲座] ArcGIS API for Silverlight开发入门(7):使用非AGS数据源的图层(转)
- ArcGIS API for Silverlight开发入门(4):用户与地理信息之间的桥梁--GraphicsLayer