在ARCGIS SERVER 9.2中动态增加图层(附代码)
来源:互联网 发布:程序员电影 编辑:程序博客网 时间:2024/06/05 14:38
前天被这个问题弄得糊里糊涂,看这里还有人跟我一样痛苦,所以把代码贴出来。
ESRI.ArcGIS.ADF.Web.DataSources.ArcGISServer.MapResourceLocal gisresource = (ESRI.ArcGIS.ADF.Web.DataSources.ArcGISServer.MapResourceLocal)MapResourceManager1.GetResource(0);
IServerContext mapContext = gisresource.ServerContextInfo.ServerContext;
#region 创建图层,什么样类型的地图用什么样的WorkspaceFactory
string TableName = "xzqy";
IWorkspaceFactory factory = (IWorkspaceFactory)mapContext.CreateObject("esriDataSourcesGDB.AccessWorkspaceFactory");
IFeatureWorkspace fws = factory.OpenFromFile(@"g:/a.mdb", 0) as IFeatureWorkspace;
IFeatureLayer layer = (IFeatureLayer)mapContext.CreateObject("esriCarto.FeatureLayer");
layer.FeatureClass = fws.OpenFeatureClass(TableName);
layer.Name = TableName;
layer.Visible = true;
#endregion
IGeoFeatureLayer iglayer = (IGeoFeatureLayer)layer;
IFeatureRenderer renderer = iglayer.Renderer;
ISimpleRenderer isr = (ISimpleRenderer)renderer;
IRgbColor irgbc = (IRgbColor)mapContext.CreateObject("esriDisplay.RgbColor");
irgbc.Red = 255;
irgbc.Green = 0;
irgbc.Blue = 100;
ESRI.ArcGIS.Geometry.esriGeometryType featype = layer.FeatureClass.ShapeType;
if (featype == ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPoint)
{
ISimpleMarkerSymbol ifs = (ISimpleMarkerSymbol)isr.Symbol;
ifs.Color = (IColor)irgbc;
}
else if (featype == ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPolyline)
{
ISimpleLineSymbol ifs = (ISimpleLineSymbol)isr.Symbol;
ifs.Color = (IColor)irgbc;
}
else if (featype == ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPolygon)
{
ISimpleFillSymbol ifs = (ISimpleFillSymbol)isr.Symbol;
ifs.Color = (IColor)irgbc;
}
else
{
throw new Exception("No renderer or symbol selected. Shape type undetermined.");
}
#region 加入地图
IMapServerObjects mso = (IMapServerObjects)gisresource.MapServer;
IMap map = mso.get_Map(gisresource.DataFrame);
map.ClearLayers();
map.AddLayer(layer);
#endregion
#region 刷新,有谁了解刷新机制的可以给个说明
gisresource.RefreshServerObjects();
if (Map1.ImageBlendingMode == ImageBlendingMode.WebTier)
{ Map1.Refresh(); }
else if (Map1.ImageBlendingMode == ImageBlendingMode.Browser)
{ Map1.RefreshResource(gisresource.Name); }
Toc1.Refresh();
#endregion
ESRI.ArcGIS.ADF.Web.DataSources.ArcGISServer.MapResourceLocal gisresource = (ESRI.ArcGIS.ADF.Web.DataSources.ArcGISServer.MapResourceLocal)MapResourceManager1.GetResource(0);
IServerContext mapContext = gisresource.ServerContextInfo.ServerContext;
#region 创建图层,什么样类型的地图用什么样的WorkspaceFactory
string TableName = "xzqy";
IWorkspaceFactory factory = (IWorkspaceFactory)mapContext.CreateObject("esriDataSourcesGDB.AccessWorkspaceFactory");
IFeatureWorkspace fws = factory.OpenFromFile(@"g:/a.mdb", 0) as IFeatureWorkspace;
IFeatureLayer layer = (IFeatureLayer)mapContext.CreateObject("esriCarto.FeatureLayer");
layer.FeatureClass = fws.OpenFeatureClass(TableName);
layer.Name = TableName;
layer.Visible = true;
#endregion
IGeoFeatureLayer iglayer = (IGeoFeatureLayer)layer;
IFeatureRenderer renderer = iglayer.Renderer;
ISimpleRenderer isr = (ISimpleRenderer)renderer;
IRgbColor irgbc = (IRgbColor)mapContext.CreateObject("esriDisplay.RgbColor");
irgbc.Red = 255;
irgbc.Green = 0;
irgbc.Blue = 100;
ESRI.ArcGIS.Geometry.esriGeometryType featype = layer.FeatureClass.ShapeType;
if (featype == ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPoint)
{
ISimpleMarkerSymbol ifs = (ISimpleMarkerSymbol)isr.Symbol;
ifs.Color = (IColor)irgbc;
}
else if (featype == ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPolyline)
{
ISimpleLineSymbol ifs = (ISimpleLineSymbol)isr.Symbol;
ifs.Color = (IColor)irgbc;
}
else if (featype == ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPolygon)
{
ISimpleFillSymbol ifs = (ISimpleFillSymbol)isr.Symbol;
ifs.Color = (IColor)irgbc;
}
else
{
throw new Exception("No renderer or symbol selected. Shape type undetermined.");
}
#region 加入地图
IMapServerObjects mso = (IMapServerObjects)gisresource.MapServer;
IMap map = mso.get_Map(gisresource.DataFrame);
map.ClearLayers();
map.AddLayer(layer);
#endregion
#region 刷新,有谁了解刷新机制的可以给个说明
gisresource.RefreshServerObjects();
if (Map1.ImageBlendingMode == ImageBlendingMode.WebTier)
{ Map1.Refresh(); }
else if (Map1.ImageBlendingMode == ImageBlendingMode.Browser)
{ Map1.RefreshResource(gisresource.Name); }
Toc1.Refresh();
#endregion
备注:本文引用自http://bbs.esrichina-bj.cn/ESRI/viewthread.php?tid=7388&highlight=ArcGIS%2BServer%2B9.2(需是ESRI论坛注册用户才能访问网页)
- 在ARCGIS SERVER 9.2中动态增加图层(附代码)
- 在ARCGIS SERVER 9.2中动态增加图层(附代码)
- arcgis server 9.2代码阅读笔记二:在页面上动态加载图层
- arcgis server 9.2代码阅读笔记二:在页面上动态加载图层
- arcgis rest server动态图层管理
- arcgis server 9.2代码阅读笔记一:在图层中增加一个点
- arcgis server 9.2代码阅读笔记一:在图层中增加一个点
- 在ArcGIS Server中创建图例代码
- arcgis 动态图层
- ArcGIS动态图层
- ArcGIS Server动态读取图层样式(Flex版)
- ArcGIS Server动态读取图层样式(Flex版)
- 动态图层在ArcGIS 10中的一些改进
- ArcGIS Server 图层渲染
- Arcgis Server向MXD中添加图层
- 海量图层管理的新希望——ArcGIS Server 动态图层服务
- 海量图层管理的新希望——ArcGIS Server 动态图层服务
- 利用ArcGIS Server动态图层改变地图服务的图层样式
- 在eclipse中javabean中的boolean型变量不要用”is”开头
- 软件开发程序员应具备的素质
- 总结基于ArcGIS Server 9.2 .Net ADF的WebGIS项目部署问题
- Busy! ? !
- 优化网站结构
- 在ARCGIS SERVER 9.2中动态增加图层(附代码)
- 数据结构之:treap 简介(二)
- php中的sprintf的应用
- webservice中返回多个返回值
- 改变MFC对话框背景的方法
- 把握现在,把握未来:2008 Java开发展望
- 在arm linux 上构建的系统
- 软件研发项目反刍式管理
- 在微软我们怎样开发软件:一名准项目经理的视角