Arcgis adf 导出地图 pdf

本文介绍了一个用于发布道路施工地图新闻的系统,通过获取施工项目信息并使用ArcGIS平台构建地图,实现地图的更新和导出为PDF格式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值