private GISServerConnection m_GISConnection;
private IServerObjectManager m_pSOM;
private IServerContext m_pServerContext;
public string PrintRoadConstructionMapNewsRelease(string eventArgument)
{
string sInfo = "";
try
{
//RoadConstructionPrintMap.Data.ConstructionProjectRepository constructionRepository = new ConstructionProjectRepository();
//ConstructionProject constructionProject = constructionRepository.GetConstructionProject(id);
//IEnumerable constructionDates = constructionRepository.GetConstructionProjectDates(id);
//IEnumerable constructionSegments = constructionRepository.GetConstructionProjectRoadSegments(id);
//IEnumerable constructionSignals = constructionRepository.GetConstructionProjectSignals(id);
//if (constructionProject != null)
//{
string mapServerIP = ConfigurationManager.AppSettings["MapServerServerName"];//服务器ip
string mapName = ConfigurationManager.AppSettings["MapName"];//地图服务名称
string mapUser = ConfigurationManager.AppSettings["MapUser"];//用户名称
string mapPWD = ConfigurationManager.AppSettings["MapPWD"];//用户密码
ESRI.ArcGIS.ADF.Identity identity = new ESRI.ArcGIS.ADF.Identity(mapUser, mapPWD, mapServerIP);
ESRI.ArcGIS.ADF.Connection.AGS.AGSServerConnection m_GISConnection =
new ESRI.ArcGIS.ADF.Connection.AGS.AGSServerConnection(mapServerIP, identity);
m_GISConnection.Connect();
m_pSOM = m_GISConnection.ServerObjectManager;
m_pServerContext = m_pSOM.CreateServerContext(mapName, "MapServer");
ESRI.ArcGIS.Carto.IMapServer pMapServer = (ESRI.ArcGIS.Carto.IMapServer)m_pServerContext.ServerObject;
ESRI.ArcGIS.Carto.IMapServerInfo pMapServerInfo = (ESRI.ArcGIS.Carto.IMapServerInfo)pMapServer.GetServerInfo(pMapServer.DefaultMapName);
ESRI.ArcGIS.Carto.IMapDescription pMapDescription = (ESRI.ArcGIS.Carto.IMapDescription)pMapServerInfo.DefaultMapDescription;
string sMapName = pMapDescription.Name;
IMapServerObjects pMapObjects = pMapServer as IMapServerObjects;
//if (updateLayoutLabels(m_pSOM, constructionProject, constructionDates))
//{
// // update the extent of the map
//
IMap pMap = pMapObjects.get_Map(sMapName);
//IPoint pPoint = m_pServerContext.CreateObject("esriGeometry.Point") as IPoint;
//pPoint.X = (double)constructionProject.MapX;
//pPoint.Y = (double)constructionProject.MapY;
IActiveView pActiveView = pMap as IActiveView;
//IEnvelope pEnv = pActiveView.Extent;
//pEnv.CenterAt(pPoint);
IEnvelope pEnv = pActiveView.Extent;
pEnv.XMin = double.Parse(eventArgument.Split(',')[1]);
pEnv.XMax = double.Parse(eventArgument.Split(',')[2]);
pEnv.YMin = double.Parse(eventArgument.Split(',')[3]);
pEnv.YMax = double.Parse(eventArgument.Split(',')[4]);
pActiveView.Extent = pEnv;
// and now export the map
//
sInfo = exportMap(m_pServerContext, esriImageFormat.esriImagePDF);
//}
//}
}
catch (Exception e)
{
sInfo = e.Message;
}
finally
{
m_pServerContext.ReleaseContext();
}
//
// this should have either the URL to the map or an error.
//
return sInfo;
}
private string exportMap(IServerContext pServerContext, esriImageFormat format)
{
//Get Map Server obj
ESRI.ArcGIS.Carto.IMapServer MapServer = (ESRI.ArcGIS.Carto.IMapServer)pServerContext.ServerObject;
ESRI.ArcGIS.Carto.IMapServerInfo MapServerInfo = (ESRI.ArcGIS.Carto.IMapServerInfo)MapServer.GetServerInfo(MapServer.DefaultMapName);
ESRI.ArcGIS.Carto.IMapDescription MD = (ESRI.ArcGIS.Carto.IMapDescription)MapServerInfo.DefaultMapDescription;
// Create Image Type obj
ESRI.ArcGIS.Carto.IImageType ImgType = pServerContext.CreateObject("esriCarto.ImageType") as ESRI.ArcGIS.Carto.IImageType;
// Create Image Display Obj
ESRI.ArcGIS.Carto.IImageDisplay ImgDisplay = pServerContext.CreateObject("esriCarto.ImageDisplay") as ESRI.ArcGIS.Carto.IImageDisplay;
// Create Image Description Obj
ESRI.ArcGIS.Carto.IImageDescription ImgDesc = pServerContext.CreateObject("esriCarto.ImageDescription") as ESRI.ArcGIS.Carto.IImageDescription;
switch (format)
{
case ESRI.ArcGIS.Carto.esriImageFormat.esriImageBMP:
ImgType.Format = format;
ImgDisplay.DeviceResolution = 100;
break;
case ESRI.ArcGIS.Carto.esriImageFormat.esriImageGIF:
ImgType.Format = format;
ImgDisplay.DeviceResolution = 100;
break;
case ESRI.ArcGIS.Carto.esriImageFormat.esriImageJPG:
ImgType.Format = format;
//ImgDisplay.DeviceResolution = 100;
ImgDisplay.DeviceResolution = 400;
break;
case ESRI.ArcGIS.Carto.esriImageFormat.esriImagePDF:
//ImgType.Format = format;
ImgType.Format = ESRI.ArcGIS.Carto.esriImageFormat.esriImagePDF;
ImgDisplay.DeviceResolution = 400;
break;
case ESRI.ArcGIS.Carto.esriImageFormat.esriImagePNG:
ImgType.Format = format;
ImgDisplay.DeviceResolution = 100;
break;
case ESRI.ArcGIS.Carto.esriImageFormat.esriImageTIFF:
ImgType.Format = format;
ImgDisplay.DeviceResolution = 100;
break;
}
ImgType.ReturnType = ESRI.ArcGIS.Carto.esriImageReturnType.esriImageReturnURL;
ImgDesc.Type = ImgType;
ImgDesc.Display = ImgDisplay;
//Get Map Layout
ESRI.ArcGIS.Carto.IMapServerLayout MapLayout = MapServer as ESRI.ArcGIS.Carto.IMapServerLayout;
ESRI.ArcGIS.Carto.IPageDescription PD = MapLayout.DefaultPageDescription;
//Get default map desc
ESRI.ArcGIS.Carto.IMapFrameDescription MapFrameDesc = PD.MapFrames.get_Element(0);
ESRI.ArcGIS.Carto.IMapDescription DefMapDesc = MapFrameDesc.MapDescription;
//Export Layout
ESRI.ArcGIS.Carto.ILayoutImage LayoutImg = MapLayout.ExportLayout(PD, ImgDesc);
return LayoutImg.URL;
}
转载:http://www.gispower.org/article/arcgis/ao/2009/330/093302036315H58056GHKDA1EA50743.html