arcengine发布webservice编辑sde

本文介绍如何使用C#创建ArcGIS工作空间并注册SDE服务,包括许可注册、数据库连接配置和工作空间操作。

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

        private IWorkspace GetWorkspace()
        {
            try
            {
                //注册许可
                ESRI.ArcGIS.RuntimeManager.Bind(ESRI.ArcGIS.ProductCode.Engine);
                ESRI.ArcGIS.esriSystem.IAoInitialize m_AoInit = new ESRI.ArcGIS.esriSystem.AoInitialize();
                if (!CheckOutLicenses(m_AoInit, esriLicenseProductCode.esriLicenseProductCodeArcServer))
                    return null;
                string server = ConfigurationManager.AppSettings["server"].ToString();
                //连接SDE
                IPropertySet propertySet = new PropertySet();
                propertySet.SetProperty("server", server);
                propertySet.SetProperty("instance", "sde:sqlserver:" + server);
                propertySet.SetProperty("database", ConfigurationManager.AppSettings["database"].ToString());
                propertySet.SetProperty("user", ConfigurationManager.AppSettings["user"].ToString());
                propertySet.SetProperty("password", ConfigurationManager.AppSettings["password"].ToString());
                propertySet.SetProperty("version", "SDE.DEFAULT");
                //创建工作工厂
                IWorkspaceFactory workspaceFactory = new SdeWorkspaceFactory();
                //打开工作空间
                IWorkspace workspace = workspaceFactory.Open(propertySet, 0);
                return workspace;
            }
            catch (Exception e)
            {
                WriteErrorLog(e);
                return null;
            }
        }


        /// 注册SDE服务
        /// <summary>
        /// 注册SDE服务
        /// </summary>
        /// <param name="m_AoInitialize">注册类</param>
        /// <param name="productCode">产品许可</param>
        /// <returns></returns>
        private bool CheckOutLicenses(ESRI.ArcGIS.esriSystem.IAoInitialize m_AoInitialize, esriLicenseProductCode productCode)
        {
            try
            {
                esriLicenseStatus licenseStatus;
                //是否产品是可能的
                licenseStatus = m_AoInitialize.IsProductCodeAvailable(productCode);
                if (licenseStatus == esriLicenseStatus.esriLicenseAvailable)
                {
                    //用相应的许可文件进行初始化
                    licenseStatus = m_AoInitialize.Initialize(productCode);
                    if (licenseStatus != esriLicenseStatus.esriLicenseCheckedOut)
                        return false;
                }
                else return false;
            }
            catch(Exception e)
            {
                WriteErrorLog(e);
                return false;
            }
            return true;
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值