ArcObject API 开发(一)

来源:互联网 发布:中国和美国的差距知乎 编辑:程序博客网 时间:2024/05/01 21:44

//用户为a,密码为a,为本机arcgisadmin,arcgisuser组的用户,su机器名

ESRI.ArcGIS.ADF.Identity identity = new ESRI.ArcGIS.ADF.Identity("a", "a", "su");
 ESRI.ArcGIS.ADF.Connection.AGS.AGSServerConnection ags_connection;
ags_connection = new ESRI.ArcGIS.ADF.Connection.AGS.AGSServerConnection("su", identity);
ags_connection.Connect();
IServerObjectManager pSOM = ags_connection.ServerObjectManager;

//OverView为发布的地图名称
IServerContext pServerContext = pSOM.CreateServerContext("OverView", "MapServer");

 IMapServer pMapServer = pServerContext.ServerObject as IMapServer;
 IMapServerObjects pMapServerObjs = pMapServer as IMapServerObjects;
IMap pMap = pMapServerObjs.get_Map(pMapServer.DefaultMapName);

IFeatureLayer pFLayer = pMap.get_Layer(0) as IFeatureLayer;
IFeatureClass pFeatureClass = pFLayer.FeatureClass;
Console.WriteLine(pFeatureClass.FeatureCount(null).ToString());

pServerContext.ReleaseContext();

 

 

 

//下面是获取服务器地图显示到winfrom窗口的Picture空件

 ESRI.ArcGIS.ADF.Identity identity = new ESRI.ArcGIS.ADF.Identity("a", "a", "su");
            ESRI.ArcGIS.ADF.Connection.AGS.AGSServerConnection ags_connection;
            ags_connection = new ESRI.ArcGIS.ADF.Connection.AGS.AGSServerConnection("su", identity);
            ags_connection.Connect();
            IServerObjectManager pSOM = ags_connection.ServerObjectManager;
            IServerContext pServerContext = pSOM.CreateServerContext("OverView", "MapServer");

            IMapServer pMapServer = pServerContext.ServerObject as IMapServer;

            IImageType it = pServerContext.CreateObject("esriCarto.ImageType") as IImageType;
            it.Format = esriImageFormat.esriImageJPG;
            it.ReturnType = esriImageReturnType.esriImageReturnMimeData;

            IImageDisplay idisp = pServerContext.CreateObject("esriCarto.ImageDisplay") as IImageDisplay;
            idisp.Height = 400;
            idisp.Width = 500;
            idisp.DeviceResolution = 150;

            IImageDescription pID = pServerContext.CreateObject("esriCarto.ImageDescription") as IImageDescription;
            pID.Display = idisp;
            pID.Type = it;

            IMapServerInfo pMapServerInfo = pMapServer.GetServerInfo(pMapServer.DefaultMapName);
            IMapDescription pMD = pMapServerInfo.DefaultMapDescription;
            IImageResult pMI = pMapServer.ExportMapImage(pMD, pID);

            // do something with the image

            Image imge = byteArrayToImage(pMI.MimeData);
            pictureBox1.Image = imge;
            pServerContext.ReleaseContext();

 

 

 public Image byteArrayToImage(byte[] byteArrayIn)
        {
            MemoryStream ms = new MemoryStream(byteArrayIn);
            Image returnImage = Image.FromStream(ms);
            return returnImage;
        }

        public byte[] imageToByteArray(System.Drawing.Image imageIn)
        {
            MemoryStream ms = new MemoryStream();
            imageIn.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
            return ms.ToArray();
        }