C#写的ArcSDE连接添加Feature的类 源码

 using System;
using System.Collections.Generic;
using System.Text;
using ESRI.ArcGIS.esriSystem;
using ESRI.ArcGIS.Geodatabase;
using ESRI.ArcGIS.Geometry;
using ESRI.ArcGIS.DataSourcesGDB;
namespace AddSDE
{
    public class SDEADD
    {
        //--------------------------------------------建立SDE的连接------------------------------------------------
        private IPropertySet SdeConn(string Server, string Instance, string DataBase, string user, string password)
        {
            try
            {
                IPropertySet pProSet = new PropertySetClass();
                //-----------------------SDE连接属性的设置------------------------
                pProSet.SetProperty("Server", Server);
                pProSet.SetProperty("Instance", Instance);
                pProSet.SetProperty("Database", DataBase);
                pProSet.SetProperty("user", user);
                pProSet.SetProperty("password", password);
                pProSet.SetProperty("version", "SDE.DEFAULT");
                return pProSet;
            }
            catch
            {
                return null;
            }
        }
        //-------------------------向空间库添加要素----------------------------
        public bool Add_Fea(string Server, string Instance, string DataBase, string user, string password,string FeaName,string FieldValue)
        {
            IPropertySet pProSet = new PropertySetClass();
            IWorkspaceFactory pWorkSpFac = new SdeWorkspaceFactoryClass();
            IFeatureWorkspace pFeaWorkSp = null;
            IFeatureClass FeaCls = null;
            IFeatureBuffer FeaBuffer = null;
            IFeatureCursor FeaCursor = null;
            try
            {
                pProSet = SdeConn(Server, Instance, DataBase, user, FeaName);
                if (pProSet != null)
                {
                    pFeaWorkSp = (IFeatureWorkspace)(pWorkSpFac.Open(pProSet, 0));//打开要素空间
                    FeaCls = pFeaWorkSp.OpenFeatureClass(FeaName);//取得要素集
                    FeaCursor = FeaCls.Insert(true);
                    FeaBuffer = FeaCls.CreateFeatureBuffer();

                    IField Fld = new FieldClass();
                    IFields Flds = new FieldsClass();
                    //IPoint pPoint = new PointClass();
                    Flds = FeaCls.Fields;
                    int i;
                    for (i = 1; i < Flds.FieldCount - 1; i++)
                    {
                        Fld = Flds.get_Field(i);
                        if (Fld.Type == esriFieldType.esriFieldTypeGeometry)
                        {
                            //IGeometry pGeo = pPoint;
                            //FeaBuffer.set_Value(i, pPoint);
                            //MessageBox.Show("地理字段!");
                        }
                        else
                        {
                            if (Fld.Type == esriFieldType.esriFieldTypeInteger)
                                FeaBuffer.set_Value(i, 0);
                            else if (Fld.Type == esriFieldType.esriFieldTypeDouble)
                                FeaBuffer.set_Value(i, 0);
                            else if (Fld.Type == esriFieldType.esriFieldTypeSmallInteger)
                                FeaBuffer.set_Value(i, 0);
                            else if (Fld.Type == esriFieldType.esriFieldTypeString)
                                FeaBuffer.set_Value(i, FieldValue);
                            else
                            {
                                return false;
                            }
                               
                           
                        }
                    }
                    FeaCursor.InsertFeature(FeaBuffer);
                    pFeaWorkSp = null;
                    pProSet = null;
                }
                return true;
            }
            catch
            {
                return false;
            }
        }
    }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值