动态创建地图文档MXD并发布地图服务

原文:动态创建地图文档MXD并发布地图服务

 1、动态创建MXD

private bool CreateMxd(string MxdPath, string MxdName)
    {
        IMapDocument pMapDocument = CreateObject("esriCarto.MapDocument") as IMapDocument;
        if (MxdPath.Substring(MxdPath.Length - 1) != @"\")
            MxdPath += @"\";
        pMapDocument.New(MxdPath + MxdName + ".mxd");
        AddLayerToMxd(pMapDocument, MxdName);
        if (pMapDocument == null)
            return false;
        if (pMapDocument.get_IsReadOnly(MxdPath + MxdName + ".mxd") == true)
        {
            return false;
        }
        pMapDocument.Save(true, false);
        return true;
    }  

2、动态创建地图服务

private bool CreateServices(string MapPath, string ServerName)
    {
        //IGISServerConnection pGISServerConnection;
        //pGISServerConnection = new GISServerConnectionClass();
        //pGISServerConnection.Connect(HostName);
        ESRI.ArcGIS.ADF.Identity identity = new ESRI.ArcGIS.ADF.Identity(MapServerUserName, MapserverPass, "");
        ESRI.ArcGIS.ADF.Connection.AGS.AGSServerConnection agsConnection = new ESRI.ArcGIS.ADF.Connection.AGS.AGSServerConnection(HostName, identity);
        agsConnection.Connect();
        IServerObjectAdmin pServerObjectAdmin;
        pServerObjectAdmin = agsConnection.ServerObjectAdmin;
        IServerObjectConfiguration2 configuration = (IServerObjectConfiguration2)pServerObjectAdmin.CreateConfiguration();
        configuration.Name = ServerName;//发布Service的名称,必填
        configuration.TypeName = "MapServer";//发布服务的类型,如:MapServer,GeocodeServer
        IPropertySet props = configuration.Properties;
        props.SetProperty("FilePath", MapPath);//设置MXD的路径
        #region 一下的property并非必须,只要一个filepath就可以发布
        props.SetProperty("OutputDir", "c:\\arcgisserver\\arcgisoutput");//图片的输出目录
        props.SetProperty("VirtualOutPutDir", "http://" + HostName + "/arcgisoutput");//图片输出的虚拟路径
        props.SetProperty("SupportedImageReturnTypes", "URL");//支持的图片类型
        props.SetProperty("MaxImageHeight", "2048");//图片的最大高度
        props.SetProperty("MaxRecordCount", "500");//返回记录的最大条数
        props.SetProperty("MaxBufferCount", "100");//缓冲区分析的最大数目
        props.SetProperty("MaxImageWidth", "2048");//图片的最大宽度
        props.SetProperty("IsCached", "false");//是否切片
        props.SetProperty("CacheOnDemand", "false");//是否主动切片
        props.SetProperty("IgnoreCache", "false");//是否忽略切片
        props.SetProperty("ClientCachingAllowed", "true");//是否允许客户端缓冲
        props.SetProperty("CacheDir", "c:\\arcgisserver\\arcgiscache\\NewService");//切片的输出路径
        props.SetProperty("SOMCacheDir", "c:\\arcgisserver\\arcgiscache");//som的切片输出路径  

        //configuration.Description = "NewService";//Service的描述
        configuration.IsolationLevel = esriServerIsolationLevel.esriServerIsolationHigh;//或者esriServerIsolationLow,esriServerIsolationAny
        configuration.IsPooled = true;//是否池化
        configuration.MaxInstances = 2;//最多的实例数
        configuration.MinInstances = 1;//最少的实例数  

        ////设置刷新
        IPropertySet recycleProp = configuration.RecycleProperties;
        recycleProp.SetProperty("StartTime", "00:00");//刷新开始时间
        recycleProp.SetProperty("Interval", "3600");//刷新间隔  

        ////设置是否开启REST服务
        IPropertySet infoProp = configuration.Info;
        infoProp.SetProperty("WebEnabled", "true");//是否提供REST服务
        infoProp.SetProperty("WebCapabilities", "Map,Query,Data");//提供何种服务  

        //configuration.StartupType = esriStartupType.esriSTAutomatic;//或者esriSTManual
        //configuration.UsageTimeout = 120;//客户端占用一个服务的最长时间
        //configuration.WaitTimeout = 120;//客户端申请一个服务的最长等待时间
        #endregion  

        //添加服务到Server
        pServerObjectAdmin.AddConfiguration(configuration);  

        //启动服务
        pServerObjectAdmin.StartConfiguration(ServerName, "MapServer");
        return true;  

    }  

3. 动态创建影像服务

    private bool CreateServices(string ImagePath, string ServerName)
    {
         ESRI.ArcGIS.ADF.Identity identity = new ESRI.ArcGIS.ADF.Identity(MapServerUserName, MapserverPass, "");
        ESRI.ArcGIS.ADF.Connection.AGS.AGSServerConnection agsConnection = new 

ESRI.ArcGIS.ADF.Connection.AGS.AGSServerConnection(HostName, identity);
        agsConnection.Connect();
        IServerObjectAdmin pServerObjectAdmin;
        pServerObjectAdmin = agsConnection.ServerObjectAdmin;
        IServerObjectConfiguration2 configuration = (IServerObjectConfiguration2)pServerObjectAdmin.CreateConfiguration();
        configuration.Name = ServerName;//发布Service的名称,必填
        configuration.TypeName = "ImageServer";//发布服务的类型,如:MapServer,GeocodeServer
        IPropertySet propertySet = configuration.Properties;
        propertySet.SetProperty("Path", ImagePath);//设置Image的路径
        propertySet.SetProperty("Start", "00:00");
        propertySet.SetProperty("Interval", "24");
        propertySet.SetProperty("SupportedImageReturnTypes", "URL");
	propertySet.SetProperty("OutputDir", "c:\\arcgisserver\\arcgisoutput");//图片的输出目录
	propertySet.SetProperty("VirtualOutPutDir", "http://" + HostName + "/arcgisoutput");//图片输出的虚拟路径
        //propertySet.SetProperty("MaxImageHeight", 4100);//4100
       // propertySet.SetProperty("MaxImageWidth", 15000);//15000
        //propertySet.SetProperty("AllowedCompressions", "None,JPEG,LZ77");//"None,JPEG,LZ77"
        //propertySet.SetProperty("DefaultResamplingMethod", 0);//0
        //propertySet.SetProperty("DefaultCompressionQuality", 75);//75
        //propertySet.SetProperty("MaxRecordCount", 500);//500
        //propertySet.SetProperty("MaxMosaicImageCount", 1);//20
        //propertySet.SetProperty("MaxDownloadImageCount", 20);//20
        //propertySet.SetProperty("AllowedFields","Name,MinPS,MaxPS,LowPS,HighPS,CenterX,CenterY");//"Name,MinPS,MaxPS,LowPS,HighPS,CenterX,CenterY"
        //propertySet.SetProperty("AllowedMosaicMethods","Center,NorthWest,LockRaster,ByAttribute,Nadir,Viewpoint,Seamline");//"Center,NorthWest,LockRaster,ByAttribute,Nadir,Viewpoint,Seamline"
        //propertySet.SetProperty("AllowedItemMetadata", "Full");//"Full"
        //ImageServiceInfo pImageSerivce = new ImageServiceInfo();
        configuration.StartupType = esriStartupType.esriSTAutomatic;
        configuration.MinInstances = 1;
        configuration.MaxInstances = 2;
	configuration.IsPooled = true;
        configuration.Info.SetProperty("WebEnabled", "true");
        configuration.Info.SetProperty("WebCapabilities", "Image,Catalog,Metadata,Download,Pixels");
        pServerObjectAdmin.AddConfiguration(configuration);
        //启动服务
        pServerObjectAdmin.StartConfiguration(ServerName, "ImageServer");
        return true;
    }

3、相关方法

private IServerContext CreateServerContext(string ServerName, string UserName, string PassWord)
    {
        ESRI.ArcGIS.ADF.Identity identity = new ESRI.ArcGIS.ADF.Identity(UserName, PassWord, "");
        ESRI.ArcGIS.ADF.Connection.AGS.AGSServerConnection agsConnection = new ESRI.ArcGIS.ADF.Connection.AGS.AGSServerConnection(ServerName, identity);
        agsConnection.Connect();
        if (agsConnection.IsConnected)
        {
            try
            {
                IServerObjectManager som = agsConnection.ServerObjectManager;
                IServerContext pServerContext = som.CreateServerContext("Geometry", "GeometryServer");
                return pServerContext;
            }
            catch (Exception e)
            {
                return null;
            }
        }
        return null;
    }  

    #region  ServerContext CreateObject函数
    private object CreateObject(string ObjectCLSID)
    {
        IServerContext pServerContext = CreateServerContext(HostName,MapServerUserName,MapserverPass);
        if (pServerContext == null) return null;
        try
        {
            return pServerContext.CreateObject(ObjectCLSID);
        }
        catch
        {
            return null;
        }
        finally
        {
            pServerContext.ReleaseContext();
        }
    }  
时间: 2024-08-01 12:15:35

动态创建地图文档MXD并发布地图服务的相关文章

关于JSP发布地图服务

js <b>关于JSP发布地图服务</b>首先介绍下用于发布地图服务的ArsIMSArsIMS是一个由Presentation层,Business Logic层,data层组成的多层架构,另外,它还有一个用于管理地图网页发布的应用程序集.(1)presentation 层是ArcIMS的客户端,可以获得,浏览和分析地理数据(geographic data)(2)business logic 层的组件用于请求处理和ArcIMS的网页管理(3)data 层包含了所有ArcIMS可用的数

ArcGis Engine10.1发布地图服务到Arcgis Server,出现了错误,如下

问题描述 ArcGis Engine10.1发布地图服务到Arcgis Server,出现了错误,如下 服务成功发布到了Server上,但是无法启动服务,求助大牛... 代码如下: string serverName = "http://localhost:6080/arcgis/admin"; string mxdFilePath = @"D:southGisDataxyz.mxd"; string serviceName = "tiles02223&q

10 1 arcpy-arcgis 10.1,使用arcpy发布地图服务,怎么同时指定启用wms服务呢?

问题描述 arcgis 10.1,使用arcpy发布地图服务,怎么同时指定启用wms服务呢? arcgis 10.1,使用arcpy发布地图服务,怎么同时指定启用wms服务呢? 解决方案 已解决,具体见官方帮助:http://resources.arcgis.com/zh-cn/help/main/10.1/index.html#//00s30000006q000000 解决方案二: 已解决,具体见官方帮助:http://resources.arcgis.com/zh-cn/help/main/

ArcGIS Server发布地图服务后,服务权限 问题

问题描述 各位大侠,本人在WindowsServer2008上安装完ArcGISServer后发布一个ManageServer服务后,服务的权限始终是锁着的,使用URL访问时,也访问不到. 解决方案

cformview-VC/MFC 单文档工程,如何动态创建CFormView并显示出来?

问题描述 VC/MFC 单文档工程,如何动态创建CFormView并显示出来? 大家好.我问这个问题,是经过独立思考的.想通过好心人回答,彻底解决. 我有个基于单文档的程序,我想在菜单响应函数中,动态去创建CFormView并显示.1我添加了继承CFormView的自定义类,并把无框的对话框资源,在CFormView构造函数中传递了IDD_资源进去.2 在菜单响应函数中,我写了如下代码,去创建CFormView:CCreateContext context; context.m_pNewView

如何在MFC对话框程序中动态创建一个单文档。

问题描述 如何在MFC对话框程序中动态创建一个单文档. 就是在MFC对话框程序里单击一个按钮可以出现一个单文档界面,是MFC对话框的框架 解决方案 再做一个单文档的exe,点击按钮,启动它

VS2010 创建单文档MFC,LoadmxFile Arcgis .MXD地图,在单击其他视图后再单击地图所在的视图,鼠标轮滑队地图的缩放就失效了

问题描述 VS2010创建单文档MFC,LoadmxFileArcgis.MXD地图,鼠标的前后轮滑对地图有缩放功能,但是在单击其他视图后再单击地图所在的视图,鼠标轮滑对地图的缩放就失效了这是什么情况? 解决方案

利用PHP和PEAR动态创建和编辑TAR文档

如果你曾为你的UNIX系统下载过widget,那么你肯定遇到过TAR压缩文件.在UNIX系统中磁带归档文件格式常用于打包多个文件,以便于分发kvm. 这种格式的流行不仅由于在所有UNIX系统中都存在该格式的创建工具,还因为在实际应用中,它便于保存归档文件的目录结构.许可信息.用户和组信息等写字楼. PHP中有大量的内建函数和可连接的扩展库,可用于几乎所有文件格式.特别是笔记本维修它可以通过PEAR的Archive_Tar类读取和创建TAR文档.在本文中,我们将向你说明这个类的行为,并演示开发人员

Webmatic 3.1.1发布 在线动态创建网站系统

Webmatic是一个在线动态http://www.aliyun.com/zixun/aggregation/17305.html">创建网站的系统.它的控制面板可以管理网站的全部内容,而无需任何一种编程语言或HTML语言.Webmatic功能包括:创建和管理新闻.FAQ功能,搜索引擎.用户注册页面.区分每个用户的访问级别,轻松管理9个以上的广告,创建一个快速变化的多语言网站,更改网站的图形主题,详细的统计资料,也可以创建你自己产品目录的电子商务网站,等功能. Webmatic 3.1.1