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

xiaoxiao2021-02-28  4

一、根据路径打开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(); } }
转载请注明原文地址: https://www.6miu.com/read-250375.html

最新回复(0)