参考:ArcGIS Engine效率探究——要素的添加和删除、属性的读取和更新
删除要素
//添加图层,显示在最上面 axMapControl1.AddShapeFile(@"D: 1-业务工作 8-综合业务平台综合业务平台数据船载", "cjsj.shp"); //删除 shapefile 中的要素 //获取第一个图层 ILayer pLayer = axMapControl1.get_Layer(0); //以矢量图层的形式获取 IFeatureLayer pFLayer = pLayer as IFeatureLayer; //获取要素集 IFeatureClass pFC = pFLayer.FeatureClass; //查询全部要素 IFeatureCursor pFCursor = pFC.Search(null, false); IFeature pfeature = pFCursor.NextFeature(); //遍历所有要素,并删除 while (pfeature != null) { pfeature.Delete(); pfeature = pFCursor.NextFeature(); }
添加要素,dtzh 为 DataTable 对象
for (int i = 0; i < dtzh.Rows.Count; i++) { //定义一个点,并加入经纬度 IPoint pPoint = new PointClass(); double lon = Double.Parse(dtzh.Rows[i]["经度"].ToString()); double lat = Double.Parse(dtzh.Rows[i]["纬度"].ToString()); pPoint.PutCoords(lon, lat); //将点添加到要素集中,并存储 IFeature pFeature = pFC.CreateFeature(); pFeature.Shape = pPoint; pFeature.Store(); //获取索引值 int i_id = pFC.FindField("Id"); int i_time = pFC.FindField("Time"); int i_cjsj = pFC.FindField("采集时间"); int i_lon = pFC.FindField("经度"); int i_lat = pFC.FindField("纬度"); int i_fo = pFC.FindField("Fo"); int i_fm = pFC.FindField("Fm"); int i_fv = pFC.FindField("Fv"); int i_bv = pFC.FindField("BV"); int i_yield = pFC.FindField("Yield"); //为要素添加属性值 pFeature.set_Value(i_id, i); pFeature.set_Value(i_time, dtzh.Rows[i]["Time"].ToString()); pFeature.set_Value(i_cjsj, dtzh.Rows[i]["采集时间"].ToString()); pFeature.set_Value(i_lon, Double.Parse(dtzh.Rows[i]["经度"].ToString())); pFeature.set_Value(i_lat, Double.Parse(dtzh.Rows[i]["纬度"].ToString())); pFeature.set_Value(i_fo, Int32.Parse(dtzh.Rows[i]["Fo"].ToString())); pFeature.set_Value(i_fm, Int32.Parse(dtzh.Rows[i]["Fm"].ToString())); pFeature.set_Value(i_fv, Int32.Parse(dtzh.Rows[i]["Fv"].ToString())); pFeature.set_Value(i_bv, Int32.Parse(dtzh.Rows[i]["Blank Value"].ToString())); pFeature.set_Value(i_yield, dtzh.Rows[i]["Yield"].ToString()); pFeature.Store(); }
显示地图经纬度坐标
private void axMapControl1_OnMouseMove(object sender, IMapControlEvents2_OnMouseMoveEvent e) { tssl_lonlat.Text = String.Format("经纬度:东经{0:0.000}° 北纬{1:0.000}°", e.mapX, e.mapY); tssl_lonlat.Visible = true; }