• 连接SDE数据库代码


    连接SDE数据库代码

    By  3s4d 发表于 2007-6-5 16:39:00 

    0

    什么是SDE数据库?这个问题要详细地讲解将花费大量的时间,但我可以告诉你SDE数据数据库可以是任何关系数据库。ESRI公司为了使空间数据能保存在关系数据库中,并且能很好的查询相关的空间属性而开发的一个中间件,使用SDE能很好的将空间数据保存在关系数据库中。如Orcale SQL Server 等。SDE具体细节的了解请查找相关的资料,这里只介绍怎么连接SDE数据库。SDE数据库的联机分为直接连接和通过SDE连接。当服务器的性能比较好的时候可以采用SDE连接,否则采用直接连接,这样可以减轻服务器的任务。建议采用直接连接,其实,SDE连接方式和直接连接的方式只是一个属性参数设置的问题。跟个人数据库采用属性连接的方式一样,先定义一个属性对象,然后设置属性参数,接着定义一个工作空间并用SdeWorkspaceFactoryClass()实例化它,接着加在加载图层,至于加载图层的代码,与加载个人数据库中图层的方法一样,其实不只加载这两种数据类型,加载其他类型的数据时也是采用相同的方法加载图层,只是工作空间采用不同的实例而已,下边为完整的示例代码:

    public void AddSDELayer(bool ChkSdeLinkModle)

    {

         //定义一个属性

         IPropertySet  Propset = new PropertySetClass();  

         if (ChkSdeLinkModle==true) // 采用SDE连接

         {  

             //设置数据库服务器名

             Propset.SetProperty ("SERVER", "zhpzh");

             //设置SDE的端口,这是安装时指定的,默认安装时"port:5151"

             Propset.SetProperty ("INSTANCE", "port:5151");

             //SDE的用户名

             Propset.SetProperty ("USER", "sa");

             //密码

             Propset.SetProperty ("PASSWORD", "sa");

             //设置数据库的名字,只有SQL Server  Informix 数据库才需要设置

             Propset.SetProperty ("DATABASE", "sde");

             //SDE的版本,在这为默认版本

             Propset.SetProperty ("VERSION", "SDE.DEFAULT");

         }

         else // 直接连接

         {

            //设置数据库服务器名,如果是本机可以用"sde:sqlserver:."

            Propset.SetProperty ("INSTANCE", "sde:sqlserver:zhpzh");

    //需要增加以下代码,否则连接时会弹出Spactial database connection和版本选择对话框。

           Propset.SetProperty ("USER", "sa"); //此处用户名一定是user而不能是username

             //密码

             Propset.SetProperty ("PASSWORD", "sa");

             //设置数据库的名字,只有SQL Server  Informix 数据库才需要设置

             Propset.SetProperty ("DATABASE", "sde");

             //SDE的版本,在这为默认版本

             Propset.SetProperty ("VERSION", "SDE.DEFAULT");


         }
          IWorkSpaceFactory pWkSpFac = new SdeWorkspaceFactory();

                IWorkSpace pWkSpace = pWkSpFac.open(Propset,0);

      
    /////一下为vb代码
        Dim pWorkspaceFactory As IWorkspaceFactory
    Dim pWorkspace As IFeatureWorkspace
    Dim pPropSet As IPropertySet
    Dim pClass As IFeatureClass
    Dim pLayer As IFeatureLayer
    Dim pMxDoc As IMxDocument

     Set pWorkspaceFactory = New SdeWorkspaceFactory
    Set pPropSet = New PropertySet

     With pPropSet '设置ArcSDE连接属性
    .SetProperty "SERVER", Server
    .SetProperty "INSTANCE", Instance
    .SetProperty "USER", User
    .SetProperty "PASSWORD", Password
    .SetProperty "VERSION", version '可选,缺省为SDE.DEFAULT版本
    End With

     Set pWorkspace = pWorkspaceFactory.Open(pPropSet, 0)
    Set pClass = pWorkspace.OpenFeatureClass(featureClass)
    Set pLayer = New FeatureLayer
    Set pLayer.featureClass = pClass
    pLayer.Name = pClass.AliasName

    Set pMxDoc = ThisDocument
    pMxDoc.AddLayer pLayer
    pMxDoc.ActiveView.PartialRefresh esriViewGeography, pLayer, Noting

  • 相关阅读:
    springboot之mybatis别名的设置
    webstorm
    万字长文把 VSCode 打造成 C++ 开发利器
    残差residual VS 误差 error
    参数与非参数的机器学习算法
    阿里云产品梳理
    aws产品整理
    Azure产品整理
    OpenStack产品摘要
    头条、美团、滴滴、阿里、腾讯、百度、华为、京东职级体系及对应薪酬
  • 原文地址:https://www.cnblogs.com/xianyin05/p/1404164.html
Copyright © 2020-2023  润新知