前天被这个问题弄得糊里糊涂,看这里还有人跟我一样痛苦,所以把代码贴出来。
ESRI. ArcGIS.ADF.Web.DataSources. ArcGISServer.MapResourceLocal gisresource = (ESRI. ArcGIS.ADF.Web.DataSources. ArcGISServer.MapResourceLocal)MapResourceManager1.GetResource(0);
I ServerContext 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 加入地图
IMap ServerObjects mso = (IMap ServerObjects)gisresource.Map Server;
IMap map = mso.get_Map(gisresource.DataFrame);
map.ClearLayers();
map.AddLayer(layer);
#endregion
#region 刷新,有谁了解刷新机制的可以给个说明
gisresource.Refresh ServerObjects();
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);
I ServerContext 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 加入地图
IMap ServerObjects mso = (IMap ServerObjects)gisresource.Map Server;
IMap map = mso.get_Map(gisresource.DataFrame);
map.ClearLayers();
map.AddLayer(layer);
#endregion
#region 刷新,有谁了解刷新机制的可以给个说明
gisresource.Refresh ServerObjects();
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论坛注册用户才能访问网页)