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


    参考: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;
            }
    
  • 相关阅读:
    Spring HttpIvoker实现Java的远程调用
    基于struts2框架文件的上传与下载
    12月9号linux学习
    2019.7.7 练习题
    题解 儿童节继续欢乐赛
    Winfroms看看吧客官~
    group by应用
    基于Windows Azure 搭建基于SharePoint 2010 Intranet、Extranet、Internet (1): 安装SharePoint 2010
    基于Windows Azure 搭建基于SharePoint 2010 Intranet、Extranet、Internet (2): 创建并发布SharePoint Intranet站点
    Inside Microsoft SharePoint 2010 简译(1): SharePoint 2010开发者路线图
  • 原文地址:https://www.cnblogs.com/alex-bn-lee/p/5820900.html
Copyright © 2020-2023  润新知