`

远程上传shp文件后添加到SDE已有的FeatureClass里

阅读更多

功能:远程web上传shp文件,然后添加到指定的SDE已经存在的FeatureClass里

思路:读取shp里的Feature,编程连接到SDE,打开指定的FeatureClass,然后插入。

缺点:现在只能适用没有注册为版本的FeatureClass,在测试过程中,如果注册为版本,则运行报“Objects in this class cannot be updated outside an edit session ” 这个错误,一直不知道怎么解决,还请高手指点。

效果图

主要实现代码:

文件上传功能实现:

private void UpLoadFiles()
    {
        string filepath = Server.MapPath("./") + "UpLoadFiles";

        HttpFileCollection uploadedFiles = Request.Files;
        for (int i = 0; i < uploadedFiles.Count; i++)
        {
            HttpPostedFile userPostedFile = uploadedFiles[i];
            try
            {
                if (userPostedFile.ContentLength > 0)
                {
                    userPostedFile.SaveAs(filepath + "\\" + System.IO.Path.GetFileName(userPostedFile.FileName));                    
                }
                message.Text = this.ShpFile + "上传成功!";
            }
            catch
            {
                message.Text = this.ShpFile + "上传失败!";
            }
        }
    }

 

读取shp里的Feature功能实现:

public IFeatureClass GetShpFeatureClass()
    {
        IFeatureClass returnFeatureClass = null;
        //取得服务中的基本信息     
        IServerContext soc = GetSoc();

        string filepath = Server.MapPath("./") + "UpLoadFiles";

        IWorkspaceFactory pWorkspaceFactory = (IWorkspaceFactory)soc.CreateObject("esriDataSourcesFile.ShapefileWorkspaceFactory");
        IFeatureWorkspace pFeatWS = pWorkspaceFactory.OpenFromFile(@filepath, 0) as IFeatureWorkspace;
        //IFeatureLayer pLayer = (IFeatureLayer)pSOC.CreateObject("esriCarto.FeatureLayer");
        returnFeatureClass = pFeatWS.OpenFeatureClass("china-hlj.shp");
        //pLayer.Name = "rivers";
        soc.ReleaseContext();
        return returnFeatureClass;
    }

添加Feature到SDE的功能实现:

public void Add_Fea(string FeaName, IFeature insertFeature)
    {
        IServerContext soc = GetSoc();

        IPropertySet propSet = new PropertySetClass();
        propSet.SetProperty("SERVER", this.SdeServer);
        propSet.SetProperty("INSTANCE", this.SdeInstance);
        propSet.SetProperty("USER", this.SdeUser);
        propSet.SetProperty("PASSWORD", this.SdePassword);
        propSet.SetProperty("VERSION", this.SdeVerson);


        IWorkspaceFactory pWorkSpFac = (IWorkspaceFactory)soc.CreateObject("esriDataSourcesGDB.SDEWorkspaceFactory");
        IFeatureWorkspace pFeaWorkSp = null;
        pFeaWorkSp = (IFeatureWorkspace)(pWorkSpFac.Open(propSet, 0));//打开要素空间
        IFeatureClass FeaCls = pFeaWorkSp.OpenFeatureClass(FeaName);//取得要素集
        IFeatureCursor FeaCursor = FeaCls.Insert(true);
        IFeatureBuffer FeaBuffer = FeaCls.CreateFeatureBuffer(); ;


        IField Fld = new FieldClass();
        IFields Flds = insertFeature.Fields;
        for (int i = 0; i < Flds.FieldCount; i++)
        {
            Fld = Flds.get_Field(i);
            int index = FeaBuffer.Fields.FindField(Fld.Name);
            if (index != -1)
            {
                FeaBuffer.set_Value(index, insertFeature.get_Value(i));
            }
        }

        FeaCursor.InsertFeature(FeaBuffer);
        soc.ReleaseContext();
        pFeaWorkSp = null;

    }

 

使用注意事项:在使用时要设置SdeServer、SdeInstance、SdeUser、SdePassword、SdeVerson、FeatureClass等属性。

分享到:
评论
2 楼 junmail 2008-10-15  
应该可以!!!
1 楼 huang_chao521 2008-10-15  
大哥,如果arcgis Server和 web服务器分别位于不同的机器上。你这能正常运行吗?

相关推荐

    Arcgis10.3创建SDE数据库、导入、导出手册

    在ArcMap中,通过右键新建Feature Class,可以选择不同类型的几何特征,如点、线、面等。添加必要的字段,并保存为新的空间表。 四、编辑图层 启用编辑工具栏,对图层进行编辑,包括添加、删除和修改特征。记得在...

    Excel数据文件转换为shape点文件并导入到ArcSde

    本文将详细讲解如何通过C#编程语言和Esri的ArcEngine库来实现Excel数据文件向shape点文件的转换,并进一步将转换后的数据导入到ArcSde中。 首先,我们要了解Excel文件和shape文件的特性。Excel是一种广泛使用的电子...

    图解Arcmap中数据导入到ArcSDE+Oracle

    - 在弹出的“Export Data”对话框中,指定输出格式为“Feature Class to Geodatabase”。 - 选择连接到ArcSDE+Oracle数据库的方式,输入数据库连接信息,包括服务器地址、端口号、用户名和密码等。 - 在下一步中,...

    ArcEngine加载不同数据源

    16 //打开工作空间并添加shp文件 17 pWorkspaceFactory = new ShapefileWorkspaceFactoryClass(); 18 pFeatureWorkspace = (IFeatureWorkspace)pWorkspaceFactory.OpenFromFile(filePath, 0); 19 pFeatureLayer = ...

    数据库连接

    通过上述步骤,我们可以有效地连接到SDE数据库,并定位到特定的`FeatureClass`进行编辑。需要注意的是,实际操作中可能遇到权限问题、连接超时等问题,因此在代码实现时应考虑异常处理,确保程序的健壮性和安全性。...

    ArcEngine 基本操作

    工作空间是 ArcEngine 中用于管理数据的一种方式,主要包括文件地理数据库 (FileGeoDatabase)、形状文件 (SHP) 和空间数据库 (SDE) 的操作。 - **文件地理数据库 (FileGeoDatabase)**:通过 `...

Global site tag (gtag.js) - Google Analytics