alex_bn_lee

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

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

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

删除要素

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//添加图层,显示在最上面
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 对象

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
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();
}

显示地图经纬度坐标

1
2
3
4
5
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;
}

 

posted on   McDelfino  阅读(2346)  评论(0编辑  收藏  举报

编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示