【225】ArcEngine 实现要素添加 & 删除

参考:ArcGIS Engine效率探究——要素的添加和删除、属性的读取和更新

删除要素

                //添加图层,显示在最上面
                axMapControl1.AddShapeFile(@"D:\01-业务工作\08-综合业务平台\综合业务平台数据\船载", "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;
        }

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值