AE——要素操作(一) 加载已存在shp文件,并进行增删操作

一、根据路径打开shp文件,并编辑

添加引用
- using ESRI.ArcGIS.Carto;
using ESRI.ArcGIS.Geodatabase;
using ESRI.ArcGIS.DataSourcesFile;
using System.IO;

1、根据路径加载shp文件

 private void reSetMap()
        {
            //1、创建工作空间工厂 
            IWorkspaceFactory pWorkspaceFactory = new ShapefileWorkspaceFactory();

            string path = Application.StartupPath + @"\Data\Map\shp\水质基本站.shp";
            string pFolder = Path.GetDirectoryName(path);
            string pFileName = Path.GetFileName(path);

            //2打开shapeFile工作空间
            IWorkspace pWorkspace = pWorkspaceFactory.OpenFromFile(pFolder, 0);  
            IFeatureWorkspace pFeatureWorkspace = pWorkspace as IFeatureWorkspace;

            //3、打开要素类
            IFeatureClass pFeatureClass = pFeatureWorkspace.OpenFeatureClass(pFileName);

            //4、创建要素图层
            IFeatureLayer pFLayer = new FeatureLayerClass();

            //5、关联图层和要素类
            pFLayer.FeatureClass = pFeatureClass;                                       
            pFLayer.Name = pFeatureClass.AliasName;

            //6、删除所有要素
            DeleteAllFeatures(pLayer);//方法调用
            //7、添加点要素
            **其中dt存放的是经纬度数据和要写入的值,本例为字段【STNM】写入值**
            AddNewFeatureFromPoint(DataTable dt,IFeatureClass pFeatureClass);//方法调用


        }

2、删除所有要素 (方法一)

/// <summary>
     /// 删除图层中所有要素
     /// </summary>
     /// <param name="pLayer">要删除的图层</param>
    public void DeleteAllFeatures(IFeatureLayer pLayer)
    {
        //过滤器
        IQueryFilter pQueryFilter = new QueryFilterClass();
        pQueryFilter.WhereClause = "\"FID\">-1";

        ITable pTable = pLayer.FeatureClass as ITable;
        pTable.DeleteSearchedRows(pQueryFilter);
    }

3、根据经纬度添加要素 ,并对[STNM]字段写入值

   /// <summary>
     /// 在【水质基本站】图层中添加要素,图层中已存在
     /// </summary>
     /// <param name="dt">存放经纬度数据的表</param>
     /// <param name="pFeature">要添加要素的图层</param>
    public void AddNewFeatureFromPoint(DataTable dt,IFeatureClass pFeatureClass)
    {
        IPoint pPoint = new PointClass();
        string lat = "";                         //经度 
        string lng = "";                         //纬度 
        string stnm=" ";                         //要写入值的字段
        for (int i = 0; i < dt.Rows.Count; i++)
        {           
            lat = dt.Rows[i]["LGTD"].ToString();
            lng = dt.Rows[i]["LTTD"].ToString();
            stnm = dt.Rows[i]["STNM"].ToString();

            pPoint.X = Convert.ToDouble(lat);
            pPoint.Y = Convert.ToDouble(lng);

            IFeature pFeature = pFeatureClass.CreateFeature();
            pFeature.Shape = pPoint; 
            pFeature.set_Value(pFeature.Fields.FindField("STNM"), stnm);

            pFeature.Store();

        }

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值