惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Attack and Defense Labs
Attack and Defense Labs
The GitHub Blog
The GitHub Blog
C
Check Point Blog
博客园_首页
MongoDB | Blog
MongoDB | Blog
N
Netflix TechBlog - Medium
F
Full Disclosure
Microsoft Security Blog
Microsoft Security Blog
爱范儿
爱范儿
Recent Announcements
Recent Announcements
阮一峰的网络日志
阮一峰的网络日志
G
GRAHAM CLULEY
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
T
Threat Research - Cisco Blogs
C
Cybersecurity and Infrastructure Security Agency CISA
V
Vulnerabilities – Threatpost
K
Kaspersky official blog
博客园 - 司徒正美
S
Schneier on Security
T
The Exploit Database - CXSecurity.com
Project Zero
Project Zero
云风的 BLOG
云风的 BLOG
Cisco Talos Blog
Cisco Talos Blog
Know Your Adversary
Know Your Adversary
雷峰网
雷峰网
V
V2EX - 技术
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Spread Privacy
Spread Privacy
罗磊的独立博客
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
S
Security Affairs
SecWiki News
SecWiki News
Schneier on Security
Schneier on Security
O
OpenAI News
Jina AI
Jina AI
PCI Perspectives
PCI Perspectives
Cyberwarzone
Cyberwarzone
Y
Y Combinator Blog
Apple Machine Learning Research
Apple Machine Learning Research
B
Blog RSS Feed
I
InfoQ
D
Docker
P
Palo Alto Networks Blog
Recorded Future
Recorded Future
M
MIT News - Artificial intelligence
博客园 - Franky
B
Blog
Scott Helme
Scott Helme
博客园 - 叶小钗
D
DataBreaches.Net

博客园 - 漫步人生

c# 使用GetOleDbSchemaTable获取access数据库结构 xp上vs2010+IE8无法调试脚本 iis 上部署asp.net程序出错排查 windows2008的共享 使用sqlite绿色部署问题 在vs中使用正则表达式 - 漫步人生 事件不应该有返回值 ae的com对象在dotnet中的释放问题 adf for dotnet中servercontext的释放 修改Windows中ASPNET账户的密码 ae显示arcserver的地图服务 arcgis 编辑时独占mdb - 漫步人生 js中在不知道属性名时获取属性对象 html文档中的name属性 ie中js a光标位置 adf中UpdatePanel刷新地图 windows局域网内以arcgis server local的方式连接arcserver服务器 c#与 如何调试 C#与C/C++的互操作
adf for dotnet中动态给ArcGis Server服务添加图层
漫步人生 · 2011-07-22 · via 博客园 - 漫步人生

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;

http://www.cnblogs.com/myparamita/archive/2010/01/18/1650512.html这个是java中的实现,思路差不多

需要注意的是:新添加的图层如果不保存到mxd中,重启服务器就消失了,应该有方法把新添加的图层更新到mxd中

一种思路就是像操作一般mxd一样,用服务中的imap更新mxd中的imap,见:http://blog.163.com/dingtao-wgs/blog/static/50260714201011172223482/