adf for dotnet中动态给ArcGis Server服务添加图层
2011-07-22 17:08
471 查看
ArcGisServer发布的地图服务,一般在发布的时候就指定了有哪些图层
如果想在服务发布后再添加一些图层,这时候可以直接修改数据源(如服务对应的mxd文件),添加一个图层,再重启服务就可以了
还有一种方法是,直接对发布的服务添加图层,思路是IMapServerObjects可以获取到IMap对象,可以对这个IMap添加图层
添加完图层执行IMapServerObjects.RefreshServerObjects方法
但是这时候刷新adf的地图却看不到新添加的图层,因为adf还不知道添加了一个图层,需要手动刷新adf的地图信息
MapResouceLocal.MapServer.GetServerInfo方法可以获取服务器上的IMapServerInfo对象,需要将MapDescription更新到adf中
使用ESRI.ArcGIS.ADF.ArcGISServer.Converter将Com对象转换为adf可以用的ESRI.ArcGIS.ADF.ArcGISServer.MapDescription对象
再更新MapResouceLocal.MapServerInfo.DefaultMapDescription属性,这样地图就可以显示新的图层了
但toc控件却没有列出新的图层,那是因为没有更新MapResouceLocal.MapServerInfo.MapLayerInfos,更新一下就可以了
1 IMapServerInfo msi= MapResouceLocal.MapServer.GetServerInfo(MapResouceLocal.MapServer.DefaultMapName);
2 IMapLayerInfos mlis = msi.MapLayerInfos;
3 ESRI.ArcGIS.ADF.ArcGISServer.MapDescription newDes = ESRI.ArcGIS.ADF.ArcGISServer.Converter.ComObjectToValueObject(msi.DefaultMapDescription, ServerContext, typeof(ESRI.ArcGIS.ADF.ArcGISServer.MapDescription)) as ESRI.ArcGIS.ADF.ArcGISServer.MapDescription;
4 ESRI.ArcGIS.ADF.ArcGISServer.MapLayerInfo[] newLayerInfos = ESRI.ArcGIS.ADF.ArcGISServer.Converter.ComObjectToValueObject(msi.MapLayerInfos, ServerContext, typeof(ESRI.ArcGIS.ADF.ArcGISServer.MapLayerInfo[])) as ESRI.ArcGIS.ADF.ArcGISServer.MapLayerInfo[];
5 MapResouceLocal.MapServerInfo.DefaultMapDescription = newDes;
6 MapResouceLocal.MapServerInfo.MapLayerInfos = newLayerInfos;
/article/5202288.html这个是java中的实现,思路差不多
需要注意的是:新添加的图层如果不保存到mxd中,重启服务器就消失了,应该有方法把新添加的图层更新到mxd中
一种思路就是像操作一般mxd一样,用服务中的imap更新mxd中的imap,见:http://blog.163.com/dingtao-wgs/blog/static/50260714201011172223482/
如果想在服务发布后再添加一些图层,这时候可以直接修改数据源(如服务对应的mxd文件),添加一个图层,再重启服务就可以了
还有一种方法是,直接对发布的服务添加图层,思路是IMapServerObjects可以获取到IMap对象,可以对这个IMap添加图层
添加完图层执行IMapServerObjects.RefreshServerObjects方法
但是这时候刷新adf的地图却看不到新添加的图层,因为adf还不知道添加了一个图层,需要手动刷新adf的地图信息
MapResouceLocal.MapServer.GetServerInfo方法可以获取服务器上的IMapServerInfo对象,需要将MapDescription更新到adf中
使用ESRI.ArcGIS.ADF.ArcGISServer.Converter将Com对象转换为adf可以用的ESRI.ArcGIS.ADF.ArcGISServer.MapDescription对象
再更新MapResouceLocal.MapServerInfo.DefaultMapDescription属性,这样地图就可以显示新的图层了
但toc控件却没有列出新的图层,那是因为没有更新MapResouceLocal.MapServerInfo.MapLayerInfos,更新一下就可以了
1 IMapServerInfo msi= MapResouceLocal.MapServer.GetServerInfo(MapResouceLocal.MapServer.DefaultMapName);
2 IMapLayerInfos mlis = msi.MapLayerInfos;
3 ESRI.ArcGIS.ADF.ArcGISServer.MapDescription newDes = ESRI.ArcGIS.ADF.ArcGISServer.Converter.ComObjectToValueObject(msi.DefaultMapDescription, ServerContext, typeof(ESRI.ArcGIS.ADF.ArcGISServer.MapDescription)) as ESRI.ArcGIS.ADF.ArcGISServer.MapDescription;
4 ESRI.ArcGIS.ADF.ArcGISServer.MapLayerInfo[] newLayerInfos = ESRI.ArcGIS.ADF.ArcGISServer.Converter.ComObjectToValueObject(msi.MapLayerInfos, ServerContext, typeof(ESRI.ArcGIS.ADF.ArcGISServer.MapLayerInfo[])) as ESRI.ArcGIS.ADF.ArcGISServer.MapLayerInfo[];
5 MapResouceLocal.MapServerInfo.DefaultMapDescription = newDes;
6 MapResouceLocal.MapServerInfo.MapLayerInfos = newLayerInfos;
/article/5202288.html这个是java中的实现,思路差不多
需要注意的是:新添加的图层如果不保存到mxd中,重启服务器就消失了,应该有方法把新添加的图层更新到mxd中
一种思路就是像操作一般mxd一样,用服务中的imap更新mxd中的imap,见:http://blog.163.com/dingtao-wgs/blog/static/50260714201011172223482/
相关文章推荐
- ArcGIS Server9.2 for .net 添加和删除shp图层操作源码
- 海量图层管理的新希望——ArcGIS Server 动态图层服务
- 海量图层管理的新希望——ArcGIS Server 动态图层服务
- ArcGIS For JavaScript API 添加一个dynamic Service(动态服务)————(一)
- 【转】ArcGIS Server如何动态添加图层并进行查询
- ArcGIS Runtime SDK for iOS开发之地图图层-动态地图服务层
- ArcGIS Server9.2 for .net 添加和删除shp图层操作源码
- 【转】ArcGIS Server 10.1 动态图层—添加栅格
- ArcGIS Server Java -- 动态添加图层
- arcgis-api-for-js-之添加图层到地图及地图服务设置可见图层
- mod_aspdotnet module for Apache HTTP Server 2.x(APACHE集成DONET服务)
- ArcGIS Server 10.2 实战(一)Asp.net MVC与JSON数据妙用实现动态生成要素图层
- 添加条码生成和打印功能到您的ASP.NET Web的条码控件Barcode Professional for ASP.NET
- 未能加载文件或程序集“DeveloperKit10.1/DotNet/ESRI.ArcGIS.ADF.Local.或它的某一个依赖项
- solution to display [PAGETITLE] when using smculloch's skin for dotnetnuke
- ArcGIS API for JavaScript 4.3 与ArcGIS Server联动使用【地图服务】
- asp.net下用Aspose.Words for .NET动态生成word文档中的图片或水印的方法(转)
- .net WinForm动态添加控件和事件
- asp.net 中服务器端控件动态添加和删除
- Asp.net使用repeater控件动态添加、删除一行