`

远程上传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服务器分别位于不同的机器上。你这能正常运行吗?

相关推荐

    shp上传到SDE

    在GIS(地理信息系统)领域,将“shp上传到SDE”是一个常见的操作,涉及到空间数据的管理和分发。SHP文件是ESRI(Environmental Systems Research Institute)开发的一种空间数据格式,用于存储地理特征,如点、线、...

    SHP上传sde.zip

    在GIS(地理信息系统)领域,"SHP上传sde.zip"这一标题暗示了我们需要将Shapefile(SHP)格式的数据导入到ArcGIS的SDE(Spatial Database Engine)环境中。SDE是Esri公司开发的一种用于存储和管理地理空间数据的高...

    java解析上传的shp文件,包含jar,方法,shp文件

    在Java编程环境中,解析Shapefile(.shp)文件是一项常见的任务,特别是在地理信息系统(GIS)应用中。Shapefile是一种广泛用于存储地理空间数据的开放格式。为了在Java中处理这些文件,我们可以利用开源库GeoTools...

    四川地图shp文件 shp格式,gis添加使用

    压缩包子文件的文件名称列表中有一个“四川地图shp文件 shp格式,gis添加使用.pdf”,这可能是对如何使用这些SHP文件的指南或教程,可能包含数据的详细说明、加载步骤、GIS软件操作指导等内容。对于GIS新手来说,...

    shp文件解析java实现

    首先,为了使用`geotools`解析`shp`文件,我们需要添加其对应的Maven依赖到项目中。`geotools`库提供了`DataStoreFinder`类,通过这个类我们可以找到并打开`shp`文件。接着,我们可以使用`FeatureSource`来获取`...

    通过修改属性表完成shp文件的修改

    ### 通过修改属性表完成shp文件的修改 在地理信息系统(GIS)的应用场景中,shapefile(简称shp)是一种常见的数据格式,用于存储地理空间数据。它由多个文件组成,包括.shp、.shx和.dbf等。其中,.dbf文件存储了与...

    c# + AO 将shp文件导入到GeoDatabase中

    "C# + AO 将SHP文件导入到GeoDatabase中" 该资源主要讲解了如何使用C#和AO(ArcObjects)将SHP文件导入到GeoDatabase中生成一个独立的要素类。 首先,需要了解AO(ArcObjects)是什么?AO是ESRI提供的一组软件开发...

    Arcgis中利用python语言对多个shp文件进行批量添加字段

    Arcgis中利用python语言对shp文件批量添加字段,注释详细,只需更改shp文件所在文件夹路径,以及相关字段名称、类型、长度等设置即可

    vue 导入shp文件展示在地图上

    2. **上传SHP文件**:使用Vue的文件上传组件,例如`vuetify`的`v-file-input`,接收用户选择的SHP文件。确保添加事件监听器来处理文件读取: ```html 选择SHP文件" v-model="selectedFile" @change=...

    shp文件查看工具

    **GIS与SHP文件** 在GIS(地理信息系统)领域,SHP文件是一种广泛使用的矢量数据格式,由ESRI(Environmental Systems Research Institute)开发。它主要用于存储地理空间数据,如点、线、多边形等几何对象,以及与...

    java中读取shp文件数据存入数据库

    shp文件:地理信息系统,也被称作GIS,它主要的扩展类型是SHAPEFILE (.SHP),一个包含了矢量地理空间数据的流行文件格式,描述了几何形态,点,线和多边形,每一个都有他们各自的属性。 shape文件由ESRI开发,一个...

    四川地图shp文件

    【GIS与SHP文件格式详解】 GIS(Geographic Information System,地理信息系统)是一种用于处理、分析、管理和展示地理数据的软件工具。它结合了计算机硬件、软件和地理数据,为决策者提供空间信息支持。在GIS领域...

    c#读写shp文件

    在IT行业中,尤其是在地理信息系统(GIS)开发领域,Shp文件是一种常见的数据存储格式,用于存储几何对象和相关的属性信息。本文将详细讲解如何使用C#进行Shp文件的读写操作,以及介绍相关的关键技术点。 首先,Shp...

    用Java读取.shp文件的工程文件

    在GIS(地理信息系统)领域,`.shp`文件是一种广泛使用的矢量数据格式,用于存储地理空间信息,如点、线、多边形等几何对象。这个Java工程文件旨在提供一个解决方案,帮助开发者读取`.shp`文件,获取其中的几何对象...

    北京市shp文件

    【压缩包子文件的文件名称列表】虽然没有给出具体文件名,但可以推测至少有一个名为"北京市行政区划矢量文件"的SHP文件,这可能是主数据文件,包含北京市的行政区域边界信息。可能还会有相应的.dbf、.shx和其他相关...

    android 使用GIS加载shp文件例子

    总的来说,理解和运用ArcGIS Runtime SDK for Android加载SHP文件不仅有助于提升地图应用的功能性,还能帮助开发者深入理解地理空间数据的处理和展示。在实际开发过程中,根据项目需求,还可以结合其他数据格式(如...

    类:要素导出shp文件

    使用 IWorkspaceFactory 接口创建了输出 shp 文件的工作空间后,接着需要将要素类导出到 shp 文件中。使用 IFeatureClassName 接口来设置要素类的名称,然后使用 IWorkspaceName 接口来设置输出 shp 文件的路径。 ...

    C# 读取 Shp文件 源码

    在ESRI.ArcGIS.Compatibility库中,`ShapefileWorkspaceFactory`类用于打开Shp文件,`FeatureClass`类可以用来获取几何对象和属性数据。然而,这个库可能需要ArcObjects组件,这在某些情况下可能不便于使用或需要...

Global site tag (gtag.js) - Google Analytics