ArcEngine连接sde并读取数据

ArcEngine 专栏收录该内容
59 篇文章 14 订阅

第一步:创建空数据库

打开SQL Server 2012,新建一个空的数据库,我这里命名为TestGDB
在这里插入图片描述

第二步:建立SDE数据库

打开ArcMap,在ArcToolbox中选择数据管理工具下的地理数据库管理,点击创建企业级地理数据库。
在这里插入图片描述

第三步:配置SDE相关信息

在这里插入图片描述
1、数据库平台:选择SQL_Server。
2、实例:由于我是在自己电脑上连接,所以可以设置成自己的计算机名,如果是通过自己的电脑连接服务器上的 SDE,则需要设置为服务器的IP。
3、数据库:填写刚刚新建的空数据库的名称“TestGDB”。
4、数据库管理员密码:登录SQL Server时的密码。
5、地理数据库管理员密码:我设置成跟SQL Server登陆的密码一样。
6、授权文件:打开ArcGIS注册机,选择Server选项卡,Feature选择arcsdeserver,Version设置为102。(PS:我的是ArcMap10.2,所以是102)点击All按钮,将内容复制到txt文件里,另存为*.ecp文件。选择此*.ecp文件作为授权文件。
在这里插入图片描述
7、点击确定即可。
在这里插入图片描述

第四步:导入数据

选择数据库连接下的添加数据库连接:
在这里插入图片描述
弹出如下界面,我这里的实例名还是设置为计算机名,用户名sa,密码就是登陆SQL Server的密码,数据库选择TestGDB,点击确定即可。
在这里插入图片描述
上述步骤完成后,就可以FileGDB那样导入数据了,这里我导入一个shp文件。
在这里插入图片描述

第五步:利用C#代码读取SDE数据

新建一个WinForm工程,在Program.cs文件中加入如下代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
using ESRI.ArcGIS.Carto;
using ESRI.ArcGIS.Controls;
using ESRI.ArcGIS.DataSourcesFile;
using ESRI.ArcGIS.DataSourcesGDB;
using ESRI.ArcGIS.Display;
using ESRI.ArcGIS.esriSystem;
using ESRI.ArcGIS.Geodatabase;
using ESRI.ArcGIS.Geometry;
using ESRI.ArcGIS.Output;
using ESRI.ArcGIS.SystemUI;

namespace WindowsFormsApplication2
{
    static class Program
    {
        /// <summary>
        /// 应用程序的主入口点。
        /// </summary>
        [STAThread]
        static void Main()
        {
            ESRI.ArcGIS.RuntimeManager.Bind(ESRI.ArcGIS.ProductCode.EngineOrDesktop);
            IAoInitialize m_AoInitialize = new AoInitialize();
            m_AoInitialize.Initialize(esriLicenseProductCode.esriLicenseProductCodeAdvanced);
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }
    }
}

主窗体代码如下;

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using ESRI.ArcGIS.Carto;
using ESRI.ArcGIS.Controls;
using ESRI.ArcGIS.DataSourcesFile;
using ESRI.ArcGIS.DataSourcesGDB;
using ESRI.ArcGIS.Display;
using ESRI.ArcGIS.esriSystem;
using ESRI.ArcGIS.Geodatabase;
using ESRI.ArcGIS.Geometry;
using ESRI.ArcGIS.Output;
using ESRI.ArcGIS.SystemUI;

namespace WindowsFormsApplication2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void btnLoadData_Click(object sender, EventArgs e)
        {
            // 连接参数
            IPropertySet pPropertySet = new PropertySet();
            pPropertySet.SetProperty("SERVER", "DSF-PC");
            pPropertySet.SetProperty("INSTANCE", "sde:sqlserver:DSF-PC");
            pPropertySet.SetProperty("DATABASE", "TestGDB");
            pPropertySet.SetProperty("USER", "sa");
            pPropertySet.SetProperty("PASSWORD", "123456");
            pPropertySet.SetProperty("VERSION", "sde.Default");

            // 工作空间
            IWorkspaceFactory pWorkspaceFactory = new SdeWorkspaceFactory();
            IWorkspace pWorkspace = pWorkspaceFactory.Open(pPropertySet, 0);

            // 获取数据集
            IEnumDataset pEnumDataset = pWorkspace.get_Datasets(esriDatasetType.esriDTFeatureClass);
            pEnumDataset.Reset();
            IDataset pDataset = pEnumDataset.Next();

            // 遍历数据集
            while (pDataset != null)
            {
                IFeatureWorkspace pFeatureWorkspace = pWorkspace as IFeatureWorkspace;
                IFeatureClass pFeatureClass = pFeatureWorkspace.OpenFeatureClass(pDataset.Name);
                IFeatureLayer pFeatureLayer = new FeatureLayer();
                pFeatureLayer.FeatureClass = pFeatureClass;
                pFeatureLayer.Name = pFeatureClass.AliasName;
                axMapControl1.AddLayer(pFeatureLayer, 0);
                pDataset = pEnumDataset.Next();
            }

            // 刷新视图
            axMapControl1.ActiveView.Refresh();
        }
    }
}

结果如下:
在这里插入图片描述

  • 2
    点赞
  • 0
    评论
  • 8
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

©️2022 CSDN 皮肤主题:数字20 设计师:CSDN官方博客 返回首页

打赏作者

HerryDong

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值