Arcgis adf 导出地图 pdf

    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

你可能感兴趣的:(ASP.NET,C#,ARCGIS)